Front-End에 DDD 적용하기
Front-End에 DDD 적용하기
킵그로우 Front-End 팀에서 DDD 패턴에 대한 공유와 논의하는 시간을 가졌다. DDD는 Strategic Design(전략적 설계)와 Tactical Design(전술적 설계)로 나눌 수 있다. Strategic Design은 프로젝트와 Context 안에서 동일한 언어를 사용하기 위해 유비쿼터스 언어를 정의하고 Bounded Context와 Context Map을 도출하는 것이다. Tactical Design는 Bounded Context와 Domain을 기반으로 Aggregate 패턴, Entity, Value object 등을 구성하는 것이다.
Tactical Design 아이템 중에 Aggregate, Service를 중점적으로 다뤄봤다. Aggregate는 Entity와 Value Object를 기반으로 하며 하나 이상의 Entity 클러스터이다. Service는 일부 로직을 구현하는 객체로 Domain Service와 Application Service로 나뉜다.
DDD Architecture에서는 Layered, Hexagonal, CQRS, Event Sourcing 등의 아키텍처가 있다. 적용되는 아키텍처 중 Layered와 Hexagonal에 대해 설명하였다. Layered Architecture는 N- 계층 시스템을 지원하며 일반적으로 웹이나 엔터프라이즈, 테스트크톱 애플리케이션에 사용된다. Hexagonal Architecture는 다양한 이질적 클라이언트가 동등한 지위에서 시스템과 상호작용하게 하는 아키텍처로 의존하는 Service 계층이 존재하고 외부와 통신을 추상화하여 비지니스 로직에 외부 로직 주입을 막는 역할을 한다.
Hexagonal Architecture를 적용한 Front-End 폴더 구조가 FECONF 2022에서 제시되었다.