Transcript of 이벤트 스토밍 인 액션: 이벤트 스토밍 소개와 적용 방법 #우아콘2023 #우아한형제들
우아한테크
0:00[음악]0:07안녕하세요 이벤트 스토밍 인액션0:10이벤트 스토밍 소개와 적용 방법의0:13발표를 맡은 우한 형제들 테크코스0:16교육의 발실 클라이언트 교육 팀의0:22박재성입니다 저는 현재 우한0:24형제들에서 개발자 및 교육자로0:26활동하고 있으며 주로 코틀린과0:29스프링프레임 를 사용하는 서버0:30개발자입니다 또한 우한 테크 코스의0:33교육 및 운영을 담당하고 있으며0:35모바일 안드로이드 교육분야의 캡틴도0:38담당하고 있습니다 저는 평소 도메인0:40주도 설계에 관심이 많아서 지속적인0:43공부와 도입을 주변에 이제 적극적으로0:45홍보하고 있는데요 오늘 발표도 그0:48일환이다라고 보실 수가 있겠습니다0:52본격적인 발표를 하기에 앞서서 본0:54발표는 이벤트0:58스토밍이란 생각하는 분 그리고 도메인1:01주도 설계에 대한 기본적인 이해와1:03바운더리 컨텍스트 애그리거트 도메인1:06이벤트가 무엇인지 아는 분 지금은1:08무엇인지 모르겠으나 나중을 위해 미리1:11듣는 분을 대상으로 준비를 하였습니다1:14물론 이벤트 스토밍을 도메인 주도1:16설계만을 위한 개발자를 위한 도구가1:18아닌 여러 가지 문제 식별과 해결에1:21좋은 도구이며 다른 용도로도 활용할1:24수가1:26있습니다 여러분은 스토밍이란 하면1:28어떤게 떠오르시나요1:33비구름을 몰고 오는1:35폭풍이 떠오를 수도 있겠죠 그죠 매우1:39흐리고 비가 오고 번개가 마고1:42치는 그런1:45환경이죠 그다음은 브레인스토밍1:48스토밍을 생각해 볼 수도1:51있습니다 브레인스토밍의1:58스토밍이란 있는 많은 아이디어를2:02쏟아낸다라고 해서 이런 스토밍이라는2:04단어를 사용하고2:06있습니다 오늘 제가 소개해드릴 내용은2:09이벤트 스토밍 대한 내용입니다 어2:13이벤트 스토밍을 간략하게 소개를 해2:16드리자면 프로젝트에 참여하는 모든2:19이해 관계자가 한 자리에 모여 도메인2:22지식을 교환하고 용어를 통일하고 현재2:26프로젝트 내 해색 지대를 파악하여2:29향후 의사소통 비용을 절감하는2:31워크숍이다라고 정의를 할 수가2:35있습니다 왜 해야 할까요 혹시 이런2:38경험을 해 본 적이2:40있나요 사장님 업주 셀러 등 사람마다2:45똑같은 말을 다르게 불러서 의사2:47소통이 어려운2:48거죠 혹은 배달에 관한 정책 회의에2:52참석하여 어 뭔가 이해가 안2:54되는데라고 생각했더니 알고 보니 서로2:57다른 배달에 간의 에 이야기하고 있던3:00경우 프랜차이즈 본사 메뉴판 수정과3:04지점 메뉴판 수정의 차이점을 설명하기3:06어려웠던3:07경우 그리고 배달비를 수정해 달라는3:10요청을 받았는데 배달 팁을 변경해서3:14급하게 핫픽스를 해야했던3:17경우이 모든 사례가 가상 사례처럼3:20느껴지시겠지만 실제로 배달의 민족3:23서비스에서 자주 발생하는3:26문제입니다 왜 이런 일이 발생했을까요3:30유사한 용어가 혼용되어 사용되어서3:33그리고 도메인 요소 간의 관계나3:36흐름을 정확하게 파악하지 못했기3:38때문에 정확한 도메인 용어에 대한3:40이해가3:42부족하여 이런 현상들이 발생했다고 볼3:45수가3:48있겠죠 근본적인 원인을 짚어보자면3:52크게 두 가지 원인이 있을 것3:53같습니다 일단 첫 번째로는 사일로3:56내부에서만 전문가인 도메인 전문가가4:00있겠죠 물론 그렇다고 사일로가 마냥4:03나쁜 건 아닙니다 사일로는 팀의4:06전문화가 진화된 형태이기 때문에 마냥4:09사일로가 나쁘진 않지만이 사일로4:11내부에서만 안에서 관계된 것들에4:14대해서만 전문가인 분들이 계실 수도4:16있고요 혹은 TPS 든가 등과 같은4:20이런 성능적인 문제에만 관심을 가지고4:23그니까 정량적인 문제에만 관심을4:25가지고 도메인에 거의 또는 전혀4:27관심이 없는 동료 개발자 근본적인4:30원인이라고 할 수가4:32있습니다 이런 두 가지의 원인이4:35모여서 복합적인 부작용을 만들어4:37내는데요 모든 사람이 동일한 개념에4:40대해 다른 용어를 사용한다거나 다른4:43개념에 대해 동일한 용어를 사용하는4:45경우 혹은 이러한 복잡한 상황 속에서4:48혼자 문제를 해결하려고 할 때4:50사일로의 또 다른 속성이 방해를 하게4:53되죠 바로 도메인 지식이 고르지 않게4:55분배되어 여러 도메인 지식이 필요한4:58복잡한 문제를 해결하기 위 필요한5:00지식을 수집하는 것이 쉽지 않기5:03때문입니다 예를 들어 하나의 기능을5:05개발하기 위해 동료에게 질문을 한다고5:09해볼게요5:10님 제가 어떤 기능을 개발하려고5:13하는데 혹시이 기능에 대한 억을 알고5:16계신가요라고 했더니 동료 개발자는5:20뭐라고 답변을 할까요 아 그건 동료5:23개발자님이 알고5:25계세요 그러 이제 동료 개발자를5:28찾아갑니다 개발자 B 뭐라고 답변을5:31할까요 동료 개발자가 알고 있어요라고5:35답변을 합니다 그럼 이제 동료 개발자5:38시어5:39찾아갑니다 근데 안 계세요 어디5:42가셨죠 좋은 곳으로 이직을 하셨겠죠5:45이렇게 문제에 대한 해결책을 찾기5:47위해 퍼즐 조각을 모으는데 엄청난5:50비용이 발생하게5:52되죠 그래서 이벤트 스토밍을 브란도의5:55법칙으로 유명한 이탈리아의 프로그래머5:58알베르토 리니가 제안한 복잡한6:02비즈니스 도메인을 빠르게 탐색하고6:04학습할 수 있는 워크숍입니다6:07클래스와 데이터베이스가 아닌 이벤트와6:10비즈니스 프로세스에 중점을 두며6:13코드를 없애 개발자뿐만 아니라 도메인6:16전문가와 함께 도메인 지식을 학습할6:18수 있게6:19합니다 워크숍 준비물은 간단한데요6:22테이블을 치운 큰 회의실에 실제 문제6:25해결과 관련된 모든 사람을 초대하고6:28커 종이 수많은 포스트 입과 마커만6:32있으면 됩니다 물론 이런 큰6:34회의실에는 창문 혹은 공기 청정기6:37같은게 당연히 있어야겠죠 그리고6:40당분을 보충할 수 있고 참여자들이6:42선호하는 간식 정도도 당연히6:45구비하는게 좋습니다 그리고 원활한6:48진행을 위해 퍼실리테이터가 필요한데요6:51이런 퍼실리테이터는 오크샵 참여자들이6:54학습과 모델링만 집중할 수 있도록6:56도와야6:57합니다가 이런 역을게 될까요 어떤7:01분이 퍼실리테이터의 역할을 맡게7:04될까요 이해관계자가 아닌 다른 분이7:07진행하면 굉장히 큰 도움이 됩니다7:10기본적으로 이해관계자가이 퍼실리테이터7:12역할을 맡게 되면 당장에 눈앞에 있는7:15도메인 지식이 이해가 되지 않으면 그7:17순간 워크숍은 멈추게7:20됩니다 그렇기 때문에 가급적7:22이해관계자가 아닌 분을 섭외하면7:25좋고요 근데 현실적으로 이런게 어렵죠7:28그렇기 때문에 현실적으로 다른7:29사람에게 진행을 맡길 수가 없다면7:31이해 관계자의 태도를 최대한7:33벗어버리고 원활한 진행에만 집중을7:36해야 됩니다 그래서 워크숍 설명과7:39더불어서이 발표를 보고 퍼실리테이터7:42역할을 맡고 싶은 분을 위해서 몇7:44가지 팁을 또 준비를 해 보았어요7:47일단 눈앞에 복잡한 도메인 지식을7:49이해하려고 노력하는 대신 참여자의7:52비언어적 의사소통 진행 상황 등을7:55파악하여 워크숍이 원활하게 진행될 수7:58있게도 는 것이 퍼실리테이터의8:01역할이라고 할 수가8:04있습니다 벽에 커다란 종이를 붙여놓고8:07그 위에 저희들은 포스트 있을 붙여8:09나갈8:10텐데요 이때 모든 사람의 생각을8:13허용하고 저희는 존중을 해 줘야8:15됩니다 그래야만 비즈니스 프로세스를8:18이해하는데 초점을 맞출 수가 있게8:21되겠죠 그서 이런 워크숍을 진행하게8:24되면 하루 종일 진행을 해야 된다8:26혹은 2박 3일 진행해야 된다 같은8:29를 하고 계실 수 있을 텐데요8:31가이라가 양평 같은 곳에 펜션을8:34잡아두고 그 안에 사람들을 가둬 놓고8:37이런8:40워크샵만을 진행하는 것보다 제8:43개인적인 경험으로는 준비 시간 정리8:46시간 등을 포함해 최대 네다섯 시간8:48정도 진행하는 것이8:50좋더라고요 그리고 참여자들에게 이벤트8:58스토밍이란 바로 워크숍을 진행할 수9:00있습니다 딱 여기까지만 설명하고9:03워크숍을 시작하는9:06거죠 왜 포스를 사용할까요 이벤트9:10스토밍을 핵심 원칙은 모든 참여자의9:13참여를 극대화하는 것이며 포스트를9:16사용하여 모든 사람이 적극적으로9:18참여할 수 있도록 합니다 포스트잇은9:21떼었다 붙였다 하기 쉽죠 그렇기9:24때문에 이동이 가능하며 틀린 경우에도9:26뗄 수가 있기 때문에 참여자의 부담을9:29줄여 줄 수가 있습니다 그리고9:31개발자뿐만 아니라 개발자가 아닌9:33분들도 함께하는 워크숍인만큼 uml9:36다이어그램과 같은 혹은 클래스9:39다이어그램과 같은 것들을 배우도록9:41강요해선 안 되겠죠 그리고 더군다나9:44코드를 작성하고 수정해서 배포를 하고9:47테스트를 하는 것보다 포스트를9:49변경하는게 아무래도 훨씬 더9:52저렴하겠죠 저희가 첫 번째로 만나게9:55되는 포스트 있은 바로 주황색9:56포스트인 도메인 이벤트인데요 도메인9:59이벤트는 주황색 포스트를 사용하며10:01도메인 전문가가 관심이 있는 어떤10:03사건을10:05뜻합니다이는 비즈니스상 의미가 있는10:07사건으로10:21해석하도록처럼 과거 시제를10:24사용합니다 잠깐 퀴즈를 하나 내볼게요10:27저희가 블로그 서비스를 운영하는10:29팀이라고 해보죠 그러면 글을10:33작성하였다라는 사건은 도메인10:35이벤트라는 것에는 이견이 없을 겁니다10:39맞을까요 우리는 블로그 서비스를10:42운영하는 팀이고 사용자가 글을10:45작성하였다는 비즈니스적으로 의미가10:47있는 것 같아요 그럼 사용자가 글을10:52조회하였습니다는 도메인 이벤트일까요10:54다시 말해 비즈니스적으로 의미가 있는10:58사건일까11:00정답은 그럴 수도 있고 아닐 수도11:04있습니다 이게 어떤 말이냐면 사용자가11:07단순히 정보를 획득하기 위해 조회를11:11했다라고 하면 그거는 비즈니스적으로11:14의미가 있는 사건이 아닐 수도 있어요11:16그런데 사용자가 글을11:19클릭함으로써 조회수가 올라가야11:21된다거나11:22사용자가 클릭한 글과 관련된 추천글을11:26보여줘야 된다거나11:29에 있는 인벤토리에 광고를 보여 줘야11:32한다거나 등과 같은 추가적인 액션이11:35발생을 한다고 하면 이거는11:37비즈니스적으로 의미가 있는11:39사건이다라고 볼 수11:41있겠죠 그만큼 도메인 이벤트는11:44여러분들이 어떤 서비스를 하고 있냐에11:47따라서 도메인 이벤트가 될 수도 있고11:49되지 않을 수도11:52있습니다 그래서 첫 번째 단계에서는11:55거래가 생성되었다 거래가11:57성공하였다 와 같은 각자가 알고 있는12:01도메인 이벤트를 작성을 해야12:04됩니다 이때 중요한 거는 각자가12:07작성한 이벤트는 볼 수 있지만 토론을12:09시작해선 안 돼요 토론을 시작하지12:12말고 자신이 옳다고 생각하는 방식으로12:15기록을 해야12:17됩니다 제 경험상 피자 두판 규모의12:21팀이라면 약 50분 동안 진행하면12:23충분하고요 1단계는 그리고 일반적으로12:27200개 정도의 이벤트 포스티이12:30붙더라고요12:32그리고 이거는 저의 그 수많은 시행12:35착고 끝에 도출한 쉬는 시간인데요 412:3850분 동안 진행했다면 15분 정도12:41쉬는게 좋습니다 제가 예전에 10분간12:43쉬워 봤더니 사람들이 쉬는 시간이12:45짧다라는 의견이 많아서 이제는 제가12:48데이터 기반으로 15분이라는 아주12:52확실한 쉬는 시간을 도출을 해12:55냈고요 이제 이렇게 이벤트 스토밍12:57워크숍을 진행하면서 장하는 몇 가지12:59안티 패턴을 소개를 해 드릴 겁니다13:02첫 번째 패턴으로는 위원회가 있는데요13:06여러분들께 포 붙이세요 작성하고13:08붙이세요라고 말하면 쉽게 나서는13:11분들이 없어요 일단 첫 번째로 그리고13:13나서기 전에 내가 붙이는 내가13:16작성하는 포스테이 맞는지 틀린지를13:18검증하기 위해 335 모여 논의를13:21하기13:22시작합니다 어 이게 이벤트가 맞을까요13:25이게 도메인 이벤트가 맞을까요 당연히13:27이런 논 하기 시작하면 결국 우리가13:31이벤트 스토밍 워크숍을 통해서 여러13:33가지 모순 문제점을 발견하려고이13:36워크숍을 하는 건데 그런 것들이13:41감춰지는 모든 당사자의 동의를13:43받아야지만 결정이 되기 때문에 여기서13:45엄청난 시간이 소유될 수 있습니다13:48그렇기 때문에 퍼실리테이터는 이런13:50위원회가 생긴다면 그걸 적극적으로13:53깨뜨려야13:54됩니다 이렇게13:5650분간 혼란스 을 하고 나면 이제14:00두 번째 단계로 넘어가게 됩니다 물론14:02쉬는 시간 15분을 가지고요 두 번째14:05단계에서는 저희가 타임라인을 적용을14:07해야 되는데요 이때 정말 많은 웅성임14:11혼돈이 예상되는14:13시간입니다 모든 도메인 이벤트를14:15올바른 타임라인으로 정렬하고 실제로14:19중복되는 이벤트를 제거를 해야14:20되는데요 이때 동일한 용어이지만 다른14:23개념일 수 있고요 그렇다 보니까14:26중복임을 100% 확신할 때 제거를14:28해야겠죠 그래서 왼쪽에서 오른쪽으로는14:31시간의 흐름을 위에서 아래로는 평행한14:35시간을 표현할 수가 있습니다 전체14:38이벤트14:39스토밍이란 했고 1단계에서 1한시간14:42정도로 사용한다고 했을 때 남은 세네14:44시간을이 2단계 모두 속게 돼요14:47그래서 가장 중요한 작업이며 약간의14:50당분 보충이 필요할 수 있겠죠 그래서14:52이때를 위해 저희가 아까 간식을 사둔14:55거예요 그리고 가만히 앉아 있을14:57시간이 없습니다 퍼실리테이터는15:01참여자들을 열심히 격려를 해야 돼요15:04그래서 이렇게 타임라인을 정리할 때15:06저만의 팁을 한 가지 드리자면15:09드라이버와 내비게이터를 정하는 것이15:11좋습니다 드라이버는 포스트들을15:14옮겨가며 붙이는 역할을 하게 되고요15:17그리고 네비게이터는 드라이버에게15:20포스트잇을 여기서 저기로 옮기세요 와15:24같은 지시를 뒤에서 하게 됩니다15:26물론이 과정에서 드라이버가 또 반대로15:29먼저 질문을 던질 수 있겠죠 예를15:31들어서 가장 첫 번째로 와야 될15:33이벤트는 무엇일까요 혹은 이런15:36이벤트는 여기에 와도 될까요 와 같은15:39질문들을 내비게이터 할 수 있겠죠15:41그래서 상황에 따라서 이미 잘 알고15:44있는 사람에게 첫 번째 드라이버를15:46맡기거나 아니면 도메인 지식을 배워야15:49할 사람에게 드라이버를 맡길 수가15:51있습니다 그리고 이런 드라이버는 본인15:54스스로 생각하였을 때 충분히15:56기여했다고 판단되면 역할을 유적15:58교체해주시면16:00돼요 여기서 또 두 가지 안티 패턴을16:03만나게 됩니다 첫 번째는 스포츠16:06카입니다 스포츠카는 본인이 드라이버가16:09아님에도 불구하고 많은 걸 알고 있다16:12보니까 현재 포스트 있을 정리 중인16:14타임라인을 정리 중인 곳에서 포스를16:17고치는 정렬하는 행위를 하는게 아니라16:20저편 끝에서 혼자서 정리를 막 하고16:23있습니다 대체로 제 경험상16:25팀장님들이 답답한 나머지 스포츠카16:29패턴을 따르고 계시고요 두 번째로는16:32자율 주행입니다 드라이버가16:34네비게이터에 묻지 않고 또 스스로16:37정리를 하고 있는 거예요데 역시나이16:40패턴 또한 팀장님들에게16:42등장합니다 그래서 우리들은 스포츠카와16:45자율주행이 패턴을 굉장히 경계를16:48해야겠죠 또한 스포일러 패턴이16:51있습니다 스포일러 패턴은 굉장히16:53냉소적인 분이에요 뭐 MBTI16:56따르면인 사람 에 해당될 수도 있죠17:00아 물론17:05저는입니다 그래서 이런 분들은17:07머릿속에 이미 도메인 지식이 있으니까17:09우리가 이런 행위를 하는게 무슨17:11의미가 있나요라는 말씀을 하시면서17:13조용히 노트북을 시죠 그러면서 각종17:17일들을 하고 계신 분들이17:19대부분입니다이 패턴입니다 그러면서 어17:22이미 문서를 잘 작성해 두었는데 그냥17:25그거 읽어보세요 와 같은 말씀을17:28분들이죠 그래서 이런 분들에게도17:31적극적으로 워크숍에 참여할 수 있도록17:32저희가 격려를 해 줘야17:35돼요 그래서 타임라인을 정리하다 보면17:38자연스럽게 드라이버와 내비게이터가17:40교체되어 그러면서 모두가 차례대로17:43파편화된 도메인 지식을 모는데17:46기여하게 됩니다 그리고 도메인에 대한17:49이야기가 점점 더 깊어지기 시작하겠죠17:54그래서 지금 보시는 사진처럼 많은17:56분들이 이제이 워크에 두에서 몰입해서18:00다양한 이야기를 나누고 있는 그런18:02사진이라고 볼 수가 있습니다 참고로18:05이런 사진을 찍는 역할 또한18:07퍼실리테이터 제가 하고 있어요 그리고18:11절대 자기적인 상황이 아니라 정말18:14자연스럽게 찍은 사진이라는18:17점을 강조하고18:20싶습니다 이렇게 타임라인을 정리를18:22하다 보면 많은 사람들이 이벤트를18:25붙여 놓은 상태기 때문에 이제는 질문18:29갈등 불평 불만 사항이 등장을 하기18:32시작합니다 각자가 평소에 가지고 있던18:35궁금증 이라던가 이건 왜 만들었는지18:38모르겠다 와 같은 불평 불만들이18:41등장을 하기18:42시작해요 혹은 어떤 사람은 a 용을18:46사용하는데 또 다른 사람은 B 아는18:47용을 사용하는 등 이런 갈등들이18:49등장을 하기 시작하죠 자 우리는 이런18:52갈등들을 그 자리에서 바로 해결을18:54해야18:55될까요 아니겠죠 왜냐하면 이벤트스토밍18:58은 매우 비싼 워크숍입니다19:01매우 비싸다라는 말은 프로젝트에19:04참여하는 모든 이해 관계자가 모여19:06있는 상태이고 이분들 나를 잡고19:09시간을 투자해서 오프라인 장소에19:11모여서 다른 업무를 보지 않고19:16워크샵만을 비쌀 수밖에 없어요 그렇기19:18때문에 당장 토론을 하지 않을 거예요19:21당장 토론을 하지 않고 자주색 포스트19:24있으로 이런 질문 갈등 불평 불만19:26사항을 기록을 할 겁니다19:29그리고 그것을 저희가 벽에 붙일19:31거예요 당장 문제가 해결되면 다시19:34포을 제거해도 되겠지만 해결이 되지19:37않는다면 그걸 그대로19:39둬야겠죠 그래서 스폰만 파악되기 해도19:43굉장히 의미 있는 오크샵이 완성이19:45됩니다 그리고 여기까지 보신19:48퍼실리테이터 분들 오크샵 시작하세요19:52여기까지만 알아도 시작하기 충분합니다19:55그리고 나중에 뒤에서 설명하겠지만19:57필요에 따라 자유롭게 포스 소개하고20:00추가하시면20:03됩니다 그래서 실제 타임라인을20:06정리하면서 스팟들이 붙기 시작하는데요20:10보이시죠 셀러 사장님 업주 중에20:13하나만 사용하자라는 메시지 라던가20:17상품 광고 캠페인의 뜻을 모르겠다20:20라던가 메뉴를 복사한다 이게 무슨20:24뜻인가요 같은20:26질문들이 스스로 것을 볼 수가20:31있습니다 이제이 단계를 진행하면서20:34핫스팟 외에 또 다른 포스트 있이20:37필요하게 됩니다 대표적으로 노란색20:39포스트인 액터와 분홍색 포스트인20:42시스템인데요 액터의 경우에는 단순히20:45사용자가 아니라 셀러 라이더 등과20:49같은 구체적인 페르소나를 설정하는20:51것이 도메인 지식을 탐구하는데 더 큰20:54도움이20:56되겠죠 또한 시스템은 은 외부20:59시스템을 의미함으로 일부 레거 시라가21:02혹은 마이크로서비스에 이르기까지21:04책임을 전가할 수 있는 모든 것에21:07해당합니다 예를 들어서 우리 서비스에21:09장애가 발생을 했어요 근데 우리가21:11모니터링을 해본 결과 로그를 지켜본21:14결과 우리 잘못은 아니에요 그러면21:17누구 때문에이 장애가21:19발생했을까요에 누구에21:21해당되는 외부 시스템들을 우리는21:24식별을 해야 됩니다 이렇게 액터와21:28템이 등장을 하기 시작하면 자연스럽게21:32우리가 막고 있는 일의 경계가 어지게21:35됩니다 우리가 막고 있는 일은 굉장히21:37범위가 넓어요 그렇기 때문에 팀 안에21:40다시 또 파트가 나뉘는 거고요 각21:42파트는 결국 하나의 사일로를 가지게21:45되죠 그러다 보니깐 같은 용어라21:47의미가 다르고 같은 대상이라도21:49지칭하는 용어가 다를 수가 있습니다21:52그래서 이런 명백한 언어의 불일치는21:55여러 개의 바운드리 컨텍스트를21:56나타내는 지표이기도 하고 요 혹은21:59일의 경계 자체를 여기는 a 파트가22:02맡아야 있다 혹은 이런 일은 B22:05파트가 맡아야 다 든과 같은 명확한22:07경계가 그어지고 시작합니다 어 참고로22:10운디드 텍스트라는 표현을 설명할 때22:13브리는 커피의 비유를 하더라고요22:17커피라는 것이 이탈리아에서는22:19에스프레소를 뜻하지만 미국에서는22:21에스프레소의 무한 아메리칸으로22:23뜻한다라는 표현을 사용하면서 바운더리22:26컨텍스트에 대한 이야기를 하고22:28있습니다 조금 더 바운드리 콘텍스트에22:30대해 설명을 드리자면이 경계라는 것은22:34우리가 실제 문제를 해결하기 위한22:37영역이라고 보시면 돼요 우리가 맡고22:40있는 문제는 매우 크기 때문에이 큰22:43문제를 몇 가지 작은 해결 영역으로22:46나눠야 되고이 해결 영역 안에서22:48우리는 문제를 해결한 다음에 그다음에22:51더 큰 문제를 해결을 하는 거죠 이게22:54바로 분할 정목 알고리즘이라고 볼22:57수가 있겠 습니다 그리고 실제로23:00도메인 이벤트가 발생하는 원인인23:02커맨드 또는 액션을 식별하기23:04시작합니다 그래서 사용자가 액터가23:07어떤 명령을 우리 시스템에게 내리게23:10되면 그 뒤에 어떤 이벤트가 발행되기23:13되는 거죠 그럼 사용자가 이런 액션을23:16일으키기 위해서 어떤 것이23:19필요할까요 바로 정보가 필요하겠죠23:22그래서 사용자가 결정을 내리는데23:24필요한 정보는 초록색 포스틱 사용23:28하고요 특정 정책으로 인해 발생한23:30도메인 이벤트의 결과가 이런 리드23:32모델에 어떻게 반영되는지를 우리는23:35눈으로 확인할 수가 있습니다 그래서23:37보통 클라이언트 개발자들이 많이 모인23:40팀에서는 이런 리드 모델 즉 초록색23:42포스트잇이 굉장히 많이 도출되는 것을23:45볼 수가 있어요 왜냐하면 그분들은23:48어떤 정책에 의해서이 UI 보여야23:51될지 말아야 될지를 굉장히 궁금해23:54하시거든요 그래서 이런 리드 모델이23:57등장을 하게 됩니다 그리고 제가23:59정책에 대한 이야기를 했는데 정책은24:01연보라색 포스테이 사용하거든요 그래서24:03주로 뭐뭐 할 때마다라는 단어로24:05시작합니다 그래서 도메인 이벤트와24:08커맨드 사이에 위치를 하게 되고요24:11어떤 이벤트가 발행이 되었을 때 예를24:14들어서 등록이 되었을 때 환영 정책에24:17의해서 우리는 웰컴 팩을 보내주게24:19되는 거죠 근데이 작업이 자동으로24:22이루어지든 수동으로 이루어지든이 모든24:25것들은 우리의 정책이다 볼 수가 있24:28습니다 많은 분들이 정책가 헷갈려24:31하는 것 중 하나가 바로이 비즈니스24:33규칙인데 비즈니스 규칙은 쉽게24:35말하자면 유효성 검사라고 볼 수24:38있고요 어렵게 말하자면 시스템이24:41일관성을 보장해야 될 트랜잭션24:44단이다라고 볼 수 있습니다 근데이24:46말이 너무 어렵죠 그 우리는 비즈니스24:48규칙이라고 부를게요 그래서 시스템이24:51기대하는 책임을 수행하면 일관성을24:52유지하는 다니고요 이런 일관성은 항상24:55참이어야 하는 속성을 유지함으로24:57으로서 달성됩니다 예를 들어서25:00장바구니 총합은 장바구니 담긴 상품의25:03가격 곱하기 수량의 합과 일치를 해야25:06되겠죠 어쩌면 당연하다 도메인25:09전문가에게는 당연하다라고 볼 수 있는25:11것들이 BNC 규칙으로 우리 눈에25:14가시화가 되기25:16시작합니다 이처럼 이벤트 스토밍을25:19진행하다 보면 여러 가지 색깔의25:21포스티이 등장을 하게 되죠 그래서25:23이런 포스트잇을 우리가 적절하게25:26사용하면 특히 지금 보시는 이런25:29범례를 이용해서 포스를 붙여 나가다25:32보면 자연스럽게 어떤 비즈니스25:35지식들이 도메인 지식들이 누락되었는지25:37발견을 하게 됩니다 그래서 이벤트25:39스토밍 워크숍의 처음이라면 이런25:42범례를 어딘가 벽에 붙여 두고 이걸25:45보면서 내가 어떤 것이25:48누락되었네요 돼요와 같은 식으로25:50역으로 추정하기 시작하면 어쩌면25:53누락된 다양한 도메인 지식을 발견할25:56수 있을 거예요26:00그래서 실제로 네다 시간 동안 진행한26:02워크숍의26:04결과물인데요 정말 멋지지26:06않나요 저는 약 3년 동안 이벤트26:09스토밍 퍼실리테이터로 우한 형제들에서26:1220개 이상의 팀과 함께 이벤트26:14스토밍 워크숍을 진행을 했는데요 처음26:16시작할 때는 저도 각 팀의 도메인을26:19이해하려고 노력했습니다 근데 그러다26:21보니까 진행이 안 되게 되고 그러다26:23보니까 아 퍼실리테이터는 도메인26:25지식을 알아서는 안되겠 라는 교훈도26:28얻게 되었죠 그래서 많은 시행 착오를26:31거쳐서 이제는 각 팀의 도메인 지식을26:33한기로 듣고 다른 한기로 흘리는26:36그리고 워크 진행에만 관심을 갖고26:38부지런히 사진을 찍는 전문적인26:41퍼실리테이터가26:43되었습니다 지금까지 보여드린 사진이26:45모두가 제가 찍은 사진들이에요26:50저 이벤트 소밍 워크에 대한 몇가지26:53사실과 오해를 준비를26:55해보았는데요 첫 번째로 이벤트 스토밍26:58워크숍은 온라인으로 진행한 것이27:00좋다에 대해서는 이벤트 스토밍을 직접27:03대면할 때 가장 효과적이다라고 말씀을27:06드리고 싶어요 이벤트 스토밍을27:08의사소통이 매우 중요한 워크숍인27:11온라인 환경에서는 몸집 언어라 음성27:14언어가 매우 제한적이죠 그렇기 때문에27:17이런 효과를 극대화하려면 오프라인에서27:19진행하는 것이 가장 좋고요 보통 이런27:23워크숍을 오프라인에서 하기 때문에이27:25워크숍이 끝나면 그 은 그 팀27:29회식이라고 그리고 참여자가 많으면27:31많을수록 좋다에 대해서는 이벤트27:33스토밍 최적 인호는 명에서 15명27:36아까 말씀드린 피자 두판 규모27:39더라고요 모든 사람이 적극적으로27:41포스트를 붙이고 토론을 해야 되는데27:44많은 사람들이 있게 되면 아까 안티27:47패턴 중 하나인 위원의 패턴이 굉장히27:49많이 등장을 하게 됩니다 그렇기27:52때문에 여러 세션으로 나눈다거나 혹은27:54참여자의 수를 제한해서 비참여자27:57에게는 다른 방식으로 도메인 지식을27:59전달하는 것이 좋습니다 그리고 많은28:02사람들이 참여하는 이런 소위 말하는28:04빅 피처 이벤트 스토밍을 진행하게28:06되면 이벤트 스토밍을 통해서 경계를28:08나눈 뒤 그 경계 안에 실제로28:11관여하는 사람들이 모여서 다시28:14프로세스 모델링 이벤트 스토밍을 하는28:16것이 좋습니다 그리고 많은28:19개발자분들이 하는 실수예요 여기에28:22상당수의 개발자분들이이 세션을 듣고28:24계시기 때문에 이걸 돌아가서 하게28:26되면 개발자만 있으면 된다라고 생각을28:29하세요 근데 프로젝트에 참여하는28:32다양한 사람들이 함께 할 때 시너지28:34효과가 발생을 하고요 이벤트 스토밍을28:37다양한 이해 관계자가 참여하고 다양한28:39관점을 공유할 때 비로소 의미가28:42있습니다 그래서 가능하면 최대한 많은28:45사람을 한 자리에 모아 각자가 해당28:47도메인에 대해 생각할 때 떠오르는28:49것을 자유롭게 표현하게 두셔야28:53돼요 그리고 알고 있다면 참여하지28:56않아도 된다 에 대해서는 이벤트28:58스토밍에는 도메인 전문가 비전문가가29:01모두 참여를 해야 됩니다 대부분 이런29:04워크숍에 참석하는 사람들은 도메인에29:06대해 궁금한 점이 있는 사람들이에요29:07예를 들어서 도메인을 처음 접하는29:10사람이라면 질문이 많겠죠 그렇기29:12때문에 워크숍은 단순히 질문만 하는29:14자리가 아니라 질문과 답변을 공유하는29:17자리입니다 그 저는 이제 어떤 말씀을29:20드리냐면 오크에 참여하는 분들에게29:22이미 잘 알고 있는 분들에게는 다시는29:25모르는 사람들이 날 찾 오지 않도록29:28모든 도메인 지식을 쏟아 내라라는29:31말씀을 드리고 있고 도메인 지식을 잘29:33모르는 분들에게는 다시는 저 사람을29:36귀찮지 않게 이번기에 모든 질문을29:39던져라라고 안내를 해 드리고29:41있어요 그렇다 보니까 한 팀에서29:44진행을 할 때 정산팀 이야기인데 그29:46팀에서 진행을 할 때는 실제 배달의29:49민족 서비스가 수기 정산을 하던29:51시절부터 역사를 쭉 읊어 주시더라고요29:55또한 도메인 전문가는 메타인지를 할29:58수 있는 아주 좋은 기회가30:00되겠죠 그리고 이런 자리에선 누군가가30:02일방적으로 설명해서 안30:04됩니다 모두가 적극적으로 질문하고 그30:08질문에 답해야 만 큰 그림을 그릴 수30:10있는30:11워크숍이 그래서 도메인 전문가가30:14일방적으로 포스팀을 어떤 설명을 하는30:16도구로 사용한다 이거는 적절하지30:19않다고 볼 수가30:20있겠죠 그리고 기획 초기 하는 것이30:22좋다에 대해서는 제 경험상 일정30:26수준의 기획이 나온 후에 진행하는30:27것이 좋더라고요 이벤트 스토밍30:30브라운필드 프로젝트를 이해하기 위한30:33워크숍으로 가장 효과적30:35이었고요 아무래도 아무것도 없는30:37상태에서이 워크숍을 진행을 하게 되면30:40프로세스에서 모호한 부분이 드러나는30:42건 좋지만 애매한 질문들이 쌓이기30:45시작합니다 이건 정책이 어떻게 돼요30:48저도 모르는데요 저도 모르는데요 같이30:50고민해볼까요 등과 같은 정책 논의로30:54번지게 돼요 그렇기 때문에 여러분들이30:57새로운 프로젝트에서이 이벤트 스토밍을30:59진행한다라고 하면 어느 정도 기획이31:02나온 상태에서 각자의 생각을 통일하는31:05목표로 기다렸다가 실시하는 것이31:09좋습니다 그리고 결과는 반드시31:11디지털화 해야31:13될까요 결과가 아닌 이벤트 스토밍31:15과정에 참여하는데 집중을31:18하세요 이벤트 스토밍을 결과를31:20만들어내는 자리가 아닌 그 과정을31:22공유하는 자리입니다 그래서 결과에31:25집중하면 여러분들 다이어리31:27보셨나요 다이어리 첫 날 둘째날에31:30굉장히 예쁘게 쓰다가 어느 순간31:31지쳐서 멈추게 되죠 그것처럼 결과에31:34집중을 하게 되면 포스테이 예쁘게31:36붙이려고 노력을 하세요 붙였다31:38떼어냈다 할 목적으로 포스테이 붙이는31:40건데 그것마저 예쁘게 붙이려고31:42하시거든요 혹은 글씨체를 신경31:45쓰시겠다거나 그래서 많은 에너지가31:48낭비되기 때문에 참가자들의 멘탈31:50모델을 조종하는 워크31:52물어보시고 여러분들이이 워크숍에31:54최선을 다해 참여한다면 결과는31:57자동으로 따라오게 될 거예요 그리고32:00결과물을 유지관리하는 것이 좋다에32:02대해서는 이벤트 스토의 결과를 직접32:05관리하는 것은 적절하지 않습니다 물론32:08워크숍 후에 변경 상항을 추적할 수32:10있도록 정책이라 빠진 문서를 채우는32:13건 좋아요 근데이 워크숍의 결과물32:16자체를 유지 관리를 하기보다는32:19변경해야 할 상황이 발생하면 일단32:21최대한 빨리 워크숍을 다시 시도해32:23보세요 그리고 이미 여러분들이32:25워크숍을 해본 경험이 있기 때문에32:27훨씬 더 숙련된 상태에서 더 빠르게32:30워크숍을 진행할 수 있게 될 거예요32:34마무리입니다 그래서이 워크숍이 끝나게32:36되면 여러분들은 핫스팟들을 이슈화를32:39해야 되고요 그리고이 핫 스팟들이32:42가장 많이 붙어 있는 걸 가장 높은32:44우선 순위로 잡아서 일을 진행을 하면32:47되겠죠 그리고 그 사이에서 발생한32:49다양한 용어들을 통일하기 위한32:52여러분들은 용어 사전을 만드셔야32:53됩니다 그리고 경계가 그어졌고 때문에32:57이 경계 안에서 문제를 해결하고 특정32:59도메인에 대해 더 깊게 탐구해 보는33:01것도 방법이 될 수33:04있겠죠 실제로이 워크숍에 대한33:06피드백을 공유를 해 보는데요 여러33:09가지 장점들이 있지만 팀으로서33:11유대감을 쌓는데 도움이 될 것 같아33:13추천하는 또 다른33:15이유입니다라는 코멘트가 가장 눈에33:19띄네요 그래서 우리 모두는 비즈니스33:21지식이33:22부족합니다 그러나 좋은 부분은 또한33:25혼자가 아니라는 거겠죠 이벤트33:27스토밍을 사일로 경계를 넘어 모두가33:30서로에게서 배우고 서로 소통하고33:32다양한 관점에서 비즈니스를 바라볼 수33:35있으며 또 모두의 생각을 말할 수33:37있게 하고 모두의 지식을 동기화하는33:40상향 평준화하는 아주 훌륭한33:42수단이다라고 말씀을 드릴 수33:45있겠습니다 알베르트 브란도니 이탈리아33:48프로그래머 그렇다 보니깐 이벤트33:51스토밍을 피자에 비유를 하는데요33:53이벤트 스토밍을 피자 레시피처럼33:55커다란 종이와 도메인 이벤트라는33:58반죽은 기본이지만 원하는 방식으로34:01토핑을 넣어도 된다고34:03합니다 그러나 여기에는 데이터베이스도34:07그리고 파인애플도34:09없다라고 말을34:12하더라고요 흐린 날씨에 폭풍우가 왔다34:14가면 아주 밝은 태양이 떠오르죠34:17그것처럼 이벤트 스토밍 오크샵 통해34:20여러분이 평소에 가지고 있던 도메인에34:22대한 흐릿한 지식이 맑아졌으면34:25좋겠습니다 그리고 자알 있어야 했던34:28여러 가지 부담 혼자 도메인 지식을34:30알고 있기 때문에 혼자 유지보수하고34:33혼자 대응해야 됐던 그런 부담을34:35내려놓는 시간이 되셨으면34:38좋겠습니다 그럼 이제 발표34:40마치겠습니다34:41[박수]34:47감사합니다
3,478 words · 770 lines







