DDD(Domain-Driven Design)라는 소프트웨어 개발 방법론이 있다.
사람들은 왜 이것에 열망하는지? 무슨 장점이 있길래? 이와 반대되는 개념은 뭐가있는지? 이런걸 좀 알아보았다.
-> 비즈니스 로직을 관리하기 위해 '도메인 모델' 을 중심으로 개발을 한다고 한다.
-> 코드와 비즈니스 용어가 일치하도록 설계한다.
이때 사용하는 언어가 '유비쿼터스 언어' 라고 한다. (비즈니스 + 개발 공통 언어)
주문관리
와 재고관리
가 서로의 로직에 영향을 주지 않게 '독립성'을 보장한다.
명확하게 분리가 잘 되어있으면 부분적인 수정이 시스템에 영향을 미치지 않는다. 코드 변경시 리스크 감소
도메인 로직이 분리되어있기 때문에 테스트하기에 무척 용이하다고 한다.
도메인 (주문, 재고관리, 배송, ...)에서의 규칙을 정해놓은 부분을 도메인이라고 하고
이 도메인을 객체지향적(확장성+유지보수성)으로 개발하는 방법론이다.
트랜잭션 스크립트는 DDD와 거의 반대되는 개발 방법론이다. (다른것이지 틀린건 아님)
절차 중심적인 설계를 한다.
DDD와의 차이점
TS는
절차지향적이다.
데이터를 직접 조작하며 비즈니스 로직이 코드에 그대로 들어가있다.
코드의 흐름이 명확하게 짜여져있어서 이해하기가 쉽다.
작은 규모의 프로젝트에 적합하다.
하지만 이러한 점들에는 한계점이 있는데
코드의 중복이 많이 생긴다는 것.
그리고 코드 한 부분을 수정하면 다른 부분까지 수정해야 하는 경우가 자주 생김
아직은 개념적인 부분에 대해서 접근하고 있고 조금씩 넓혀나갈 생각이다.