Domain-Driven Design

카테고리 없음

[ONECO DDD 도메인 설계 시리즈 Part 5] AbstractSequence와 정렬 전략

0. 이 글에서 다룰 것이 글은 “하루치 학습(DailyContent)” 애그리거트에서 순서/일차/문항 번호를 어떻게 다뤘는지에 대한 설계 기록이다.내가 실제로 겪은 고민은 대략 이런 거였다.“카테고리 안에서 N일차(DaySequence)”“DailyContent 안에서 1번/2번 뉴스(NewsItemOrder)”“DailyContent 안에서 1번/2번/3번 퀴즈(QuestionOrder)”그런데 이걸 그냥 int 필드로만 두면:0, 음수 같은 이상한 값도 들어가고DaySequence랑 QuestionOrder를 서로 섞어써도 컴파일이 안 막아주고도메인 규칙이 여기저기 흩어지는 느낌이 들었다.그래서 나온 결론이:“순서를 그냥 숫자로 보지 말고, 도메인 개념으로 끌어올리자.그리고 그 공통 규칙은 Abst..

Architecture/Domain Design

[ONECO DDD 도메인 설계 시리즈 Part 3] 값 객체는 어디서 만들고, 엔티티는 누가 만들어야 할까?

이번 글은 ONECO 프로젝트에서 DailyContent 애그리거트를 설계하면서 부딪힌 고민들을 바탕으로,“값 객체(Value Object)는 어디서 만들고, 엔티티(Entity)는 누가 만들게 할 것인가?” 를 정리해보는 글이다.실제로 프로젝트를 진행하며 작성한 코드들로 정리해보았다.0. 개념 정리 : 엔티티 vs 값 객체엔티티(Entity)ID(정체성) 으로 구분된다.값이 조금 바뀌어도 “그 객체”로 계속 취급돼야 한다.애그리거트 루트 아래에 매달려 있는 내부 엔티티(예: OrderLine, Comment 등)도 포함.값 객체(Value Object)ID가 없다.값이 같으면 같은 것이다.가능하면 불변(immutable)에 가깝게 두고, 생성 시점에 유효성 검증을 끝낸다.“값 객체는 서비스에서 만들어도..

카테고리 없음

[ONECO DDD 도메인 설계 시리즈 Part 1] DailyContent 설계 스토리

“사용자가 카테고리를 선택하면, 매일 ‘키워드 + 설명 + 관련 뉴스들 + 퀴즈’를 한 세트로 공부한다. 소프트웨어 개발을 시작할 때 습관적으로 데이터베이스 스키마부터 그린다.우리 프로젝트에서 요구를 듣고, 나와 팀원은 단순히 여러 테이블의 조합이 아니라 애그리거트들의 조합으로 시스템을 설계하기로 했다.우리 프로젝트의 애그리거트 중 하나인 DailyContent 애그리거트의 설계 과정을 기록한다.이 글은 “코드 설명”이 아니라 도메인 설계 의도를 기록하는 글이다. (코드 설명은 다음 글부터)왜 이 프로젝트에 DDD(도메인 주도 설계) 를 썼는지왜 DailyContent를 애그리거트 루트로 잡았는지왜 News / Quiz는 엔티티, 나머지는 값 객체(VO) 로 두었는지1. 이 프로젝트에 DDD를 쓰기로 한..

100points
'Domain-Driven Design' 태그의 글 목록