지난번 이벤트 스토밍 설계에 이어 이번엔 이 설계를 어떻게 기술적으로 구현할지에 대한 고민을 해보려 한다.
서비스는 회원, 공연, 대기, 결제 도메인으로 나뉘는데 가장 중요하고 트래픽이 많이 발생할 것으로 보이는 공연/대기/결제 도메인 먼저 설계하려한다.
이 중에서도 결제는 외부 시스템 연동 예정이므로 공연, 대기 도메인을 먼저 설계하겠다.
설계는 우선 가능한 많은 트래픽을 받을 수 있다고 가정한 상황에서 진행하였다.
설계 시 다음과 같은 기술적 고려사항들과 그에 따른 방법이 도출되었다.
이렇게 결정이 되었을 때, 대기 서버는 각 유저별 대기 순번과 예약 서버에 자리가 났는지 여부를 read해오는 역할, 그리고 예약 서버에 자리가 나면 대기 인원을 감소시키고 예약 인원을 추가하는 command역할로 분리가 된다.
이 두 역할은 변경 빈도(write가 훨씬 잦은 빈도)와 서로 다른 성능 향상 방법(read : 캐싱, write : 샤딩 등)을 가졌다고 판단하였고, 이에 적용할 수 있는 CQRS 모델에 대해 다음 편에서 알아보려고 한다.