Skip to content

Commit 25479b3

Browse files
committed
Write [Technology] Post " DDD 세레나데 7기 1주차 (feat. 이벤트 스토밍) "
- 해당 글과 관련된 이미지 추가
1 parent 3de6153 commit 25479b3

7 files changed

+181
-1
lines changed

_posts/2024-05-01-Geultto-9th-Retrospective.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ author: devFancy
6363
- (스터디) `TIL` - 오늘 하루에 `IT`와 관련된 기술/협업에 대한 걸 정리하고 공유하는 스터디 / 2023.12 ~ 현재 진행중
6464
- (스터디) `포폴-이력또` - 한달 간의 이력서와 포트폴리오를 다듬으면서 다양한 직무간의 사람들이 서로 피드백하는 스터디
6565

66-
(`백엔드/인프라 빌리지 반상회`, `TIL`, `포폴-이력또`에 대한 자세한 후기는 [2024년 1분기 회고](https://devfancy.github.io/2024-1-Retrospective/)에 작성해두었어요)
66+
(`백엔드/인프라 빌리지 반상회`, `TIL`, `포폴-이력또`에 대한 자세한 후기는 [2024년 1분기 회고](https://devfancy.github.io/1th-Retrospective/)에 작성해두었어요)
6767

6868
`커피챗`은 회사 도메인/직무/커리어 목표/취미 등 다양한 주제로 대화를 나누고 있어요.
6969
오프라인으로 커피챗을 하면서, '**본인의 삶과 자기개발에 열정적이고, 재밌게 사시는 분들이 많구나**'를 느꼈어요. 그리고 커피챗에서 만난 분들이 성격과 마인드가 다 좋으셔서 '어떻게 다 이런 분들만 있으시지?' 라는 생각에 많이 놀랐어요.

_posts/2025-01-19-ETC-Sipethon-Slackbot.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ author: devFancy
1515
저는 이번 SIPE 3기의 사이프톤에서 커뮤니티에 작은 기여를 하고자 `슬랙봇` 개발을 주제로 참여하게 되었습니다.
1616
이번 글에서는 슬랙봇을 개발하게 된 이유와 진행 과정, 그리고 사이프톤을 마치고 난 느낌을 기록하고자 이 글을 작성하게 되었습니다.
1717

18+
19+
---
20+
1821
## 슬랙봇을 만드게 된 이유
1922

2023
SIPE 3기 활동에서는 6주 단위로 진행되는 1차 및 2차 미션이 있으며, 2주마다 오프라인 모임도 진행됩니다.
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
---
2+
layout: post
3+
title: " DDD 세레나데 7기 1주차 (feat. 이벤트 스토밍) "
4+
categories: Technology
5+
author: devFancy
6+
---
7+
* content
8+
{:toc}
9+
10+
> 이번 글은 [DDD 세레나데 7기](https://edu.nextstep.camp/c/GwN2MSqv)의 1주차에 대한 필자의 자극히 개인적인 후기입니다. 혹시 문제가 되는 부분이 있다면, 언제든 말씀해 주시면 감사하겠습니다. ☺️
11+
12+
13+
---
14+
15+
## Prologue
16+
17+
2023년, 2024년에 상반기까지는 `코드` 에 집중해서 그런지, 2024년 하반기부터는 `코드` 보다는 `설계` 쪽에 관심이 생겼다.
18+
19+
그래서 '설계를 어떻게 하면 잘할 수 있을까?'에 대해 스스로 고민을 하면서 처음에는 `멀티 모듈`에 대해 먼저 공부를 하게 되었다.
20+
21+
`멀티 모듈`과 관련된 영상을 보면서 현업 개발자분들이 왜 사용하고 어떤 이점이 있는지를 알게 되면서 이와 관련된 글을 블로그에 작성한 바 있다.
22+
23+
(멀티 모듈과 관련해서 작성한 글 - [Kotlin, SpringBoot 기반으로 멀티 모듈 설계와 적용하기](https://devfancy.github.io/SpringBoot-Multi-Module/))
24+
25+
> 멀티 모듈에 대해 도움이 되었던 대표적인 영상과 자료는 아래와 같습니다. 이 외에도 다양한 영상과 자료를 참고했으나 이 글에서는 중요한 부분이 아니므로 생략했습니다.
26+
27+
* [[우아한 기술블로그] 멀티모듈 설계 이야기 with Spring, Gradle](https://techblog.woowahan.com/2637/)
28+
29+
* [[Github] spring-boot-kotlin-template](https://github.com/team-dodn/spring-boot-kotlin-template)
30+
31+
* [[Youtube] SpringBoot + Kotlin 멀티 모듈 구성 - 단일모듈에서 멀티모듈로 변경해보기 #1](https://www.youtube.com/watch?v=PdofVTuM-tE&list=PL8RgHPKtjlBh-LU_yUxFfIq_flizPm_vZ&ab_channel=제미니의개발실무)
32+
33+
* [[Youtube] 실전! 멀티 모듈 프로젝트 구조와 설계 | 인프콘 2022](https://www.youtube.com/watch?v=ipDzLJK-7Kc&ab_channel=인프런inflearn)
34+
35+
멀티 모듈에 대해 이론적으로나마 어떤 내용인지는 이제 알게 되었다. 그런 다음에 'IT 회사는 현재 시점으로 지난 3년간 어떤 설계에 관심을 가지고 있을까?'에 대한 궁금증이 생겼다.
36+
37+
그 결과 흔히 알고 있는 여러 IT 회사에서 `도메인 주도 설계`(Domain Driven Design)을 현업에서 사용하는 것을 찾게 되었다. (이후 아래부터는 도메인 주도 설계를 `DDD`라는 단어로 표현하겠다)
38+
39+
> DDD 관련 영상과 자료들은 아래와 같습니다. (`최신순` 으로 내림차순 정렬) 이 외에도 다양한 영상과 자료가 있습니다.
40+
41+
* [[올리브영 테크 블로그] 10년 된 레거시를 현대화하다 - Part.2: 매장 도메인의 구현 여정](https://oliveyoung.tech/2025-01-24/store-service-journey-2/)
42+
43+
* [[올리브영 테크 블로그] 10년 된 레거시를 현대화하다 - Part.1: 도메인 분리의 첫걸음](https://oliveyoung.tech/2025-01-24/store-service-journey-1/)
44+
45+
* [[우아콘 2024 영상] DDD 그거 그렇게 하는 거 아닌데](https://www.youtube.com/watch?v=sLG5n_pXWK0&ab_channel=우아한테크)
46+
47+
* [[컬리 테크 블로그] DDD와 MSA 기반으로 좋은 서비스 개발하기](https://helloworld.kurly.com/blog/ddd-msa-service-development/)
48+
49+
* [[kakao tech] 추천팀의 DDD 도입기](https://tech.kakao.com/posts/555)
50+
51+
* [[Youtubr] ㄷㄷㄷ: Domain Driven Design과 적용 사례공유 / if(kakao)2022](https://www.youtube.com/watch?v=4QHvTeeTsj0&ab_channel=kakaotech)
52+
53+
## DDD 세레나데 7기 신청
54+
55+
이전에 `DDD` 라는 단어를 많이 들어봤지만 이론/실무적으로 사용해 본적이 없어서 한번 경험해보고 싶다는 생각이 들었다.
56+
57+
그런데 정말 우연하게도 `DDD` 관련 강의가 넥스트스텝에서 존재한다는 걸 지인을 통해 알게되었고, 해당 강의가 나왔을 때 신청하게 되었다.
58+
59+
알고보니, 이전에 필자 봤던 우아콘 2023, 2024 영상에서 나온 재성님이 해당 강의를 진행해서 그런지 더 신뢰가 갔다.
60+
61+
(해당 강의비가 99만원이라는 사실을 알고 난 뒤, 고민을 많이 했지만 미래의 '나' 자신에게 투자한다는 생각으로 결제를 하게 되었다. 내돈내산 🥲)
62+
63+
어느 강의보다 비쌌기 때문에, 무조건 열심히 들어야 겠다는 다짐을 하게 되었고 해당 강의가 끝난 이후에도 'DDD 세레나데 7기 강의'에 대한 후기글을 남기려고 한다.
64+
65+
이번 글은 1주차에 있었던 부분들에 대해 간단히 배웠던 점을 정리하고자 한다.
66+
67+
> 앞으로 해당 강의를 진행하면서 수행한 미션들은 [깃허브](https://github.com/devFancy/kotlin-java-playground/blob/main/system-design/ddd-serenade/README.md)에 업로드할 예정입니다.
68+
69+
## 1주차
70+
71+
1주차 때는 해당 강의에 대한 과정을 어떻게 진행하는지, 그리고 강의를 듣는 수강생이 어떻게 임해야 하는지에 대해 강의를 진행하는 재성님이 이해하기 쉽게 자세히 알려주셨다.
72+
73+
또한, DDD 관련 기술적 지식을 알려주기도 하지만 참여자가 해당 강의를 듣고 실무에 적용하도록 하기 위해 주차별로 미션이 주어진다는 점이다.
74+
75+
해당 미션에 대한 진행 방법과 미션을 진행하는 과정 속에 `온라인 코드 리뷰`가 있고, `리뷰어` 분들은 대부분 해당 강의를 이전에 수강했던 분들이셨다.
76+
77+
뿐만 아니라, 해당 강의에 도움이 되는 영상과 자료들도 추천해주신 것도 되게 감사했다. 해당 강의를 꼼꼼히 준비하신 게 들을 수록 느껴졌다.
78+
79+
### 0단계: JUnit 5 학습
80+
81+
해당 강의에 대한 과정을 전반적으로 알려준 뒤, 마지막 시간에는 `Junit 5`에 대해 재성님이 직접 Java 언어로 어떻게 작성하는지 알려주었고 해당 코드 부분을 따라가면서 학습했다.
82+
83+
해당 부분에 대한 깃허브 PR은 아래와 같다.
84+
85+
* [Step0: 0단계 JUnit5 학습 및 관련 테스트코드 작성](https://github.com/next-step/ddd-legacy/pull/725)
86+
87+
아래부터는 필자가 단계별로 미션을 진행했던 후기이다.
88+
89+
### 1단계: 문자열 덧셈 계산기
90+
91+
1단계는 "문자열 덧셈 계산기"로 해당 주제에 맞게 코드를 작성하고 PR를 보내서 리뷰어분으로부터 코드 리뷰를 받게 된다. (해당 리뷰어의 PR 승인을 받게되면 미션을 완료했다는 결과이다)
92+
93+
* 1단계에 대한 미션 요구 사항은 [1단계 요구사항](https://github.com/devFancy/ddd-legacy/blob/devfancy/1단계_요구사항.md) 에서 확인할 수 있다.
94+
95+
1주차이고 해당 주제가 간단해서 그런지, 초반에는 세세한 부분 보다는 구현에 집중해서 PR를 제출했다. 하지만 리뷰어분의 피드백은 내 생각과 달랐다.
96+
97+
아무리 쉬운 미션이라도 꼼꼼하게 작성하는 걸 원하셨고, 강의를 진행하시는 재성님 역시 '매주 전달받은 미션을 진지하고 꼼꼼하게 진행해주셨으면 한다'와 비슷한 메시지를 전달 받은 후에는 제대로 임하게 되었다.
98+
99+
그래서 리뷰어분의 피드백이 논리적으로 맞다면 받아들이고, 해당 코드(or 문서) 부분을 수정하고 다시 리뷰를 보낸다. 그리고 다시 리뷰를 받으면서 리뷰어분이 만족할 때 까지 이 과정을 반복했다.
100+
101+
이 과정에서 단일 책임 원칙, 배열 대신 컬렉션 활용, 일급 컬렉션, Java 16 이후에 새로운 기능들에 대해 알게 되었다.
102+
103+
그 결과, 해당 1단계 미션을 성공적으로 끝냈다. (해당 부분에 대한 깃허브 PR은 아래와 같다)
104+
105+
* [[PR] 1단계 - 문자열 덧셈 계산기](https://github.com/next-step/ddd-legacy/pull/764)
106+
107+
### 2단계: 요구 사항 정리
108+
109+
2단계는 해당 강의에서 수행하는 최종 미션 주제인 `키친 포스`에 대해 요구 사항을 작성하는 미션이다.
110+
111+
* 2단계에 대한 미션 요구 사항은 [2단계 요구사항](https://github.com/devFancy/ddd-legacy/blob/devfancy/2단계_요구사항.md) 에서 확인할 수 있다.
112+
113+
이번 2단계 미션에서 필자가 고민했던 부분은 '요구 사항을 어떻게 정리해야 하면 좋을까?' 였다.
114+
115+
초반에는 비즈니스 로직 순서대로 작성해보았지만, 필자가 아닌 제 3자가 보기에 이해하는 부분과 깔끔하게 정돈되지 못한다고 판단했다.
116+
117+
그래서 `도메인별 API` 기준으로 재구성해서 요구 사항을 작성했고, 이 부분에 대해 PR를 작성하면서 리뷰어분의 의견을 듣고 싶어서 해당 내용을 작성했다.
118+
119+
리뷰어님의 의견을 간단하게 정리하면 아래와 같다.
120+
121+
* **개발 실무진들 간 도메인 지식을 공유하는 목적**이라면 `도메인별 API` 기준으로 요구 사항을 작성한다. 도메인 단위로 요구 사항을 명확하고 체계적으로 표현할 수 있기 때문이다.
122+
123+
* 그게 아니라 **다른 직무(기획자나, 디자이너 또는 상위 직책자)를 위한 문서**라면 `유저 시나리오`를 기준으로 요구 사항을 작성한다. 유저의 액션과 그에 따른 흐름을 한 눈에 파악할 수 있기 때문이다.
124+
125+
해당 리뷰어님의 의견을 듣고, 필자가 생각했던 부분과 거의 일치해서 신기하기도 했고, 해당 의견을 자세히 알려주셔서 정말 감사했다.
126+
127+
이 외에도 의견 뿐만 아니라 다양한 피드백을 아래 PR에 남겨주셨는데, 필자가 생각한 그 이상으로 도움받은게 많아서 정말 감사했다. (해당 리뷰어님이 이후의 단계들도 이어서 피드백 해주시면 좋겠지만, 강의 특성상 단계별 리뷰어분이 랜덤으로 바뀌어서 아쉬웠다 😭)
128+
129+
* [[PR] 2단계 - 요구사항 정리](https://github.com/next-step/ddd-legacy/pull/790)
130+
131+
### 오프라인 모임: 이벤트 스토밍
132+
133+
2월 1일 토요일에는 처음으로 오프라인으로 진행하게 되었다.
134+
135+
선릉역에 있는 우아한 테크코스에서 오후 2시부터 6시까지 약 4시간 동안 진행했는데, 여기는 글또 10기 백엔드/인프라 반상회때도 온 적이 있어서 친숙한 공간이기도 했다.
136+
137+
![](/assets/img/technology/DDD-Week1-Review-And-EventStorming-1.png)
138+
139+
해당 오프라인 모임을 진행하기 전에 재성님이 슬랙에 해당 주제와 비슷한 영상을 추천해 주셔서 필자는 미리 보고 왔다.
140+
141+
* [[우아콘 2023] 이벤트 스토밍 인 액션: 이벤트 스토밍 소개와 적용 방법](https://www.youtube.com/watch?v=gihxS6eE1DM&ab_channel=우아한테크)
142+
143+
* [KCD 2020 [Track 2] 도메인 지식 탐구를 위한 이벤트 스토밍 Event Storming](https://www.youtube.com/watch?v=hUcpv5fdCIk&ab_channel=OpenUP-오픈업)
144+
145+
![](/assets/img/technology/DDD-Week1-Review-And-EventStorming-2.png)
146+
147+
필자는 `이벤트 스토밍`을 위의 영상을 이전에도 봤고 실제로 3번 정도 적용한 경험이 있어서 그런지, 4시간이면 충분히 할 수 있겠다라는 생각이 들었다.
148+
149+
(이번 오프라임에서의 이벤트 스토밍의 목표는 영상에 있던 모든 걸 적용하지 않고, 4시간동안 1-2단계만 진행하는 것으로 했다)
150+
151+
초반에는 `도메인 이벤트` (주황색)으로 최종 미션 주제인 '키친 포스'에 대해 작성했고, 이후에는 시간순으로 정렬하는 부분과 도메인 기준으로 나누면서 정해진 시간안에 끝마칠 수 있어서 뿌듯했다.
152+
153+
이벤트 스토밍을 작성할 때 중간마다 드라이버와 내비게이터를 수시로 바꾸면서 진행하게 되었는데, 이때 두 가지의 역할에 대해 제대로 알게되었다.
154+
155+
> 1단계 - `도메인 이벤트` 로 작성
156+
157+
(아래는 1단계를 적용한 결과이다)
158+
159+
![](/assets/img/technology/DDD-Week1-Review-And-EventStorming-3.png)
160+
161+
> 2단계 - 타임라인 적용(시간순 / 왼 -> 오, 위 -> 아래), 이외에 핫 스폿, 액터, 시스템 적용
162+
163+
(아래는 2단계를 적용한 결과이다)
164+
165+
![](/assets/img/technology/DDD-Week1-Review-And-EventStorming-4.png)
166+
167+
이벤트 스토밍 영상을 만들어주신 재성님을 직접 볼 수 있어서 영광이였고, 해당 오프라인에 참가할 수 있어서 감사했다. 기회가 된다면 회사에 적용하고 싶고 만약 그렇게 된다면, `퍼실리테이터` 역할을 맡고 싶다.
168+
169+
(퍼실리테이터 역할 뿐만 아니라 이벤트 스토밍에 관심이 있거나 알고 싶으면 위의 영상을 참고해 주시면 감사하겠다)
170+
171+
## Review
172+
173+
1주차는 설 연휴가 끼어있어서 그런지, 필자에게는 여유가 많지 않았다.
174+
175+
그래서 가족 또는 지인과 시간을 보내는 요일에도 여유 시간이 생길 때마다 노트북을 열어서 해당 미션을 수행했고, 주말에도 카페에 가서 이어서 진행했던 기억이 남았다. (리뷰어님 역시 마찬가지로 연휴 기간 동안 피드백을 빠르게 남겨주셔서 감사했다)
176+
177+
아직 1주차 미션의 마지막 3단계인 '테스트를 통한 코드 보호'도 남아 있어서, 다음 2주차 전까지 최대한 열심히 작성해서 좋은 인사이트와 지식, 경험을 쌓으려고 한다.
11.3 MB
Loading
10.4 MB
Loading
10.1 MB
Loading
11.9 MB
Loading

0 commit comments

Comments
 (0)