Domain Driven Design Quickly
이 문서는 Domain Driven Design Quickly책을 읽고 가볍게 정리한 내용입니다.
읽은 기간
: 2021-06-28
~ TBD
1. What Is Domain-Driven Design
- 소프트웨어 개발은 실제 세계에 존재하는 프로세스를 자동화하거나, 실제 비즈니스 문제들의 해결책을 제공하는데 가장 자주 적용된다.
- 우리는 소프트웨어가 이 도메인에서 유래되었고 깊이 연관되어 있다는 것을 처음부터 이해해야 한다.
- 소프트웨어는 코드로 구성되어 있다.
- 우리는 코드를 가지고 너무 많은 시간을 보내고 소프트웨어를 단순히 객체와 메서드로 보고 싶어할 수 있다.
- 좋은 소프트웨어를 만들어 내기 위해서, 우리는 소프트웨어의 모든 것에 대해서 알아야 할 필요가 있다.
- 너는 은행업무의 모든 것, 특히 은행업무의
도메인(Domain)
에 대해서 이해하고 있지 않으면, 은행업무 소프트웨어를 만들어 낼 수 없다.
- 그러면 좋은 도메인 지식없이 복잡한 은행 업무 소프트웨어를 만드는게 가능할까?
- 누가 은행업무에 대해서 알까?
- 소프트웨어 아키텍트? 소프트웨어 분석가? 개발자?
- 바로
은행원
이다.
- 은행 업무 시스템을 가장 잘 이해하는 사람은 그 안에 있는 사람들이다.
- 그들은 모든 세부사항들, 모든 예외들, 모든 가능한 이슈들, 모든 규칙들을 알고 있다.
- 이것이 우리가 항상 시작해야 할 곳이다. 바로 도메인
- 우리가 소프트웨어 프로젝트를 시작할 때, 우리는 그것이 동작하는 도메인에 포커스를 맞춰야 한다.
- 소프트웨어의 모든 목적은 특정한 도메인을 강화하는 것이다.
- 이를 위해서는 소프트웨어가 생성된 도메인과 조화를 이루어야 한다.
- 그렇지 않으면 도메인으로 변형되어 오작동, 손상, 심지어 혼란을 일으킬 수 있다.
- 우리는 어떻게 소프트웨어를 도메인과 조화를 이루도록 만들 수 있을까?
- 그것을 하는 가장 좋은 방법은 소프트웨어를 도메인의 반영으로 만드는 것이다.
- 소프트웨어는 핵심 개념과 그 도메인의 요소들을 통합하고, 그 둘 사이의 관계들을 정밀하게 하는 것이 필요하다.
- 소프트웨어는 도메인을 모델링해야 한다.