전체 글

전체 글

    Facade Pattern과 API Composition

    Facade Pattern과 API Composition

    지금 진행 중인 프로젝트는 코어 모듈에 도메인별로 기능을 구현하고, 사용자 애플리케이션과 어드민에서 코어 모듈을 import 해 오픈된 인터페이스를 통해 도메인의 기능을 사용하게끔 구성했습니다. 이를 Onion Architecture라고 하는데, Onion Architecture는 다음 포스팅에서 다뤄보겠습니다. 이번 포스팅에서는 어드민을 개발하면서 동료 개발자분과 어드민 백엔드를 어떻게 구성할지 논의하면서 Facade Pattern과 API Composition의 차이가 궁금해져 알아보았습니다. Facade Pattern Facade Pattern은 디자인 패턴 중 하나로 복잡한 서브 시스템 혹은 서비스들을 간략한 인터페이스로 감싸서 클라이언트에 제공해줍니다. Facade Pattern에서 클라이언트는..

    [Jenkins] 젠킨스 파이프라인 when의 tag 표현식, 왜 안되는거니?

    [Jenkins] 젠킨스 파이프라인 when의 tag 표현식, 왜 안되는거니?

    저는 지금 팀 내부에서 작은 프로젝트를 진행하고 있습니다. 개발은 어느 정도 완료되었고, 팀 알파 서버에 배포하는 단계가 남았죠. 이 프로젝트로 사내 오픈소스와 기술 발표를 노리고 있기 때문에 지속적으로 발전시켜나갈 예정입니다. 그러기 위해 필수적인 CI/CD(지속적인 통합, 지속적인 제공) 환경을 구축하게 되었는데, 만만치 않았습니다. 사소한 문제는 공식 가이드나 레퍼런스로 해결이 가능했지만, 결정적인 부분에서 관련 가이드나 레퍼런스가 부실해 결국 우회하게 되었습니다. 제가 이 포스팅을 작성하는 이유는 저와 같은 문제가 발생해 이런저런 시도를 해보았는데도 해결하지 못한 분께 해결책은 아니지만 우회 방법을 공유하고자 함에 있습니다. Jenkins 파이프라인 설계 우선 이 프로젝트는 팀 전용 파일럿 Git..

    [찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 인증인가 처리

    [찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 인증인가 처리

    이번 포스팅에서는 데이터 수집기(Springboot Application)와 Elasticsearch에 인증인가 기능을 더해 우리 프로젝트를 SaaS(Software As A Service)처럼 만들어보도록 하겠습니다. 인증인가 기능 추가로 얻고자 하는 것 올바른 API SecretKey를 가진 요청만 수집이 가능합니다. API SecretKey를 통해 수집 요청 서비스를 구분하고, FileWriter에서 수집 데이터 쓰기 작업 시 디렉터리를 분리합니다. 앞서 분리된 디렉터리별로 Elasticsearch로 전송되는 데이터의 인덱스를 구분합니다. Kibana에서 서비스별 사용자 계정을 생성하고, 권한이 있는 서비스의 인덱스만을 조회할 수 있도록 합니다. 데이터 수집기 인증 인가 데이터 수집기의 인증인가는 ..

    [도메인 주도 설계] 2부 : 모델 주도 설계의 기본 요소

    [도메인 주도 설계] 2부 : 모델 주도 설계의 기본 요소

    04장 도메인의 격리 계층형 아키텍처 (Layered Architecture) 보조적인 성격의 코드를 비즈니스 객체 안에 직접 작성할 경우 도메인에 관련된 코드가 상당한 양의 도메인과 관련이 없는 다른 코드를 통해 널리 확산될 경우 도메인에 관련된 코드를 확인하고 추론하기가 굉장히 힘들어진다. 그리고 응집력 있고, 모델 주도적인 객체를 구현하는 것이 비현실적인 이야기가 돼버리고 자동화 테스트가 어려워진다. 매우 복잡한 작업을 처리하는 소프트웨어를 만들 경우 관심사의 분리(separation of concern)가 필요하다. 계층화의 핵심 원칙 한 계층의 모든 요소는 오직 같은 계층에 존재하는 다른 요소나 계층상 아래에 위치한 요소에만 의존 위로 거슬러 올라가는 통신은 반드시 간접적인 메커니즘을 거쳐야 함..

    [도메인 주도 설계] 1부 : 동작하는 도메인 모델 만들기

    [도메인 주도 설계] 1부 : 동작하는 도메인 모델 만들기

    도메인 모델링은 가능한 한 사실적인 모델을 만드는 문제가 아니다. 도메인 모델링은 어떤 목적에 따라 제약에 구애받지 않고 현실을 표현하는 영화 제작에 더 가깝다. 영화 제작자가 자신의 경험 가운데 몇 가지 측면을 골라 특유의 방식으로 이야기하고 논지를 펼쳐 나가듯이 도메인 모델러 또한 모델의 유용성에 따라 특정 모델을 선택한다. 도메인 주도 설계에서의 모델의 유용성 모델과 핵심 설계는 서로 영향을 주며 구체화된다. 모델과 구현 간의 긴밀한 연결은 모델을 의미 있게 만들고, 모델의 분석이 최종 산출물인 동작하는 프로그램에 적용되게끔 보장합니다. 모델은 모든 팀 구성원이 사용하는 언어의 중추이다. 모델과 구현이 서로 연결되어 있으므로 개발자와 도메인 전문가가 의사소통하는 데 별도의 번역 절차가 필요하지 않습..

    [찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 데이터 수집해서 시각화 하기 (2)

    [찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 데이터 수집해서 시각화 하기 (2)

    이전 포스팅에서 ELK Stack을 어찌저찌 원하는대로 돌아가게끔 구성했습니다. 이번 포스팅에서는 구성 후 받은 피드백과 오류 파티를 해결한 내용을 정리해보고자 합니다. X-Pack 문제 어느 순간부터 Logstash 를 기동할 때 아래와 같은 오류가 발생하고 데이터 Shipping이 불가능했습니다. [logstash.licensechecker.licensereader] Attempted to resurrect connection to dead ES instance, but got an error {:url=>”http://elasticsearch:9200/“, :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableE..

반응형