도메인 주도 개발 시작하기 (DDD 핵심 개념 정리부터 구현까지)
시간이 가면서 발전하는 것은
우리가 살고 있는 사회와 그것의 유지하기 위한 제도, 그리고 사람들의 문제 의식뿐만 아니라
그 사회도 시스템적으로 발전 한다는 것이다.
가령 어떠한 문제에 대해서 예전에는 판단 할 수 있는 근거가 2~3가지 밖에 없었다다면
현재는 수많은 변수와 환경적 요인 등을 감안하여 그 문제를 분석해야 한다는 것이다.
이러한 변화는 사회적제도 뿐 아니라 우리의 업무에도 많은 변화를 가져온다.
수십년 전에 경리 1명이 처리 할 수 있었던 일을
이제는 다수의 인원이 팀을 꾸려 업무를 봐야 할 정도로 처리해야 할 일의 범위나
업무의 세분화가 일어났고, 관련 법규도 늘어났다.
이것을 이제 시스템적으로 이야기 해보고자 한다.
업무가 다양화되고 세분화 되면, 업무를 지원하기 위한 시스템 역시 그에 맞게 업그레이드 되어야 한다.
하지만 이것은 간단한 일이 아니다.
직원들의 급여 지급과 관련된 일을 생각해 보자
예전에는 인사팀 직원 혼자 처리해도 문제가 없었겠지만(일당만 지급하면 되었기 때문에)
현재는 해당 직원의 근무년수, 출장 등에서 사용한 비용, 업무 성과에 따른 인센티브 등등 감안해야 한다.
단순히 일한 일수 만으로 급여를 지급하는 시기는 지났다는 말이다.
직원들의 급여를 지급하는것이 인사팀의 일이라면
그 직원이 출장으로 인해 사용한 비용의 처리가 과연 인사팀의 일인가? 경리팀의 일인가?
(직원들의 급여 지급 자체가 이제 인사팀의 일인지, 경리팀의 일인지도 애매해진다.)
이와 같이 단순했던 업무가 점점 복잡해 지고, 업무의 영역이 고도화되고 타업무와의 연계가 증가할 수록
기존의 개발방법으로는 대처하기가 힘들다.
따라서 개념적으로든 구조적으로든 변화가 일어나야 하는 것은 당연하다.
그 중 하나도 도메인 주도 설계(DDD, Domain Driven Design)가 아닐까 생각한다.
난 아직 도메인 주도 개발에 대해 잘 모른다.
사실 도메인에 대한 개념도 제대로 잘 모른다.
하지만 이 책을 접하고 이제야 어렴풋이 감이 오기 시작한다.
이 책의 대상은 DDD를 처음 접하는 개발자다.
기본적인 스프링이나 JPA에 대한 설명은 따로 하지 않는다.
따라서 초급 개발자라면 잠시 이 책을 덮고 스프링과 JPA대해 공부를 하고 오는 것도 좋을것이다.
(이 책을 읽고 나면 나도 JPA에 대해 공부해야 겠다.)
이책은 DDD를 처음 시작하는 사람들을 위해
도메인에 대한 개념을 소개하는 것으로 시작한다.
그리고 DDD를 위한 아키텍처에 대해 이야기 한다.
이 시점에 잠시 잊고 지냈던 SOLID의 DIP가 등장한다.
모은 기술은 이렇게 이어지는가라고 감탄하고 있을때 즈음
또 한번 내가 감탄했던 부분은 시퀀스 다이어그램을 이용한 각 도메인간의 업무프로세스 흐름이다.
기존에는 산출물을 위해서 대충 그리던 다이어그램이
이제는 단순한 산출물이 아니라 업무를 이해하는 중요한 도구로 다가오는 순간이었다.
(이제는 필요하다면 열심히 잘 그려 놓도록 하겠다!!)
이렇게 개념적인 부분에 이어 해당 내용을 어떻게 구현하는지 코드를 보여준다.
이 코드들에서도 많은 것을 배운다.
특별한 문법을 사용한 것이 아니라 단순히 스프링을 이용한 일부지만
도메인 서비스 영역과 응용 영역의 서비스를 어떠한 식으로 분리하는지 보여준다.
그리고 저자의 노하우를 아낌없이 공개하고 있다.
업무가 세분화되고 영역이 넓어 질 수록 해당 도메인에 대한 이해는 필수 이다.
그렇다고, DDD가 모든 프로젝트에 적합한 방법은 아니다.
하지만 도메인에 대한 개념을 이해하고, 데이터베이스 설계부터 도메인 개념을 적용한다면
추후 시스템이 발전했을때, 조금 더 수월하게 시스템을 업그레이드 할 수 있을 것이다.
이 책은 도메인 개발 방법에 대해 이해하고 감을 잡기위한 DDD 입문서로 추천하고 싶다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
'블로그 > 도서' 카테고리의 다른 글
[도서] 소프트스킬 (0) | 2023.02.06 |
---|---|
[도서] 구글 앱스 스크립트 완벽 가이드 (0) | 2022.12.28 |
[도서] 기업을 성공으로 이끄는 Developer Relations (1) | 2022.06.25 |
[도서] 헤드퍼스트 디자인패턴(개정판) (0) | 2022.04.24 |
[도서] 소프트웨어 아키텍처101 (0) | 2022.03.22 |