오늘은 소규모 조직에서 이벤트 중심 아키텍처(EDA)를 도입하면서 겪은 이야기와 그 과정에서 배운 점들을 공유해보려고 해요. 특히 Zero Payload 방식에서 full payload로 전환하게 된 배경과 그 과정에서 마주한 한계들에 대해 이야기해볼게요. 이 이야기를 통해 비슷한 고민을 하고 있는 분들께 도움이 되길 바라요!
EDA를 도입하면서 처음 선택한 방법 중 하나가 Zero Payload였어요. 이게 뭐냐면, 이벤트 자체에 데이터가 첨부되지 않고 단순히 "무언가 일어났다!"라는 신호만 보내는 방식이에요.
Zero Payload 방식은 정말 간단하고 빠르게 시작할 수 있었지만, 시간이 지나면서 몇 가지 큰 단점들이 보이기 시작했어요. 특히 Single Source of Truth (SSOT)와 Replayability에서 문제가 되었죠.
SSOT는 모든 데이터가 하나의 소스에서 관리되어 일관성을 유지하는 개념인데요, Zero Payload를 사용하면서 이런 문제가 발생했어요:
EDA의 큰 장점 중 하나는 이벤트를 재생(replay)해서 시스템 상태를 복구하거나 새로운 서비스를 초기화할 수 있다는 점인데요, Zero Payload는 이걸 불가능하게 만들었어요:
이런 문제들을 해결하기 위해 고민하던 중, O’Reilly의 "이벤트 기반 마이크로서비스 구축" 책을 읽게 되었어요. 이 책을 통해 EDA의 진정한 잠재력과 함께 Event Payload의 중요성을 깨닫게 되었죠. 덕분에 저희는 Zero Payload에서 벗어나 이벤트에 페이로드를 포함시키는 방향으로 전환하게 되었어요.
이제 이벤트에 데이터를 담아 보내는 Payload 포함 방식으로 바꾸면서 얻은 장점들을 소개할게요:
물론 페이로드를 포함시키면서 몇 가지 도전도 있었어요:
스타트업에서는 자원이 한정되어 있고, 빠르게 시장에 나가는 게 중요한데요. 초기에는 Zero Payload가 정말 좋은 선택이었어요.
하지만 시스템이 성장하면서 초기의 트레이드오프가 확장성과 유지보수성을 저해하기 시작했어요. 그래서 full payload 이벤트로 전환하는 것이 필요했죠. 이건 단순한 기술적 변화가 아니라, 우리의 아키텍처를 더 견고하게 만드는 중요한 투자였어요.
EDA를 도입하면서 Zero Payload에서 시작해 여러 도전과 한계를 겪었지만, O’Reilly의 책 덕분에 중요한 깨달음을 얻고 페이로드 포함 방식으로 전환할 수 있었어요. 이 과정에서 배운 점들은 우리 시스템을 더 견고하고 확장 가능하게 만들어줬고, 앞으로의 성장에도 큰 도움이 될 거라 믿어요.
비슷한 고민을 하고 있는 스타트업 분들께 조언을 드리자면, 초기의 단순함과 빠른 속도도 중요하지만, 장기적인 확장성과 유지보수성을 함께 고민하는 것이 중요해요. Zero Payload가 빠른 시작을 가능하게 하지만, 그에 따른 트레이드오프를 이해하고 필요할 때 적절히 트레이드 오프를 고려하시길.. ㅎㅎ