본문 바로가기

분류 전체보기103

[Micro Service] Micro Service 설계(이벤트 스토밍 워크숍 진행, 도메인 이벤트 찾기, 외부 시스템 도출, 커맨드 도출, 핫스폿 도출) 1장 ◆ 이벤트 스토밍을 통한 마이크로서비스 도출 ▶ 마이크로서비스 간의 의존성을 줄이기 위해서는 아키텍처 영역에서 언급했다시피 서비스 간 비동기 메시지 기반 도메인 이벤트를 활용하는 것이 중요한데 이러한 도메인 이벤트를 통한 의존 관계를 식별하는 방법이 쉽지 않은데 이를 위해 알베르토 브란돌리니(Alberto Brandolini)라는 이탈리아 출신의 DDD 컨설턴트가 DDD 설계를 가속화할 수 있는 이벤트 스토밍(event storming)이라는 설계 기법을 고안해 냈는데 이벤트 스토밍은 이벤트 중심으로 이해 관계자들이 모여 브레인 스토밍하는 워크숍을 의미 ▶ 이벤트 스토밍은 모든 이해 관계자가 모여 서로가 가지고 있는 각 관점을 논의하며 그 차이점을 이해하고 공유할 수 있다는 점에서 기존 방법론에서 장기간.. 2023. 4. 28.
[Micro Service] Micro Service 설계(컨텍스트 맵핑, 공유 커널, 소비자와 공급장, 준수자, 충돌 방지 계층, 공개 호스트 서비스, 컨텍스트 맵) 2장 ◆ DDD에서의 설계 ▶ 유비쿼터스 언어와 도메인 모델, 바운디드 컨텍스트 ● 유비쿼터스 언어는 특정 도메인의 업무 개념을 표현하는 언어 ● 결제 도메인에서의 고객과 배송 도메인에서 고객은 의미가 다른데 결제 도메인에서는 구매하기 위해 상품을 결제하는 역할에서의 고객 즉 결제를 위한 신용카드 정보나 계좌 정보를 가진 결제자를 의미하고 배송 도메인에서는 구매한 상품을 배송받는 역할 즉 상품을 받을 주소와 우편번호, 전화번호를 소유한 수취자를 의미하기 때문에 이러한 개념을 고객으로 포괄적으로 표현해서는 안됨 ● 명확하게 결제 서비스에서는 결제자의 개념으로 배송 서비스에서는 수취자의 개념으로 모델링해야 하는데 그래야 결제 서비스나 배송 서비스를 담당하는 팀의 의사소통이 명확해짐 ● 도메인에 특화된 개념이 유비.. 2023. 4. 27.
[Micro Service] Micro Service 설계 1장 ◆ Micro Service 설계 ▶ 소프트웨어 개발의 역사에서 모듈화의 중요성은 예전이나 지금이나 한결같은데 모듈화의 근본적 가치는 각 모듈을 기능적으로 응집성 높게 만들고(high cohesion) 기능이 다른 타 모듈 간의 의존도를 낮추는 것(low coupling) ▶ 마이크로서비스 설계에서의 가장 중요한 관심사도 어떻게 기능적으로 응집성있는 마이크로서비스를 도출하고 타 서비스 간의 의존도는 낮출 것인가 하는 것이고 마이크로서비스의 내부 구조를 구성하는 각 요소들도 역할별로 모듈화 돼야 하는데 역할 별로 모듈화 된다는 말은 각 역할이 분명한 응집성 있고 서로 의존성이 낮은 모듈들이 모여 마이크로서비스를 이루고 이 마이크로서비스는 다른 마이크로서비스와 의존성이 낮아야 한다는 의미 ▶ 다른 방식으로 .. 2023. 4. 26.
[MicroService] Micro Service Application Architecture(아키텍처 정의, Micro Service 도출, MDD, DDD, 빌드 및 배포) 3장 ◆ 기민한 설계 / 개발 프로세스 ▶ 아키텍처 정의와 Micro Service 도출 ● 아키텍처 정의 ⊙ Micro Service 외부/내부 아키텍처를 정의하는 공정 ⊙ 로버트 c. 마틴은 기술 세부사항은 늦게 결정할 수 있어야 한다고 언급한 바 있는데 이것은 기존의 워터폴한 개발 프로세스에서 강조했던 아키텍처 등의 기술 결정사항이 모두 완벽하게 정의된 후 개발을 해야 한다는 말과 배치됨 ⊙ Micro Service를 순수 비즈니스 로직이 존재하는 내부 영역과 기술 영역을 표현하는 외부 영역으로 구분해서 개발하면 외부 영역은 언제든지 교체될 수 있으므로 애플리케이션의 핵심인 내부 영역에 집중하고 외부 영역 즉 아키텍처의 결정사항들은 천천히 결정해도 된다는 의미로 그만큼 애플리케이션은 소프트 즉 유연해야 .. 2023. 4. 26.