개발을 하면서 많은 요구사항을 만납니다. 다양한 요구사항을 잘 풀어나가기 위해 한번쯤은 고민해 봤을 법한 내용들을 만날 수 있습니다.
요구사항을 처리하기 바빠 당장 변경은 해 놓았는데, 변경하고 난 뒤에 오히려 생각이 많아져 이런저런 아이디어를 적용해 보다가도 다른 요구사항이나 시간에 쫓겨 잊어버렸던 기억이 되살아납니다.
프로세스의 일부를 변경해야 하는데 프로세스가 다루는 변수들 가운데 숫자 값을 가지는 변수가 무엇을 다루는지 모호해서 코드를 뒤적였던 경험,
진행 상태를 바꿔달라는 요청을 받고서 변경하는 메서드를 찾아서 보완해 놓았는데 상태가 안 바뀐다는 피드백을 받아 다시 들여다보니 상태를 바꾸는 코드가 한두 군데가 아니고, 여기저기 흩어져 있어 열 받았던 기억 같은 것들이 떠오를 수 있습니다.
개발을 하다 보면 심심치 않게 만나는 개념들이 있습니다. 디자인 패턴, 리팩터링, 아키텍처, 테스트 주도 개발, 도메인 주도 설계가 떠오를 수 있습니다. 이 가운데서 도메인 주도 설계가 지향하는 방향을 보여주고 접근하는 방법을 알려주는 책입니다.
도메인 주도 설계를 한마디로 정의하기는 쉽지 않습니다.
책에서도 이론적 배경 같은 건 나오지 않습니다.
오랜 개발 경험이 있는 저자가 실무적인 예를 들어가며 도메인 주도 개발을 하나씩 풀어나갑니다.
저자도 처음부터 도메인 주도 개발 개념을 적용한 개발을 한 것은 아니라고 합니다.
도메인 주도 개발을 알게 된 후에도 이해하기 어려웠고 구현하기도 힘들었다고 합니다. 그래서인지 먼저 알게 된 내용을 좀 더 다가가기 쉽게 풀어서 알려주고 있습니다.
내용을 따라가다 보면 익숙한 느낌도 받으실 수 있습니다. 개인마다 차이가 있겠지만 익히 알고 있었거나 어렴풋이 감만 잡고 있었던 부분이지만 딱히 뭐라 꼬집어 설명하기 애매했던 생각들을 도메인 주도 개발을 통해 어떻게 정리하고 풀어나가는지 보여주기 때문입니다.
책 뒤표지에도 언급되어 있지만 도메인 주도 설계 입문서입니다. 그럼 핵심은 무엇이고 얼마를 더 알아야 하는지 의문이 들 수 있습니다. 너무 성급해하지 않아도 괜찮지 않을까요.
도메인 주도 개발은 지식의 영역이라기보다 지혜의 영역에 가깝다고 생각합니다.
수영 같은 운동이나 연애처럼 책으로만 배워서는 할 수 없는, 부딪치고 겪으면서 알아나가는 것들과 비슷하다고 봅니다.
이론이 나오고 그 이론을 적용하는 여러 사례가 만들어지며 적용 영역을 넓혀가기보다, 다양한 사례와 그에 대해 고민하는 시간들이 쌓여가는 가운데 개념이 정리되고 구현을 통해 발전해 나가는 쪽에 있다고 보입니다.
'도메인 주도 설계'라는 소프트웨어가 가진 복잡함을 풀어나가는 지혜에 다가 가는데 좋은 길잡이가 되리라 생각합니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."