도메인

    유비쿼터스 언어(UBIQUITOUS LANGUAGE)

    프로젝트를 진행하다보면 다음과 같은 상황을 겪어볼 수 있다. 첫번째 - 회원 관련 사용자A : 신규 회원을 등록하겠습니다. 사용자B : 신규 회원을 추가하겠습니다. 사용자가 말하는 등록과 추가는 무슨 의미일까? 모두 신규 회원이 가입되었다는 의미로 사용하는 걸까? 두번째 - 상품 관련 MD1 : 노트북 상품을 추가하겠습니다. MD2 : 노트북 제품을 등록하겠습니다. 사용자가 말하는 상품과 제품은 같은 의미로 사용하는 걸까? 추가와 등록은 이전 회원에 비해 헷갈린다. 단순히 수량을 추가하는 걸까? 새롭게 상품&제품을 등록한다는 걸까? 이렇듯 같은 팀내에서 도메인에 대한 용어가 제각각인 경우를 겪어본 적이 있을 거다. (혹은 용어가 같지만 다른 의미로 사용된 경우) 이런 차이로 같은 도메인을 서로 다르게 바..

    도메인 주도 설계(Domain Driven Design)란?

    도메인 주도 설계(Domain Driven Design, DDD)를 도입하는 회사나 DDD 경험 있는 개발자를 구하는 모집 공고가 흔하다. 커뮤니티 게시판에도 DDD 스터디 모집글이 보이고, 아는 지인들도 DDD 스터디 진행하거나 찾고 있다. DDD가 무엇이고, 많은 회사와 개발자들이 매달리고 있을까? 우선 도메인이 등장한 배경부터 알아보자. 왜 도메인 주도 설계인가? 레거시는 이해할 수 없는 코드가 덕지덕지 있는 것을 경험해봤을 거다. 존재 이유를 모르는 코드 수많은 분기문이 있다. 이러한 형태는 새로운 요구 사항이 추가되거나 버그가 발생했을 때 해당 메서드에 코드가 여러줄이 증가하는 걸 볼 수 있다. 또한, 비즈니스 규칙은 자바뿐만 아니라 자바스크립트, SQL에도 구현되어 있으며, 코드가 아닌 운영 ..