노박은 ‘Might and Magic’이라는 비유를 들어, 성공적인 설계는 이론적 지식(패턴, 휴리스틱)과 실제 경험 및 직관(마법)의 조화에서 온다고 설명합니다. 그는 Uber와 같은 실제 애플리케이션의 새로운 기능 모델링 사례를 통해 유연한 모델의 중요성을 강조합니다.
강연의 핵심 방법론인 이벤트 모델링은 이벤트 스토밍(Event Storming)을 통해 도출된 비즈니스 이벤트를 시작으로, 사용자의 의도를 나타내는 명령(파란색 스티커), 시스템의 현재 상태를 나타내는 뷰(초록색 스티커), 그리고 사용자 인터페이스(UI)를 추가하여 비즈니스 프로세스를 영화의 프레임처럼 시각화합니다. 이 과정에서 ‘이벤트 후에 무엇이 일어났는가?’ 또는 ‘이벤트 전에 무엇이 일어났는가?’와 같은 질문을 통해 시스템의 자율적이고 완전한 모듈(바운디드 컨텍스트)을 식별하고, 잘못된 결합(Big Ball of Mud)을 방지하여 불필요한 리팩토링 시간을 절약할 수 있다고 강조합니다.
개발 팀의 효율적인 작업을 위해 이벤트 모델링 결과물을 ‘수직적 슬라이스(Vertical Slice)’로 분할하는 방법을 제시합니다. 이는 쓰기(Write) 슬라이스, 읽기(Read) 슬라이스, 자동화(Automation) 슬라이스로 구분되며, 각 슬라이스는 독립적인 작업 단위로 병렬 개발이 가능하게 하여 프로젝트 진행 상황을 명확히 보여줍니다.
코드 구현에 있어서는 Ruby 언어를 활용한 ‘Decide’, ‘Evolve’, ‘React’ 세 가지 순수 함수를 소개합니다. ‘Decide’ 함수는 비즈니스 로직과 불변성을 담당하고, ‘Evolve’ 함수는 이벤트를 기반으로 상태를 계산하며, ‘React’ 함수는 특정 이벤트에 반응하여 다른 모듈에 명령을 전달하는 자동화 로직을 구현합니다. 이러한 패턴은 이벤트 소싱 방식뿐만 아니라 스냅샷 기반의 데이터베이스 저장 방식에도 적용 가능하여 지속성 독립성을 제공합니다.
마지막으로, 그는 전통적인 코드 리뷰 대신 ‘아키텍처 실행(Architecture Execution)’을 제안합니다. 이는 계획 단계에서 아키텍처 검토, 실험, 모델 검증을 통해 품질을 선제적으로 확보하고, 구현 단계에서는 사전에 정의된 표준을 따르므로 코드 리뷰가 형식적인 절차가 되도록 하여 개발 효율성을 극대화합니다.