헥사고날 아키텍처(Ports & Adapters): 의존성 방향 뒤집기
헥사고날 아키텍처는 비즈니스 로직을 외부 세계로부터 철저히 격리시키는 설계 패턴이야. 포트(Port)와 어댑터(Adapter) 개념을 통해 의존성 방향을 뒤집고, 어떤 DB나 프레임워크가 들어와도 흔들리지 않는 코어를 만드는 방법을 TypeScript 예제로 풀어봤어.

개발과 기술에 대한 이야기를 기록합니다.
헥사고날 아키텍처는 비즈니스 로직을 외부 세계로부터 철저히 격리시키는 설계 패턴이야. 포트(Port)와 어댑터(Adapter) 개념을 통해 의존성 방향을 뒤집고, 어떤 DB나 프레임워크가 들어와도 흔들리지 않는 코어를 만드는 방법을 TypeScript 예제로 풀어봤어.

Uncle Bob의 Clean Architecture를 프론트엔드에 그대로 적용하면 과도한 복잡도가 생긴다. 실전에서 통하는 수준으로 다듬은 프론트엔드 레이어 분리 전략을 정리했다.

은행 계좌의 잔액이 왜 0원인지 궁금해본 적 있나요? 단순히 현재 상태(잔액)만 저장하는 대신, 입금, 출금 같은 모든 '사건(Event)'을 저장하여 시스템을 구축하는 이벤트 소싱 패턴. CQRS와 함께 사용되는 이유와 구현 시 마주하는 현실적인 문제들을 깊이 있게 다룹니다.

서비스 초기, MongoDB를 쓰다가 RDB로 마이그레이션 해야 할 순간이 왔습니다. 하지만 비즈니스 로직과 DB 코드가 뒤엉켜 있어 지옥을 경험했죠. 헥사고날 아키텍처(포트와 어댑터)를 도입하여 비즈니스 로직을 순수하게 지켜내고, 기술 부채로부터 탈출한 경험을 공유합니다.

현대 소프트웨어 아키텍처 가이드. DDD, 콘웨이의 법칙, SAGA 패턴, CQRS, 모듈러 모놀리스, 그리고 실제 마이그레이션 전략(Strangler Fig)까지.

서비스를 MSA로 쪼갰더니 트랜잭션 관리가 지옥이 되었습니다. 주문은 성공했는데 결제는 실패하고, 재고는 이미 차감되었다면? 모놀리식의 ACID가 그리워지는 순간, 분산 환경에서 데이터 일관성을 지키는 Two-Phase Commit(2PC), Saga 패턴(Choreography, Orchestration)을 구체적인 예제와 함께 다뤄봤습니다.
