DDD

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

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

    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이라는 공통모듈에 집어넣고 팀 내에서 이를 사용하라고 통보할지도 모른다. 과연 올바른 방법일까? 아니다, 상품이라도 고객이 바라보는 상품과 주문에서의 상품은 서로 다르다. (서로 관리되는 상태..

    10월 1주차 회고

    지난주에 있었던 일 지난주를 간단히 정리하자면 다음과 같은 일이 있었다. - 우테캠프로 3기 프리코스 진행 - 사이드 프로젝트 모임 - DDD 정리 포스팅 - 함께자라기 애자일로 가는 길 읽기 - 백신 2차 접종. 우테캠프로 3기 프리코스 지난주 가장 많이 시간을 투자했던 우테캠프로 3기 프리코스 진행이다. 1주차, 숫자야구게임을 진행했다. 2주차, 자동차경주를 진행했다. 상반기 우테캠프로 2기 프리코스와 같은 문제였지만, 이전과는 다르게 라이브러리와 통합 테스트 코드를 제공한다. 제약사항 중에 통합테스트코드가 통과한다는 조건이 추가되었다. 아마 2기 때 다양한 수백명의 코드 때문에 변별력을 늘리기 위해 추가한 거 같다. 처음엔 의문이였다. "어떻게 미리 짜여진 통합 테스트 코드를 통과하지?" "통합 테..

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

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

    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 세레나데를 통해..