DDD 세레나데

    DDD 세레나데 2주차 - 크게 소리 내어 모델링하기

    NEXTSTEP에서 진행하는 교육과정 DDD 세레나데 2기다. DDD(Domain-Driven Design) 세레나데 edu.nextstep.camp 교육을 수강한 지 1년이 지났지만, 이제야 후기를 작성한다. 2주차 후기 2주차는 모델링을 주제로 유비쿼터스 언어, 바운디드 컨텍스트, 이벤트 스토밍을 배우는데 간단하게 설명하면 유비쿼터스 언어는 구성원이 사용하는 비즈니스 용어를 하나로 통일한 언어이며 바운디드 컨텍스트는 도메인 범위를 정한다고 볼 수 있다. 이벤트 스토밍은 비즈니스 도메인을 빠르게 탐색하고 학습하여 유비쿼터스 언어와 바운디드 컨텍스트를 정하는 데 큰 도움을 준다. 이번에 배운 내용은 DDD를 적용하는 회사가 아니더라도 적용할 수 있는 좋은 내용이다. 이벤트 스토밍으로 구성원간 서로 다른 ..

    이벤트 스토밍(Event Storming)

    시작하면서 구성원이 수긍하는 유비쿼터스 언어나 바운디드 컨텍스트를 정하려면 어떻게 해야 할까? 비즈니스에 참여하는 구성원이 모여서 소통하고 정해야 할 것이다. 그러면 책상에 앉아 회의처럼 이야기해야 할까? 그럼 전체적으로 정하는데 많은 시간이 소비되고 피로도가 쌓일 것이다. 어떤 방식으로 해야할까? 알베르토 브란돌리니(Alberto Brandolini)가 제안한 비즈니스 도메인을 빠르게 탐색하고 학습할 수 있는 이벤트 스토밍에 대해 알아보자. 이벤트 스토밍이란? 도메인 전문가와 개발자를 학습 과정에 참여시키기 위한 빠른 설계 기술이다. 클래스와 데이터베이스가 아닌 비즈니스 및 비즈니스 프로세스에 중점을 둔다. 모든 사람이 동일한 수준으로 접근할 수 있게 시각적인 접근 한다. 진행 방법 큰 벽이나 화이트보..

    DDD 세레나데 1주차 - 도메인 주도 설계 이해

    NEXTSTEP에서 진행하는 교육과정 DDD 세레나데 2기다. DDD(Domain-Driven Design) 세레나데 edu.nextstep.camp 교육을 수강한 지 1년이 지났지만, 이제야 후기를 작성한다. 1주차 후기 1주차는 레거시 코드를 통해 도메인 주도 설계 등장 배경을 겪어보고, 왜 도메인 주도 설계인가를 알아본다. 리팩토링을 하기 위한 첫걸음으로 테스트 코드를 학습한다. 테스트 코드를 작성하는 방법은 여러 가지로 모두 경험해보고 어느 상황에 사용하면 좋을지 알아본다. 텐트를 세우기 위해 말뚝이 필요하듯이 리팩터링을 하기 위해선 테스트 코드가 필요하다. 나는 TDD, 클린코드 with Java 11기가 끝난 지 얼마 안 된 시점이라 생소한 개념이 많아서 따라가기 힘들었는데 아래의 개념을 들어..

    DDD 세레나데 시작하면서...

    NEXTSTEP에서 진행하는 교육과정 DDD 세레나데 2기다. DDD(Domain-Driven Design) 세레나데 edu.nextstep.camp 교육을 수강한 지 1년이 지났지만, 이제야 후기를 작성한다. 수강 이유 TDD, 클린 코드 with Java edu.nextstep.camp TDD, 클린코드 11기를 수강하고 나서 객체지향을 알게 되었고, 서적과 스터디로 오브젝트 등을 읽으면서 객체지향을 좀 더 알아가고 있었다. 당시 21년 하반기에 취업목표를 생각하고 있었고, 구인 공고를 찾아봤더니 DDD, MSA 용어가 많이 보였다. 커뮤니티 게시글이나 스터디 모집에서 DDD가 많이 보였고, 지인들도 DDD 스터디를 구한다고 했었다. 관심이 생겼지만, 커뮤니티에서 DDD, MSA는 난이도가 높아 나중..

    바운디드 컨텍스트(BOUNDED CONTEXT)

    시작하면서 우리는 하나의 단어를 여러 의미로 사용하는 상황을 많이 마주했으며, 앞으로도 계속 사용될 예정이다. 비즈니스에서 Account라는 단어를 보면 은행에서는 계좌로 보지만, ERP 시스템에서는 계정으로 사용된다. 이렇듯 글자는 같지만 의미가 다른 걸 동음이의어라 부른다. 개발적인 측면에서 애플리케이션의 전체적인 구조를 보면 다양한 도메인에서 같은 용어가 많이 발생하는 걸 볼 수 있다. 용어의 중복이 많다보니 하나의 모델로 처리하려는 시도가 생길 수 있다. 하나의 모델이 다양한 도메인에서 사용된다면 Common이라는 공통모듈에 집어넣고 팀 내에서 이를 사용하라고 통보할지도 모른다. 과연 올바른 방법일까? 아니다, 상품이라도 고객이 바라보는 상품과 주문에서의 상품은 서로 다르다. (서로 관리되는 상태..

    유비쿼터스 언어(UBIQUITOUS LANGUAGE)

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

    9월 회고록 및 10월 목표

    9월 한 달 동안 무엇을 했는가? 지난 회고를 통해 9월의 목표를 크게 2개로 잡았지만 9월 초에 우테캠프로 3기 모집이라는 메인 목표가 추가되었다. 그리고 진행중인 스터디가 있다. - DDD 세레나데, 매주 화요일 19시 30분 - 사이드 프로젝트, 매일 틈틈이 진행 중. - 우테캠프로 3기, 9월 15일~9월 29일까지 지원받음 - 오브젝트 스터디, 2달 넘게 진행된 스터디 마무리 - 블랙커피 블로그 스터디, 매주 월요일 22시 - 객체지향 스터디, 매주 토요일 20시 - 우아한유스방 스터디, 과제 형식과 피드백 하나씩 풀어보자. 많은 걸 알려준 DDD 세레나데 (매주 화요일 19시 30분) DDD(Domain-Driven Design) 세레나데 edu.nextstep.camp DDD 세레나데를 통해..