아무것도 모르는 꽑꽑이의 좌충우돌 우당탕탕 DDD
MSA와 DDD는 같이 소개가 많이 된다. 'DDD는 복잡한 마이크로 서비스를 구현할 때만 적용한다. CRUD 서비스처럼 더 간단한 업무는 더 간단한 벙법으로 관리할 수 있다'(https://ducktyping.tistory.com/14) 라고 DDD를 소개하는 글도 있지만, DDD는 MSA뿐만아니라, OOP를 사용하는 프로그램에서도 가치있다고 생각한다.
여기서 잠깐
그렇다면 OOP에서 이제까지 아무 생각없이 뚜둘겼던 그 디자인은 무엇일까?
DDD랑 무슨 차이일까?
OOP 하면서(제대로 한지도 모르겠지만,..) 내가 그래왔고, 내가 일해왔던 회사들도 그렇고, DDD를 빠삭하게 이해하고 도입하지 않은 대부분의 회사에서 코드들은 Strategic Design을 사용한다.
Strategic Design 이란
Strategic Design이란 Context에 대해 생각하고, 이를 기준으로 디자인하는 것을 말한다. OOP에서 소프트웨어를 디자인 할 때 객체를 기준으로 디자인을 진행하는 OOD(Object Oriented Design)이 라고한다.
OOD관점으로 봤을때, Strategic Design는 OOD가 잘 이루어 진것으로 볼 수 있다.
여기서 Context란 무엇일까? Context란 특정 객체 혹은 상황이 벌어지는 주변 환경을 말한다. 우리가 흔히 코딩하는 OderProcessService(주문 진행과정에서 성공 실패 처리), LoginService(로그인과정에서 다른 과정 처리 및 성공 실패 처리) 같이 사물이나 행동 양상이 벌어지는 상황에 집중하여 디자인을 하는 것이 Strategic Design의 핵심이다.
정리 블로깅
- https://ducktyping.tistory.com/14?category=1180172
- https://ducktyping.tistory.com/15?category=1180172
- https://ducktyping.tistory.com/20
참고 사이트
- https://steemit.com/kr/@frontalnh/domain-driven-design
'생존형 개발' 카테고리의 다른 글
DataGrip Mysqldump Quick Honey Tip (0) | 2021.12.01 |
---|---|
자바 DateTime 역직렬화 실패! (0) | 2021.11.10 |
숫자계산은 BigDecimal로 하라구욧! feat. Kotlin (0) | 2021.05.31 |
Git Basic - Local Life Cycle (0) | 2021.05.31 |