ghojeong / ddd-strategic-design Goto Github PK
View Code? Open in Web Editor NEWThis project forked from next-step/ddd-strategic-design
This project forked from next-step/ddd-strategic-design
계층 우선 패키지 구조를 BOUNDED CONTEXT 중심의 패키지 구조로 리팩터링한다.
내가 했던 방법 : Root Aggregate 기준으로 바운디드 컨텍스트를 나누기
* domain : domain layer
- aggreagte, repository, domain service 와 같이 도메인에서 처리하는 클래스들을 위치 시키는 편입니다.
* application : application laeyr
- 응용 서비스(application service)를 모아두곤 합니다.
* api : presentation layer
- controller, adaptor와 같이 외부 client의 요청을 받는 클래스를 모아둡니다.
* infra : infrastructure layer
- 이메일, 메시지 알림등과 같은 외부 서비스와 관련된 클래스를 모아둡니다.
* dto
- request, response, layer 간 데이터 이동을 위한 클래스를 정의합니다.
주문 도메인
주문 테이블 도메인
메뉴 도메인
상품 도메인
Core Domain : 주문
Support Domain: 주문테이블, 메뉴, 상품
Common Domain : 비속어 필터
MSA -> 독립된 서비스가 된다.
모놀리식 -> 패키지가 된다.
멀티모듈 -> 모듈이 된다
도메인 분석이 어렵다면 해외 서비스의 FAQ 페이지를 참고하자.
하나의 CS 팀이 모든 질문을 답할 수 없기 때문에, 나누어져 있는데
나눈 기준이 보통 도메인이 된다.
Value Object 는 불변이다.
도메인 vs 모델:
컨텍스트: 용어사전의 용어의 의미가 달라질 수 있는 "맥락"
도메인: 모델들을 나누는 "영역", 도메인을 나눈 기준에 따라 앱의 책임을 쪼갤 수 있다.
모델: 도메인에 속한 실제 "관심사", java 에서는 클래스와 1대1 대응된다.
엔티티: 비즈니스 적으로 의미가 있는 ID 를 가진 객체
VO: 불변 객체. 비즈니스 적으로 의미가 있는 식별자를 갖지 않는다. 그래서 id 대신 seq 로 객체를 식별한다.
Aggregate
Repository
Domain Service
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.