본문 바로가기

(5)
[DDD] 2. 아키텍처 개요 2.1 네 개의 영역 표현, 응용, 도메인, 인프라스트럭처는 아키텍처를 설계할 떄 출현하는 전형적인 네 가지 영역이다. 표현 영역 사용자의 요청을 받아 응용 영역에 전달하고, 응용 내역의 처리 결과를 다시 사용자에게 보여주는 역할(대표적으로 스프링 MVC 프레임워크가 여기에 해당) 응용 영역 시스템이 사용자에게 제공해야 할 기능을 구현한다.(주문 등록, 주문 취소, 상품 상세 조회 등) 기능을 구현하기 위해 도메인 영역의 도메인 모델을 사용한다. 응용 서비스는 로직을 직접 수행하기 보다는 도메인 모델에 로직 수행을 위임한다. public class CancelOrderService { @Transactional public void cancelOrder(String orderId) { Order orde..
[DDD] 1. 도메인 모델 시작하기 1.1 도메인이란? 도메인은 소프트웨어로 해결하고자 하는 문제 영역에 해당한다. 한 도메인은 다시 하위 도메인으로 나눌 수 있다. 한 하위 도메인은 다른 하위 도메인과 연동하여 완전한 기능을 제공한다 예를들어 고객이 물건을 구매하면 주문, 결제 배송, 혜택 하위 도메인의 기능이 엮이게 된다. 도메인마다 고정 된 하위 도메인이 존재하는 것은 아니다. 하위 도메인을 어떻게 구성할지 여부는 상황에 따라 달라진다. 1.2 도메인 전문가와 개발자 간 지식 공유 개발자는 요구사항을 분석하고 설계하고 코드를 작성하며 테스트하고 배포한다. 요구사항을 올바르게 이해하려면 개발자와 전문가가 직접 대화해야 한다. 개발자와 전문가 사이에 내용을 전파하는 전달자가 많으면 많을수록 정보가 왜곡되고 손실이 발생하게 되며, 개발자는..
[ElasticSearch] 클러스터 구축하기 안녕하세요! 키크니 개발자 입니다. 🦒 elasticsearch.yml 파일을 통해 설정할 수 있는 항목들 elasticsearch.yml: 엘라스틱서치를 구성하기 위해 기본이 되는 환경 설정 파일이다. Cluster 영역 cluster.name: my-application 클러스터 영역은 클러스터 전체에 적용 되는 설정이다. 클러스터의 이름을 설정하는 항목이다. 클러스터를 구성할 때는 클러스터를 구성할 노드들이 모두 동일한 클러스터 이름을 사용해야 한다. 이름을 변경하려면 클러스터 내의 모든 노드를 재시작해야 하기 때문에 처음부터 신중하게 설정해야 한다. Node 영역 node.name: node-1 노드 영역은 해당 노드에만 적용 되는 설정이다. 노드의 이름은 클러스터 내에서 유일해야 한다. 노드 이..
[ElasticSearch] ElasticSearch 기본 개념 (클러스터, 노드, 인덱스, 샤드, 세그먼트, 매핑) 안녕하세요! 키크니 개발자 입니다. 🦒 오늘은 간단하게 클러스터, 노드, 인덱스, 샤드, 세그먼트, 매핑에 대해서 알아보았습니다. 클러스터란? 여러 대의 컴퓨터 혹은 구성 요소들을 논리적으로 결합하여 전체를 하나의 컴퓨터 혹은 하나의 구성 요소처럼 사용할 수 있게 해주는 기술이다. 클러스터 특징 여러 개의 엘라스티서치 프로세스들은 논리적으로 결합하여 하나의 엘라스틱서치 프로세스처럼 사용할 수 있게 해준다. 이 때 클러스터를 구성하는 하나 하나의 엘라스틱서치 프로세스를 노드라고 부른다. 여러 개의 노드로 클러스터를 구성하고 이 노드들이 하나의 엘라스틱서치처럼 동작하기 때문에 어느 노드에 API를 요청해도 동일한 응답과 동작을 보장 받을 수 있다. 단일 노드로 클러스터를 구성하게 되면 노드에 장애가 발생하면..
[ElasticSearch] ElasticSearch 개념 및 특징 안녕하세요! 키크니 개발자 입니다. 🦒 기존에 사용하던 엘라스틱 버전 5를 7로 올려야하는 상황이어서 엘라스틱서치관련 책을 읽고 정리해보았습니다. 😁 ElasticSearch 이란? 루씬 기반의 오픈소스 검색 엔진이며 JSON 기반의 문서를 저장하고 검색할 수 있으며 문서들의 데이터를 기반으로 분석 작업도 할 수 있다. ElasticSearch 특징 준실시간 검색 엔진 : 실시간이라고 생각할 만큼 색인된 데이터가 매우 빠르게 검색됨 준실시간성 : 문서를 입력하자마자 검색하는 것은 불가능하더라도 1초의 시간이 흐른 후에는 검색할 수 있다. JSON 문서 를 입력하면 해당 문서는 우선 메모리에 저장된다. 그리고 1초 후에 샤드(Shard)라는 엘라스틱서치 데이터 저장 공간에 저장되고 이 이후에는 쿼리를 통해..