DDD6 마이크로서비스 설계 1. 마이크로서비스를 도출하는 방법마이크로서비스를 응집성이 높고(high cohesion), 다른 서비스와의 의존도는 낮게(low coupling) 구성하여 독립성을 갖추려면, 어떤 비즈니스 기능들을 묶는지가 중요하다.먼저 기존 조직을 분류했던 방법과 유사하게 업무 기능을 분해하는 방법이 있다. 경험적으로 익숙한 분류이기 때문에 비즈니스 이해에는 유용하지만, 서비스 간의 관계와 구체적인 기능을 파악하는 데는 한계가 있다반면, DDD 바운디드 컨텍스트를 기반으로 마이크로서비스를 도출하는 방법은 하위 도메인마다 데이터와 기능이 엮인 도메인 모델을 정의하기 때문에 도메인 모델의 소유권이 어떤 서비스인지 분명하게 할 수 있고, 이를 기반으로 서비스 간의 관계를 파악하기 용이하다.2. DDD에서의 설계DDD에서의.. 2025. 6. 6. [의존 관계 역전 원칙] 의존 관계 방향성 제어를 통해 소프트웨어 유연성을 확보하자 도메인 로직을 기술적 요소에서 분리해 소프트웨어를 유연하게 만드는 의존 관계 제어에 대해 알아보겠습니다.의존이란 무엇인가의존은 어떤 객체가 다른 객체를 참조하면서 발생합니다. 아래 코드를 살펴보겠습니다.class ObjectA { private objectB: ObjectB}ObjectA는 ObjectB를 속성으로 가지면서 참조합니다. 즉, ObjectB에 대한 정의가 선행되지 않으면 ObjectA의 정의는 성립할 수 없습니다. 이럴 때, ObjectA는 ObjectB에 의존한다고 말합니다. 의존 관계는 다이어그램으로 나타낼 때 아래처럼 의존하는 객체에서 의존의 대상이 되는 객체 쪽으로 향하는 화살표로 표현합니다. class Concrete implements Interface { }추상 타입을 구현하.. 2025. 1. 25. 유저 CRUD 코드 예시로 도메인 개념 살펴보기: 도메인 서비스, 리포지토리, 애플리케이션 서비스 도메인 주도 개발 리포지터리이번 글에서는 도메인 서비스, 리포지토리, 애플리케이션 서비스에 대한 개념을 살펴보고, 유저에 대한 CRUD를 구현한 코드까지 살펴보겠다.도메인 서비스도메인 서비스란 무엇인가소프트웨어 개발에서 클라이언트를 위해 무언가를 해주는 객체를 서비스라고 한다. 도메인 서비스란 도메인을 위해 무언가를 해주는 객체로, 값 객체나 엔티티로 구현했을 때 부자연스러운 행동을 담당한다.도메인에 대한 규칙 등 어떠한 처리를 도메인 객체 안에 정의했을 때 잘 들어맞지 않는다는 느낌이 든다면 이를 도메인 서비스로 옮기면 자연스럽게 나타낼 수 있다. 그치만 남용을 할 경우, 데이터와 행위가 단절되며 로직이 흩어질 수 있는데 이는 데이터와 행위를 모아놓는다는 객체 지향 설계의 기본 원칙을 거스를 뿐만 아니.. 2025. 1. 22. 엔티티 - 생애주기를 갖는 객체 엔티티란?엔티티란 도메인 모델을 구현한 도메인 객체를 의미한다. 값 객체와의 차이점은 동일성을 통해 식별이 가능한지에 있다. 사람을 예로 들어 동일성을 이해해보자. 이름이 같다고 해서 두 사람이 동일한 인물이 아니며, 어떤 사람이 이름을 변경한다고 해서 다른 사람이 되지 않는다. 즉, 사람을 객체로 비유해보면 속성과는 별개로 동일성을 지켜주는 무언가가 있다는 것을 알 수 있다. 소프트웨어 시스템에서 일반적으로 엔티티로 구현되는 모델로 유저가 있다. 유저는 속성이 아닌 동일성으로 식별된다. 그리고 흔히 식별자(identity)가 동일성을 판단하는 수단으로 사용된다.엔티티의 성질엔티티의 성질에는 다음 3가지가 있다.가변이다.앞서 살펴본 값 객체는 불변성을 가졌지만, 엔티티는 가변성을 갖는 객체다. 그래서 값.. 2025. 1. 20. 이전 1 2 다음