PE Notes · SW
아키텍처 패턴
레이어드와 이벤트 드리븐을 동기·결합으로 가르고, CQRS·헥사고날을 데이터 흐름과 포트로 비교한 뒤 파이프라인·DDD 연계 선택 기준을 정리합니다.
화면·업무·저장을 한 줄로 쌓으면 처음은 읽기 쉽습니다. 이벤트가 늘고 팀이 나뉘면 그 줄이 병목이 됩니다. 아키텍처 패턴은 의존이 어느 방향으로 흐르는지를 미리 고르는 일입니다. 품질 속성 평가가 “좋은가”를 재면, 패턴은 그 품질을 어디에 심을지를 정합니다.
레이어드와 이벤트 드리븐
는 표현 → 업무 → 저장처럼 책임을 층으로 나눕니다. 상위가 하위만 보고, CRUD와 트랜잭션이 단순합니다. 한계는 아래가 바뀌면 위가 흔들리고, 동기 한 줄이 전부가 되기 쉽다는 점입니다.
은 생산자가 버스에 사실을 올리고 소비자가 각자 반응합니다. 은 상태를 사건 로그로 재현하고, 와 자주 붙습니다. 결합이 느슨하고 확장이 갈라지며 장애가 한쪽에 머무릅니다. 대가는 순서·중복·추적입니다.
| 비교축 | 레이어드 | 이벤트 드리븐 |
|---|---|---|
| 흐름 | 동기·수직 | 비동기·수평 |
| 결합 | 층 사이 직접 호출 | 브로커 경유 |
| 적합 | CRUD·단순 앱 | MSA·실시간 |
| 대가 | 하위 변경 전파 | 복잡도·일관성 |
CQRS와 헥사고날
CQRS는 쓰기 모델과 읽기 모델을 나눕니다. 쓰기는 정규화·정확성, 읽기는 비정규화·질의 성능입니다. 스케일을 축마다 따로 키우고, 이벤트 소싱이 자연스럽게 붙습니다. 작은 CRUD에 쓰면 동기화 비용만 남습니다.
(포트와 어댑터)은 업무 코어를 가운데 두고, 안쪽 포트는 REST·CLI·큐, 바깥 포트는 DB·외부 API입니다. 어댑터만 갈아 끼우면 UI와 저장이 바뀝니다. 시험은 코어를 메모리 어댑터로 돌립니다. 공통점은 관심사 분리이고, 같이 쓸 수 있습니다. 초점은 CQRS가 데이터 흐름, 헥사고날이 의존 방향입니다. 가 클래스에 쓰면, 헥사고날은 시스템에 씁니다.
기타 패턴과 DDD
파이프라인·필터는 데이터를 단계 체인으로 보냅니다. Unix 파이프와 ETL이 그 모양입니다. 브로커는 분산 컴포넌트를 메시지로 조율합니다. 스페이스 기반은 공유 튜플 공간으로 극한 확장을 노립니다.
선택 가이드는 규모입니다. 단순하면 레이어드, 면 헥사고날과 CQRS·EDA 조합, 데이터 파이프면 필터 체인입니다. 의 애그리게이트와 도메인 이벤트는 CQRS·EDA로 이어지고, 가 서비스 경계를 줍니다. 코어 도메인은 헥사고날 한가운데의 순수 모델입니다.
답안은 레이어드 vs EDA 표, CQRS와 헥사고날의 축 차이, DDD 경계가 서비스 경계임을 한 장에 씁니다.