서비스 분리 실험에서 메시지 큐의 가치를 발견한 결
졸업 프로젝트로 4명이 음식 주문 시스템을 만들면서 처음으로 서비스를 여러 개로 나눠보려고 했습니다. 주문 서비스, 결제 서비스, 알림 서비스를 각각 독립된 서버로 분리했는데, 처음에는 서비스 간 통신을 전부 HTTP로 직접 연결했습니다. 주문 서비스가 느려지면 결제 서비스도 같이 느려지는 걸 보고 "이게 분산 시스템의 함정이구나"를 처음 느꼈습니다.
그래서 알림 서비스는 메시지 큐(RabbitMQ)를 통해 비동기로 연결했습니다. 직접 연결할 때는 알림 서버가 다운되면 주문도 실패했는데, 큐를 넣고 나서는 알림 서버가 잠깐 꺼져도 주문은 정상 처리됐습니다. 이 차이가 생각보다 크게 와닿았습니다.
협업에서 어려웠던 건 API 스펙 합의였습니다. 팀원 4명이 각자 서비스를 맡아서, 인터페이스를 중간에 바꾸면 연결된 서비스가 전부 깨졌습니다. 결국 Swagger 문서를 먼저 합의하고 코딩을 시작하는 방식으로 바꿨는데, 처음부터 그렇게 했으면 좋았을 것 같습니다.