[ 이벤트기반 아키텍처 적용하기 전 환경 ]

[ 해결과정 ]

스타벅스 사이렌오더의 주문 완료 단계는 실질적인 매출완료 단계이며, 리워드의 지급이 결정되는 단계입니다.

초기에는 주문 완료 시 Kafka를 통해 전달하는 메시지가 리워드 팀에 특화된 구조였습니다.

사용자의 결제 수단, 결제 금액, 컵 보증금 등 상세 정보를 포함하고 있었습니다. 하지만 프로젝트가 진행되면서 알림 팀도 이 정보가 필요해졌고, 리워드 팀 역시 추가 보상을 위해 더 많은 정보를 요구하게 되었습니다.

이러한 요구사항 변화로 메시지가 점점 복잡해지고, 특정 도메인에 종속적인 구조로 변할 위험이 있었습니다.

이 문제를 해결하기 위해 저는 새로운 접근 방식을 제안했습니다. 주문결제 팀에서는 '주문 완료'라는 최소한의 정보만을 담은 이벤트를 발행하고, 각 팀은 필요한 추가 정보를 별도의 API로 조회하는 방식이었습니다.

처음에는 다른 팀들이 추가 API 호출에 대한 우려를 표했지만, 신규로 개발하기 위해 필요한 API를 제공함과, 접근 방식의 장기적 이점을 설명하고 설득했습니다. 실제로, 그 이점을 경험하기까지 오랜 시간이 걸리지 않았습니다.

주문완료 단계 이후에 추가적인 비즈니스 (카카오 알림톡 및 APP Push 발송) 에도 주문, 결제에는 변경없이 알림도메인에서 변경된 메세지를 구독하는 방식으로 구현했습니다.

[ 회고 ]

이벤트 기반 아키텍처를 적용함으로서, 도메인 간 종속성을 크게 줄이고, 향후 요구사항 변경에 더욱 유연하게 대응할 수 있게 했습니다.

이 경험을 통해 저는 단기적 편의성보다 장기적인 시스템 유연성과 확장성이 더 중요하다는 것을 깨달았습니다.

또한, 서로 다른 의견을 가진 팀원들과 효과적으로 소통하고 협력하는 방법을 배웠습니다. 이러한 접근은 프로젝트를 성공적으로 완수하고 시스템의 유지보수성과 확장성을 크게 향상시키는 결과로 이어졌습니다.