도메인주도설계

    [MSA] 헥사고날 아키텍처(Hexagonal Architecture)

    [MSA] 헥사고날 아키텍처(Hexagonal Architecture)

    들어가며 이번 글에서는 이벤트 스토밍 결과물을 실제로 구현할 수 있도록 표현하는 헥사고날 아키텍처에 대해 알아보도록 한다. 이벤트 스토밍이 생소하다면 다음의 글을 먼저 참고하기 바란다. 2022.02.15 - [MSA 설계 & 도메인 주도 설계] - [MSA] 이벤트 스토밍(Event storming) [MSA] 이벤트 스토밍(Event storming) 들어가며 필자가 이벤트 스토밍을 진행할 때 헷갈리는 부분은 2가지였다. 첫 번째는 다양한 포스트잇 색상의 의미였고, 두 번째는 활동의 진행 순서였다. 이번 글에서는 이 두 가지에 대한 요 devlos.tistory.com 헥사고날 아키텍처란? 헥사고날 아키텍처는 소프트웨어 설계에 사용되는 아키텍처 패턴 중 하나다. 포트와 어댑터를 통해 여러 소프트웨어 ..

    [DDD] 도메인 계층의 Structure

    [DDD] 도메인 계층의 Structure

    들어가며 이번 글에서 설명하는 내용은 이희창님의 프로젝트 구조를 기반으로 도메인 계층의 structure를 구성할 때 최소한으로 필요하다고 생각되는 부분만 간추려낸 것이다. 도메인 계층의 structure은 크게 Entity 부, Service 부, DTO 부로 나뉜다. (Entity 부, Service 부, DTO 부는 이해를 돕고자 필자가 부여한 용어이므로 큰 의미를 두지 않았으면 한다.) 도메인 계층 structure에서 각 부분이 하는 역할은 다음과 같다. 1. Entity 부 Entity 부에서는 도메인 객체의 속성과 매서드를 정의한다. 속성과 메서드의 예는 아래와 같다. 속성 name age state 매서드 enableState() disableState() Getter Setter Enti..

    [DDD] 인터페이스 계층과 응용 계층의 구현

    들어가며 DDD를 적용하여 프로젝트를 구성하고 개발하게 되면 대부분의 업무상 중요한 코드들을 도메인 계층에 작성하게 된다. 인터페이스와 계층과 응용 계층은 만들어 놓은 도메인 계층을 기반으로 구현된다. 인터페이스 계층이야 클라이언트와 통신을 하기 위해 필요하다고 이해할 수 있는데, 응용 계층은 반드시 필요한 것인가?라는 생각이 들었다. 이번 글에서는 DDD START! 책에서 나오는 인터페이스 계층과 응용 계층의 역할을 좀 더 알아보도록 한다. 만약 도메인 주도 설계의 계층에 대해서 생소하다면 이전 글을 참고하기 바란다. [DDD] 도메인 주도 설계의 계층 분리에 관하여 들어가며 MSA와 함께 사용되는 도메인 주도 설계 방식에 대해서 정리하려고 한다. 도메인 주도 설계에 대해 이희창 님의 강의에서 처음 ..

    [DDD] 애그리거트란?

    [DDD] 애그리거트란?

    들어가며 도메인 주도 설계 전문가분들과 대화하거나, MSA 관련 강의를 수강할 때 반드시 언급되는 "애그리거트"에 대해서 명확히 이해하려고 여러 가지 자료들을 찾아보았다. 그러다 최범균 님께서 집필하신 "DDD Start!" 라는 책에 애그리거트 개념이 잘 설명되어 있어서 관련 내용을 공유하고자 한다. (절판된 책이라 구하느라 엄청 힘들었다..) 애그리거트(Aggregate) 애그리거트의 뜻 데이터 변경의 단위로 다루는 연관 객체의 묶음 - 에릭 에반스 | 도메인 주도 설계 연관된 엔티티와 값 객체들의 묶음 - SK C&C | 도메인 주도 설계로 시작하는 마이크로 서비스 개발 애그리거트는 모델이나 비즈니스 도메인을 이해하기 위한 거시적인 방법으로 사용된다. 아래의 다이어그램은 DDD Start! 2장에 ..

    [DDD] 도메인 주도 설계의 계층 분리에 관하여

    [DDD] 도메인 주도 설계의 계층 분리에 관하여

    들어가며 MSA와 함께 사용되는 도메인 주도 설계 방식에 대해서 정리하려고 한다. 도메인 주도 설계에 대해 이희창 님의 강의에서 처음 접하게 되었다. MSA의 서비스 분리 콘셉트와, 도메인 주도 설계에서 모델을 중심으로 분리하는 콘셉트가 유지보수나 추후 기능 개선 등 궁합이 잘 맞아떨어지는 것 같다는 정도로 생각하고 있었다. 하지만 시간이 지남에 따라 이 설계기법은 MSA와는 독립적으로 질 좋은 코드를 개발하기 위한 노하우의 결정체라는 것을 느낄 수 있었다. 이번 글에서는 에릭 에반스의 도메인주도 설계(72p)의 업무용 소프트웨어 계층에 대해서 살펴보도록 한다. 도메인 주도 설계의 계층 분리 복잡한 프로그램을 여러 개의 계층으로 나눠라. 응집력 있고 오직 아래에 위치한 계층에만 의존하는 각 계층에서 설계..

    [MSA] MSA 기반 프로젝트 입문 후기 (Devlos feat. @Todo)

    도메인 주도 설계(Domain-driven Design): 설계 단계에서 비즈니스 도메인을 분석하여 도출된 도메인 모델의 디자인에 중점을 두어 소프트웨어를 개발하는 방식이다. 설계 산출물과 최종 개발 산출물(소스코드)의 차이를 없앰으로써 유지보수가 용이하고 향후 확장성을 얻어내는 설계 방법이다. MSA(Micro Service Architecture): 하나의 거대한 시스템(Monolithic)을 작은 단위의 서비스로 잘게 나누어 설계하는 방식 (잘게 나누었을 때의 이점과 고통은 다른 글에서 더 설명하도록 한다.) 들어가며 나는 부끄럽게도 ‘내가 개발한 소프트웨어가 잘 동작할까?’에 대한 고민을 몇 년째 하고 있었다. 나의 주 업무는 개발자들의 생산성을 향상하는 모듈 개발이나, 인터페이스 규격화 작업등이..