일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- webframework
- spring6
- kakao
- 개발자
- 바운디드컨텍스트
- 애그리거트
- spring-web
- mongo
- 반버논
- docker
- Pay
- java17
- ddd
- spring caching
- Kotlin
- MongoDB
- 신입
- armeria
- 값객체
- MSA
- springboot3
- Spring
- springcloud
- ifkakao
- Conference
- zuul
- IDDD
- springboot
- Redis
- spring scheduler
- Today
- Total
목록ddd (5)
Easy Understanding
DDD 학습을 하다보면 전략적 패턴(도메인을 도출하고 정의하는 과정)에는 어느 정도 일관된 결론이 있는 것을 확인할 수 있다. 각종 DDD 책이나 블로그 들에서 해당 과정은 타협할 수 없는 과정으로 여겨지고 있고, 실제로 어떤 문서를 읽어도 내용들이 크게 다르지는 않다. 하지만 전술적 패턴(실제로 코드를 작성하고 아키텍처를 결정하는 과정)에 대해서는 딱히 일관성이 없다. 왜냐하면 DDD에서는 코드를 작성하는 방법에 대해서 정답이 없다고 애초에 선언되었기 때문이다. 실제 DDD 예제 코드들을 깃헙에서 확인해보니, 정말 제각각의 다양한 형식의 코드 스타일들이 존재했다. 반 버논의 iDDD 책에서 제공하는 DDD에 대한 방법론은 많은 인사이트를 제공해주었지만, 실제로 고민해보고 코딩해보는 과정이 필요하다고 생..
DDD의 가장 큰 장점 중 하나는 특정 아키텍처의 사용을 요구하지 않는다는 점이라고 한다. 하지만 책을 읽고 공부를 하다보면, 사실상 DDD에서 선택할 수 있는 괜찮은 아키텍처는 결국은 몇개 안 된다. 가장 간단한 것부터 순서대로 정리해 볼 것이다. 1. Layered Architecture 레이어드 아키텍처는 패턴계에서는 할아버지 같은 존재다. 이름 그대로 프로그램 내에서 계층을 나누는 설계 방식이다. 스프링의 예시가 가장 대표적이다. Controller - Service - Domain - Repository 위와 같은 개발 방식은 레이어드 아키텍처의 대표적인 예시다. 의존의 방향성은 오로지 위에서 아래로만 내려간다. public class UserController{ @Autowired privat..
지금까지 DDD 설명에서는 도메인이라든지 바운디드 컨텍스트라든지 개념적인 것들을 다뤘다면, 이제부턴 실전 코딩이다. 데이터 중심의 개발에서 DB에 대응하는 Class들을 만들었던 것처럼, Domain에 대응하는 Class들을 만드는 과정이 필요하다. 이제부터는 각 도메인들을 Class로 표현해보기 위한 개념과 코드를 구경할 차례다. 1. 엔터티(Entity) @Entity public class Movie { @Id private Long id; private String name; private Long playTimestamp; private String directorName; ... public void changeMovieName(){ ... } public void fireAndHireNewD..
도메인과 바운디드 컨텍스트는 무엇이길래 이전 글에서도 이야기 했지만, DDD는 용어부터가 우리가 알고있는 것과 다르고, 익숙해져야 할 것들이 많다. 특히나 바운디드 컨텍스트(Bounded Context)에 대해서는 초반에 감이 잘 오지 않았던 것 같다. 시작전에 간단하게 요약을 해보자면, DDD는 전략적(Strategic) 설계와 전술적(Tactical) 설계로 나뉜다. - 전략적 설계: 개념적으로 도메인과 바운디드 컨텍스트를 정의하고, 유비쿼터스 용어를 정리하는 부분 - 전술적 설계: 세부 아키텍처와 코드의 구현과 관련된 부분 이라고 보면 되는데, 이 글에서 다루는 것이 전략적 설계의 핵심적인 부분이라고 보면 된다. 조금씩 다르지만 대략적으로 아래의 순서로 전략적 설계가 진행된다고 보면 된다. 1. 도..
참고로 스터디는 다음의 책을 통해서 진행했다. DDD 간단 소개 우선 DDD(Domain-Driven Design)에 대해서 간단하게 소개를 하자면 다음과 같다. DDD는 단순한 코딩/아키텍처 구성 방법이 아니다. 즉 패턴과 설계와 아키텍처를 모조리 합친 그 무언가 개발의 새로운 패러다임이다. DDD는 기존의 설계 방식과 개발 방식을 새로운 관점으로 보게 해준다. 개발을 하면서 부딪히는 문제는 여러 가지가 있지만 크게 두 가지로 나눌 수 있다. 사용자(고객, 회사 등)에서 제시하는 복잡하고 자주 변화하는 요구사항 성능이나 협업에서 발생하는 기술적인 어려움 DDD는 보통 첫 번째 원인 해결에 초점을 맞춘 방법론이다. 기획자(도메인 전문가)들의 요구사항을 개발 언어로 변환하는 '비효율'을 최대한 '효율'적으..