Architect (4) 썸네일형 리스트형 Hexagonal Architecture (헥사고날 아키텍쳐) 란? MSA 에 있어서 디커플링된 시스템 아키텍쳐도 중요하지만, MSA 역시 작은 어플리케이션의 집합이기 때문에, 어플리케이션 레벨에서의 설계 역시 매우 중요하다. 인프라스트럭쳐 레벨의 큰 관점에서 관심사를 응집시키고, 의존성을 줄였어도 어플리케이션 레벨에서 의존성이 거미줄 처럼 얽혀있고 확장성이 없다면 MSA가 가지는 이점을 결코 활용할 수 없을 것 이다. 전통적인 아키텍쳐인 레이어드 아키텍쳐를 먼저 살펴보자. 1. 레이어드(Layered) 아키텍쳐 레이어드 아키텍쳐를 가지는 어플리케이션은 일반적으로 Presentation Layer, Business Layer, Persistence Layer 세개의 계층을 가진다. 레이어드 아키텍쳐는 각 레이어의 응집도를 높히고 레이어 간 결합도를 낮추기 위하여 다음과 .. [DDD] 도메인 주도 설계의 요소 저번 포스팅에서는 Aggregate에 대해서 알아보았습니다. 지난 포스팅까지의 내용을 요약해보면, 도메인 주도 설계는 Bounded Context 그리고 Aggregate 를 통하여 논리적으로 명확히 구분되는 경계를 통하여 설계를 캡슐화하고 비대해지는 코드에 따른 변경의 파급효과를 줄인다. 라고 할 수 있겠습니다. 이번 포스팅에서는 Aggregate 는 어떤 요소들로 구성되는지 살펴보겠습니다. Entity 엔티티 엔티티란 식별성으로 정의되는 객체를 말합니다. 책에서는 엔티티를 1. 생명주기 동안 형태와 내용이 바뀌어도 연속성은 유지되는것. 2. 한 객체가 속성보다는 식별성으로 구분되는 것 이라고 정의합니다. 즉 Entity 는 ID(식별자) 가 존재하고, 생명주기동안 속성이 아무리 바뀌어도 식별자가 같으.. [DDD] Aggregate 어그리거트 Aggregate 란 비즈니스에서 밀접한 연관성이 있는 객체들의 군집입니다. DDD 의 모든 구성요소는 명확한 경계와 응집을 통하여 scalable 하고 loose coupled 된 설계를 하는데에 목적이 있습니다. 제가 이해한 Aggregate 는 비즈니스의 경계인 Bounded Context 안에 속하는 또 다른 경계. 바운디드 컨텍스트보다 조금 더 구체적인 개념이 되는 실제 객체의 경계라고 볼 수 있겠습니다. 바운디드 컨텍스트가 어플리케이션 기능단위의 경계라면, 어그리거트는 도메인 생명주기 단위의 더 작은 경계라고 생각됩니다. 에릭 에반스의 도메인 주도 설계에서는 Aggregate Pattern 을 제시하며 몇가지 룰을 따르면 어그리거트가 가지는 강력한 장점을 활용할 수 있다고 합니다. 해당 포스팅.. [DDD] BoundedContext 바운디드 컨텍스트 비즈니스에서는 여러 용어들이 존재합니다. 하지만 이러한 용어들은 용어는 같으나 다른 역할을 하는 경우, 그리고 같은 역할이지만 다른 용어로 불리는 경우가 있습니다. 예시를 들어봅시다. 판매 기능에서의 상품과 재고관리 기능에서의 상품이 있습니다. 이 두가지는 같을까요? 아마 판매 기능에서의 상품은 실재하는 물건이라기 보다는 어떤 무형적인 판매할 수 있는 카테고리일 것 입니다. 반면에, 재고관리 기능에서는 실제로 존재하는 물건이 몇개인지가 중요한 것이 됩니다. 이렇게, 같은 것으로 보임에도 비즈니스의 특성에 따라 완전히 다른것이 됩니다. 간단하게 말하면, 이런 것들을 명확히하여 설계에 반영하기 위하여 비즈니스의 경계를 분리한 것을 BoundedContext 바운디드 컨텍스트 라고 합니다. 용어 자체는 매우 .. 이전 1 다음