본문 바로가기

Dev/DDD9

서클 모델을 추가하여 애플리케이션 구성하기 ✅ 도메인 주도 개발 기반 구현 코드 GitHub - seatbelt92/ddd-practiceContribute to seatbelt92/ddd-practice development by creating an account on GitHub.github.com 이번 글에서는 유저가 가입할 수 있는 서클 모델을 추가하여, 서클을 생성하고 서클에 가입하는 유즈케이스를 포함한 애플리케이션을 구성해보겠습니다.앞서 살펴봤던 값객체, 엔티티, 도메인 서비스, 리포지토리, 애플리케이션 서비스, 의존 관계 역전 원칙과 함께 도메인 주도 설계에서 다뤄지는 개념인 팩토리, 트랜잭션, 에그리게이트, 명세에 대한 설명과 코드도 기술해보겠습니다.그리고 저와 동일한 기술스택(Typescript, TypeORM, MySQL)을 .. 2025. 2. 8.
[의존 관계 역전 원칙] 의존 관계 방향성 제어를 통해 소프트웨어 유연성을 확보하자 도메인 로직을 기술적 요소에서 분리해 소프트웨어를 유연하게 만드는 의존 관계 제어에 대해 알아보겠습니다.의존이란 무엇인가의존은 어떤 객체가 다른 객체를 참조하면서 발생합니다. 아래 코드를 살펴보겠습니다.class ObjectA { private objectB: ObjectB}ObjectA는 ObjectB를 속성으로 가지면서 참조합니다. 즉, ObjectB에 대한 정의가 선행되지 않으면 ObjectA의 정의는 성립할 수 없습니다. 이럴 때, ObjectA는 ObjectB에 의존한다고 말합니다. 의존 관계는 다이어그램으로 나타낼 때 아래처럼 의존하는 객체에서 의존의 대상이 되는 객체 쪽으로 향하는 화살표로 표현합니다. class Concrete implements Interface { }추상 타입을 구현하.. 2025. 1. 25.
객체의 관계는 설계 의도로 결정된다. 의존성 주입을 학습하다가 이건 집합 관계로 봐야하지 않나, 라는 의문을 풀기 위해 객체의 관계에 대해 고민해봤습니다. Car와 Engine 클래스로 구성된 코드를 예시로 들었습니다. 물론, 두 모델은 구성 관계가 가장 어울리지만 설명을 위해 다소 억지스럽게 객체의 관계에 대한 해석을 붙여가며 글을 개진해봤습니다.의존 관계 (Dependency) vs 연관 관계 (Association)class Engine { start(): void { console.log("Engine started"); }}class Car { constructor(private engine: Engine) {} startCar(): void { this.engine.start(); }}위의 코드는 의존 관계,.. 2025. 1. 25.
유저 CRUD 코드 예시로 도메인 개념 살펴보기: 도메인 서비스, 리포지토리, 애플리케이션 서비스 도메인 주도 개발 리포지터리이번 글에서는 도메인 서비스, 리포지토리, 애플리케이션 서비스에 대한 개념을 살펴보고, 유저에 대한 CRUD를 구현한 코드까지 살펴보겠다.도메인 서비스도메인 서비스란 무엇인가소프트웨어 개발에서 클라이언트를 위해 무언가를 해주는 객체를 서비스라고 한다. 도메인 서비스란 도메인을 위해 무언가를 해주는 객체로, 값 객체나 엔티티로 구현했을 때 부자연스러운 행동을 담당한다.도메인에 대한 규칙 등 어떠한 처리를 도메인 객체 안에 정의했을 때 잘 들어맞지 않는다는 느낌이 든다면 이를 도메인 서비스로 옮기면 자연스럽게 나타낼 수 있다. 그치만 남용을 할 경우, 데이터와 행위가 단절되며 로직이 흩어질 수 있는데 이는 데이터와 행위를 모아놓는다는 객체 지향 설계의 기본 원칙을 거스를 뿐만 아니.. 2025. 1. 22.