전체 글

전체 글

    Onion Architecture란?

    Onion Architecture란?

    Onion Architecture 란? Onion Architecture는 제어의 역전 원칙을 기반으로 도메인 및 서비스 계층을 애플리케이션의 중심에 배치하고, 인프라스트럭쳐를 외부에 배치하는 아키텍처입니다. Onion Architecture는 기존의 3 계층 아키텍쳐와 같이 데이터 계층에 의존하지 않고 실제 도메인 모델에 의존합니다. 기존의 3계층 아키텍처는 모든 계층이 Data Access 레이어 위에 존재해 해당 레이어에 변경사항이 발생하면 모든 레이어에 변경이 발생하는 단점이 있습니다. 반면, Onion Architecture에서는 데이터베이스 유형에 따라 달라지지 않는 저수준의 객체 모델만이 존재하며, 데이터베이스의 실제 유형과 데이터 저장 방법은 Infrastructure 계층에서 결정됩니다...

    [찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 트러블슈팅 (1) - Elasticsearch

    [찍어먹기] Spring Boot 부터 ELK Stack 까지 :: 트러블슈팅 (1) - Elasticsearch

    앞선 포스팅에서는 로컬 develop 환경이어서 아무런 문제없이 Elasticsearch를 구성할 수 있었는데요. 다수 서버의 프로덕션 환경에서는 많은 문제가 발생해 꽤나 고생했습니다. 이번 포스팅에서는 Elasticsearch를 프로덕션 환경에 구성하면서 겪었던 문제와 해결 과정을 소개하려고 합니다. Elastic Stack 구성 우선 제게 허락된 서버는 2대였습니다. 그런데 Elasticsearch는 최소 3개의 노드가 필요하기 때문에 좀 더 성능이 나은 서버에 두 개의 노드를 구성했습니다. External Network 🟩 외부망에서 접근 가능한 루트입니다. L4 스위치를 경유해 두 개의 서버에 로드 밸런싱이 되도록 했습니다. Internal Network 🟥 내부망에서만 접근 가능한 루트입니다. ..

    [Elasticsearch] 마스터노드 선출 실패 오류

    [Elasticsearch] 마스터노드 선출 실패 오류

    Elasticsearch 클러스터는 하나 이상의 노드들로 이루어집니다. 이 중 하나의 노드는 인덱스의 메타 데이터, 샤드의 위치와 같은 클러스터 상태 정보를 관리하는 마스터 노드의 역할을 수행합니다. 만약 클러스터에 마스터 노드가 존재하지 않는다면 클러스터는 작동이 정지됩니다. Elasticsearch를 Docker 환경에서 구동하는 경우, 공식 가이드에서 아래와 같이 클러스터의 마스터 노드 후보를 지정하도록 가이드하고있습니다. cluster.initial_master_nodes=노드명,노드명,노드명 아래는 Docker 환경에서 클러스터의 마스터 노드가 선출되지 못한 오류와 그 해결 과정입니다. 오류 내용 master_not_discovered_exception http://엘라스틱서치노드:9200/ 접..

    [Elasticsearch] X-Pack Security 활성화 시 오류

    [Elasticsearch] X-Pack Security 활성화 시 오류

    Elasticsearch 에서 보안 관련 기능을 사용하려면 X Pack Security를 활성화 해야합니다. docker-compose.yml 에서는 xpack.security.enabled=true 로 X Pack Security를 활성화 할 수 있는데요, 활성화 후 컨테이너를 여러 차례 재기동하게 되면 아래와 같은 오류가 발생하고 Elasticsearch 노드가 종료되는 현상이 발생합니다. ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. bootstrap check failure [1] of [1]: Transpor..

    [Elasticsearch] vm.max_map_count 변경

    [Elasticsearch] vm.max_map_count 변경

    Elasticsearch를 프로덕션 환경에서 구성시 vm.max_map_count 값을 조정해주어야 합니다. 이번 포스팅에서는 vm.max_map_count 값을 조정하지 않았을 때 발생하는 오류와 처리 방법을 소개해보도록 하겠습니다. 포스팅 환경 CentOS 7 Elasticsearch 7.16.2 오류 ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] vm.max_map_count 값을 조정하지 않고 Elasticsearch를 구동하면 위와 같은 오류가 발생합니다. 해결 방법 ​오류 메시지대로 vm.max_map_co..

    Facade Pattern과 API Composition

    Facade Pattern과 API Composition

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

반응형