멱등성 + 재시도 백오프 + trace_id 관측 + 실패 케이스 우선 설계 경험
팀 프로젝트에서 두 서비스 간 데이터를 주고받는 인터페이스를 설계하면서 정합성 문제를 처음 깊이 경험했습니다. 가장 먼저 고민한 기준은 일관성과 가용성 중 어느 쪽을 우선할지였는데, 결제처럼 돈이 오가는 영역과 알림처럼 순서가 조금 틀려도 되는 영역이 다르다는 걸 배웠습니다. 멱등성을 적용해서 같은 메시지가 두 번 들어와도 결과가 달라지지 않는 처리 구조를 만들었고, 중복 처리 버그를 줄일 수 있었습니다. 네트워크 장애를 가정해서 재시도 로직과 지수 백오프를 기본으로 적용했습니다. 정합성 이슈 디버깅을 위해 각 이벤트에 trace_id를 붙여서 어느 시스템에서 어떤 처리가 일어났는지 추적할 수 있게 했습니다.
인터페이스 설계는 성공 케이스보다 실패·지연·중복 케이스를 먼저 상정하는 것이 정합성을 높이는 출발이라는 걸 배웠습니다.