010:00 – 4:49
느슨한 결합 — 무엇을 이벤트로 발행할 것인가
회원플랫폼팀 권용근이 "회원시스템 이벤트 기반 아키텍처 구축하기"를 발표한다. 먼저 시스템 변천사를 회고한다. 2015년 모놀리식 단일 시스템으로 시작했으나 주문이 J커브로 성장하며 '장애의 시대'를 맞아 MSA로 전환, 2019년 모든 시스템이 분리됐고 자연스럽게 이벤트 기반 아키텍처를 쓰게 됐다. 다만 하나의 마이크로서비스 안에서 다루는 이벤트 기반 아키텍처 는 여전히 생소하다며, 회원 시스템이 그것을 어떻게 다루는지 소개한다. 핵심 키워드는 느슨한 결합 이다. '회원의 본인인증이 초기화되면 가족계정에서 탈퇴되어야 한다'는 정책을 예로, 가족계정 탈퇴 로직이 회원 본인인증 해제에 깊게 관여하면 강한 결합이 생긴다. 가족계정을 마이크로서비스로 분리해 동기 HTTP로 바꿔도, 비동기 HTTP로 바꿔도, 심지어 메시징 시스템으로 '가족계정 탈퇴 메시지'를 보내도 여전히 강한 결합 이다. 메시지가 대상에게 기대하는 목적을 담으면 그건 비동기 요청일 뿐 이벤트가 아니기 때문이다. 따라서 발행할 것은 '내가 밥을 먹었으니 너는 무엇을 해라'가 아니라 '밥을 먹었다'는 도메인 이벤트 그 자체 다. 회원은 '본인인증 해제 이벤트'만 발행하고 가족계정이 이를 구독해 스스로 탈퇴를 구현하면 결합이 느슨해진다.