이제 메시지 관리 시스템을 개발하면서 겪었던 설계 문제와 해결 과정을 공유하겠습니다.
특히 외부 API 연동과 대용량 처리 과정에서 마주친 문제들을 어떻게 해결했는지 말씀드리겠습니다.
처음 메시지 발송 기능을 설계할 때는 단순하게 생각했습니다.
"사용자가 요청하면 → 외부 SMS API를 호출하고 → 결과를 DB에 저장하자"
하지만 이 방식에는 두 가지 심각한 문제가 있었습니다.
외부 API 응답을 동기적으로 기다리는 방식이었기 때문에, API 응답이 올 때까지 사용자는 계속 기다려야 했습니다.
SMS API가 3초가 걸린다면, 사용자도 3초를 기다려야 하는 상황이었죠.
더 심각한 문제는 "API 먼저, DB 나중" 순서였습니다.
만약 SMS는 성공적으로 발송됐는데 DB 저장에서 오류가 발생한다면? 메시지는 전송됐지만 시스템에는 아무런 기록이 남지 않게 됩니다.