loop-study
개발 공부할래?
loop-study
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 목표 및 회고 (25)
    • 세미나 & 워크샵 (1)
    • 교육 및 인강 (67)
      • TDD, Clean Code with Java (5)
      • ATDD, 클린 코드 with Spring (6)
      • DDD 세레나데 (3)
      • 인프라 공방 (6)
      • 이규원의 현실 세상의 TDD (19)
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (18)
      • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 (8)
      • 코딩으로 학습하는 GoF의 디자인 패턴 (1)
      • 스프링 시큐리티 완전정복 6.x (1)
    • 서적 (62)
      • 객체지향의 사실과 오해 (1)
      • 객체지향과 디자인패턴 (7)
      • 만들면서 배우는 클린 아키텍처 (3)
      • 테스트 주도 개발로 배우는 객체 지향 설계와 실천 (1)
      • 오브젝트: 코드로 이해하는 객체지향 설계 (17)
      • 리팩토링 : 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기 (0)
      • 토비의 스프링 (3)
      • 엔터프라이즈 애플리케이션 아키텍처 패턴 (9)
      • 개발자의 글쓰기 (1)
      • 소프트웨어 장인 (17)
      • Real MySQL 8.0 (2)
      • JVM 밑바닥까지 파헤치기 (0)
    • 개발 & 방법론 (29)
      • Java (13)
      • TDD (5)
      • ATDD (3)
      • DDD (6)
      • 인프라 (2)
      • SQL (0)
    • 개인이야기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 백엔드 로드맵

인기 글

태그

  • DDD 세레나데
  • 이규원
  • 조영호
  • java
  • JUnit
  • 인프런
  • 오브젝트
  • 현실세상의 TDD
  • Patterns of Enterprise Application Architecture
  • 자바
  • 테스트 주도 개발
  • 김영한
  • 엔터프라이즈 애플리케이션 아키텍처 패턴
  • 백기선
  • 소프트웨어 장인
  • 스터디
  • nextstep
  • 스프링
  • 추상화
  • Test Driven Development
  • 모든 개발자를 위한 HTTP 웹 기본 지식
  • study
  • TDD
  • 장인정신
  • 인프라공방
  • 넥스트스탭
  • ATDD
  • fastcampus
  • 마틴 파울러
  • 객체지향

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
loop-study

개발 공부할래?

이벤트 스토밍(Event Storming)
개발 & 방법론/DDD

이벤트 스토밍(Event Storming)

2022. 11. 4. 20:59

시작하면서

구성원이 수긍하는 유비쿼터스 언어나 바운디드 컨텍스트를 정하려면 어떻게 해야 할까?

비즈니스에 참여하는 구성원이 모여서 소통하고 정해야 할 것이다.

그러면 책상에 앉아 회의처럼 이야기해야 할까? 그럼 전체적으로 정하는데 많은 시간이 소비되고 피로도가 쌓일 것이다.

어떤 방식으로 해야할까?

알베르토 브란돌리니(Alberto Brandolini)가 제안한 비즈니스 도메인을 빠르게 탐색하고 학습할 수 있는 이벤트 스토밍에 대해 알아보자.


이벤트 스토밍이란?

도메인 전문가와 개발자를 학습 과정에 참여시키기 위한 빠른 설계 기술이다.

클래스와 데이터베이스가 아닌 비즈니스 및 비즈니스 프로세스에 중점을 둔다.

모든 사람이 동일한 수준으로 접근할 수 있게 시각적인 접근 한다.

진행 방법

큰 벽이나 화이트보드에 포스트잇을 붙여 나간다.

  • 포스트잇마다 비즈니스 프로세스를 단계별로 적는다. 

이벤트 스토밍의 가치는 포스트잇이 아닌 커뮤니케이션이다.

  • 구성원을 통해 부족한 비즈니스를 채울 수 있다.
  • 서로 다른 비즈니스를 하나로 통일할 수 있다.

보기 편하게 큰 글씨로 작성하고, 펜은 번지지 않는 것으로 쓴다.

도메인 이벤트(DOMAIN EVENT)

도메인 전문가가 관심을 가지고 있는 어떤 사건으로

이벤트가 발생했다는 것은 상태가 변경되었다는 것을 의미한다.

보통 '~할 때', '~가 발생하면', '만약 ~하면'과 같은 요구사항은 상태 변경인 경우가 많고, 이런 요구사항은 이벤트로 구현할 수 있다.

 

COMMAND

- 이벤트가 발생하는 원인

 

AGGREGATE

- 데이터 오너십

- 독립적인 라이프사이클

- 독립적인 확장성

- 보통 AGGREAGATE를 기준으로 BOUNDED CONTEXT를 나눈다.

 

특징

- 혼자보다 다 같이 하는 것이 빠르다.

- 구현 코드보다 포스트잇을 변경하는 게 훨씬 저렴하다.

- 커뮤니케이션을 통해 비즈니스 프로세스 자체를 잘 이해하고 개선한다.

- 팀이 비즈니스(도메인)와 코드로 표현되는 모델의 차이를 이해하고 수정하도록 돕는 것이 중요하다.

  • 가장 일반적으로 발생하는 문제는 도메인 모델로 개발된 소프트웨어가 전문가의 생각과 괴리감이 크다는 것.

 

이벤트 스토밍 참여자

사용자

- 불특정 다수의 소프트웨어 사용자

- 애플리케이션에 대한 요구사항을 갖고 있다.

 

도메인 전문가

- 프로젝트에서 자신의 활동 범위가 개발이 아닌 애플리케이션 도메인인 구성원

- 단순히 불특정 다수의 사용자가 아니라 주제에 대한 깊은 지식을 갖추고 있음

- 도메인을 이해하는데 부자연스럽고 부정확한 용어 및 구조에 반대 의사를 표명해야 한다.

 

개발자

- 프로젝트에서 자신의 활동 범위가 개발인 구성원

- 시스템을 서술적이고 기능적인 용어로 이해하고 토론할지는 모르지만 전문가들의 언어에 담긴 의미는 알지 못한다.

- 개발자는 설계를 어렵게 만드는 모호함과 불일치를 찾아내는 데 촉각을 곤두세워야 한다.

 

자산화

진행된 이벤트 스토밍을 자료로 남긴다.

온라인으로 진행할 경우 Miro 를 이용한다.

DDD 세레나데 2주차에 참여한 이벤트 스토밍 일부분


참고 자료

 

DDD(Domain-Driven Design) 세레나데

 

edu.nextstep.camp

'개발 & 방법론 > DDD' 카테고리의 다른 글

바운디드 컨텍스트(BOUNDED CONTEXT)  (0) 2021.12.16
유비쿼터스 언어(UBIQUITOUS LANGUAGE)  (0) 2021.12.15
테스트를 통한 코드 보호  (0) 2021.10.15
레거시 코드, 빈약한 도메인 모델(Anemic Domain Model)  (0) 2021.10.06
도메인 주도 설계(Domain Driven Design)란?  (0) 2021.10.05
    '개발 & 방법론/DDD' 카테고리의 다른 글
    • 바운디드 컨텍스트(BOUNDED CONTEXT)
    • 유비쿼터스 언어(UBIQUITOUS LANGUAGE)
    • 테스트를 통한 코드 보호
    • 레거시 코드, 빈약한 도메인 모델(Anemic Domain Model)
    loop-study
    loop-study
    오늘도 공부하자

    티스토리툴바