728x90
반응형

ddd 7

CQRS(Command Query Responsibility Segregation)

개요CQRS(Command Query Responsibility Segregation)는 애플리케이션의 읽기와 쓰기 작업을 명확하게 분리하여 설계하는 아키텍처 패턴입니다. 복잡한 비즈니스 로직을 처리하고 확장성을 높이기 위한 목적으로 사용되며, 마이크로서비스 아키텍처나 이벤트 소싱과 자주 결합됩니다.1. 개념 및 정의CQRS는 Command(명령)와 Query(조회)의 책임을 분리함으로써, 애플리케이션에서 상태 변경과 상태 조회를 각각 독립적으로 처리할 수 있도록 합니다.Command: 데이터를 변경하는 작업 (예: 생성, 수정, 삭제)Query: 데이터를 조회하는 작업 (예: 목록 보기, 상세 보기)이 분리는 시스템 복잡도를 관리하고, 성능과 보안 요구 사항에 따라 각 책임을 독립적으로 최적화할 수 있..

Topic 2025.05.31

GraphQL Federation

개요GraphQL Federation은 여러 개의 독립된 GraphQL 마이크로서비스(Schema)를 하나의 통합된 GraphQL API로 조합해주는 아키텍처 방식입니다. 각 서비스가 자신의 스키마와 리졸버를 유지하면서, 통합 게이트웨이를 통해 마치 하나의 API처럼 외부에 제공할 수 있어 확장성과 유지보수성이 크게 향상됩니다. 이는 특히 대규모 분산 시스템에서 API 관리를 단순화하는 데 매우 효과적입니다.1. 개념 및 정의 항목 설명 비고 정의여러 GraphQL 마이크로서비스를 하나의 API로 통합하는 방안Apollo Federation이 대표 사례목적모놀리식 GraphQL 서버의 복잡성 해소 및 마이크로서비스 확장성 확보경량 API 게이트웨이 구현 가능필요성도메인별 독립 서비스 유지 + 클라이언..

Topic 2025.05.29

Event Modeling

개요Event Modeling은 소프트웨어 시스템을 **시간의 흐름에 따른 이벤트 중심(Event-Centric)**으로 설계하고 문서화하는 방법론입니다. 이는 복잡한 시스템의 비즈니스 로직, 사용자 인터랙션, 데이터 흐름을 이벤트 시퀀스 기반의 타임라인 모델로 시각화하여 팀 전체의 이해를 높이고 일관된 구현을 가능하게 합니다. 특히 이벤트 소싱, CQRS, 마이크로서비스 기반의 시스템 설계와 잘 맞물립니다.1. 개념 및 정의Event Modeling은 Adam Dymitruk이 제안한 설계 기법으로, 시스템을 상태(State)가 아닌 이벤트(Event) 단위로 기술합니다. 핵심은 사용자 행동, 시스템 반응, 데이터 저장/조회 등을 시간 순으로 정렬하여 흐름 기반으로 시스템을 설계하는 것입니다. 이는 ‘..

Topic 2025.05.08

Event Storming

개요Event Storming은 소프트웨어 시스템의 복잡한 도메인을 이해하고 설계하기 위한 협업 중심의 시각적 모델링 기법입니다. 주로 도메인 주도 설계(DDD: Domain-Driven Design)와 연계되어 사용되며, 비즈니스 전문가와 개발자 간의 효과적인 커뮤니케이션을 통해 도메인 이벤트 중심으로 시스템의 흐름을 설계할 수 있도록 돕습니다.1. 개념 및 정의Event Storming은 Alberto Brandolini가 제안한 방법으로, **도메인 이벤트(Domain Event)**를 중심으로 시스템의 프로세스를 탐색하고 시각화하는 워크숍 기반 모델링 기법입니다.목적: 복잡한 비즈니스 프로세스를 명확하게 이해하고, 도메인 설계로 연결필요성: 개발자와 비즈니스 이해관계자의 지식 공유와 통합된 도메인..

Topic 2025.05.05

DDD 협업 툴(Event Storming, Context Mapping)

개요도메인 주도 설계(DDD, Domain-Driven Design)는 소프트웨어를 도메인 전문가의 지식과 언어를 기반으로 설계하고 개발하는 방법론입니다. 이때 핵심이 되는 협업 도구가 Event Storming과 Context Mapping입니다. 이 글에서는 두 도구의 개념, 적용 방식, 실전 협업 방법을 구체적으로 소개합니다.1. 개념 및 정의 구분 설명 Event Storming도메인 이벤트를 중심으로 시스템 동작을 시각화하며 설계하는 워크숍 기법Context Mapping서로 다른 Bounded Context 간의 관계와 책임을 정의하는 전략적 설계 도구두 기법은 DDD의 핵심 사상인 "언어의 공유와 경계의 명확화"를 실현하는 도구로서 활용됩니다.2. 특징구분Event StormingConte..

Topic 2025.04.09

모듈러 모노리스(Modular Monolith)

개요모듈러 모노리스(Modular Monolith)는 전통적인 모놀리식(monolithic) 아키텍처의 단일 배포 방식은 유지하되, 내부 구조를 모듈화하여 명확한 경계와 책임을 갖는 컴포넌트로 구성한 현대적 소프트웨어 아키텍처입니다. 이는 마이크로서비스 이전 단계 또는 대안으로 주목받으며, 코드 품질, 유지보수성, 도메인 분리 등의 장점을 제공하면서도 복잡한 분산 시스템의 단점은 회피할 수 있습니다. 본 글에서는 모듈러 모노리스의 개념, 구성 원칙, 장단점, 실무 적용 전략을 소개합니다.1. 개념 및 정의모듈러 모노리스란 단일 애플리케이션 내에 **도메인 기반으로 독립된 모듈(또는 패키지, 컴포넌트)**을 설계하고, 이를 명확한 경계 및 인터페이스로 연결하여 마치 마이크로서비스처럼 동작하지만, 단일 배포..

Topic 2025.03.27

DDD(Domain Driven Design)

개요DDD(Domain Driven Design, 도메인 주도 설계)는 복잡한 비즈니스 도메인을 효과적으로 반영하고 유지보수 가능한 소프트웨어를 개발하기 위한 모델 중심의 설계 철학입니다. Eric Evans가 제안한 이 개념은 도메인 전문가와 개발자 간의 협업을 중심에 두고, 공통된 언어(Ubiquitous Language), 도메인 모델링, 계층화 설계 등을 통해 소프트웨어와 비즈니스 간의 일관성을 확보합니다. 이 글에서는 DDD의 개념, 핵심 원칙, 구성 요소, 적용 전략 등을 체계적으로 설명합니다.1. 개념 및 정의DDD는 비즈니스 도메인 지식을 바탕으로 소프트웨어를 설계하고 구현하는 접근 방식입니다. 소프트웨어의 구조와 용어가 비즈니스의 본질을 반영하도록 하여, 개발자와 도메인 전문가가 동일한 ..

Topic 2025.03.26
728x90
반응형