Daily iOS
iOS 시스템 디자인

오프라인 채팅 Outbox

네트워크가 자주 끊기는 iOS 채팅 앱에서 사용자가 보낸 메시지를 잃지 않아야 합니다. 로컬 outbox의 상태 전이를 어떻게 설계하겠습니까?

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

전송 버튼을 누르는 순간 메시지를 SwiftData outbox에 pending으로 먼저 저장하고, 전송 시작 시 sending, 서버 ack가 오면 sent, 재시도 횟수를 넘기면 failed로 옮기되 앱이 죽었을 때 남은 sending은 재시작 시 pending으로 되돌려 다시 보낸다.

받은 질문 공유