kotalk/문서/25-draft-recovery-and-message-reliability.md
2026-04-16 09:24:26 +09:00

4.5 KiB

25. Draft Recovery And Message Reliability

문서 목적

이 문서는 KoTalk의 신뢰 경험을 정의한다.
메신저에서 신뢰란 단순히 서버가 살아 있는 상태가 아니라, 사용자가 아래를 믿을 수 있는 상태다.

  • 쓴 내용이 사라지지 않는다
  • 보낸 내용이 중복되지 않는다
  • 실패하면 복구 방법이 바로 보인다
  • 다시 열었을 때 이어서 할 수 있다

기본 철학

  • 초안 보존은 부가 기능이 아니라 기본 기능이다.
  • 실패는 숨길 대상이 아니라, 사용자가 직접 회복할 수 있게 드러내야 하는 상태다.
  • 전송 상태는 시스템 로그가 아니라, 대화 문맥 안의 일부여야 한다.
  • 사용자는 “메시지가 갔는지 안 갔는지”를 고민하면 안 된다.

메시지 상태 모델

메시지는 아래 상태를 가진다.

  • 작성 중
  • 초안 저장됨
  • 전송 중
  • 전송 성공
  • 전송 실패
  • 재전송 대기
  • 재전송 성공

초안 보존 정책

저장 기준

  • 사용자가 입력을 멈춘 뒤 500~1000ms
  • 창 비활성화 시점
  • 대화 전환 시점
  • 앱 종료 직전
  • 모바일 웹 새로고침 또는 백그라운드 진입 직전

저장 단위

  • 대화별 초안
  • 창별 상태
  • 첨부 예정 자산 메타데이터

복구 기준

  • 같은 대화를 다시 열면 즉시 복구
  • 세션 복구 이후에도 초안은 남아 있어야 함
  • 여러 창에서 같은 대화를 열었을 때 충돌 정책이 필요함

전송 실패 UX

기본 규칙

  • 실패는 토스트 한 줄로 끝나면 안 된다
  • 실패 버블은 대화 안에 남아 있어야 한다
  • 실패 이유는 기술 용어 없이 짧게 보여 준다
  • 바로 옆에 다시 보내기가 있어야 한다

실패 버블 액션

  • 다시 보내기
  • 초안으로 되돌리기
  • 삭제

금지 UX

  • 실패 메시지를 자동으로 숨김
  • 원인을 설명하지 않음
  • 입력창에서 작성했던 원문을 잃게 함

중복 방지 정책

  • 모든 메시지는 고유한 clientRequestId를 가진다
  • 재전송은 새 메시지가 아니라 기존 요청의 재시도여야 한다
  • 서버와 클라이언트 모두 중복 방지를 처리해야 한다

네트워크 흔들림 UX

연결 약화

  • 사용자에게 큰 경고를 남발하지 않는다
  • 상태 표시만 얇게 보여 준다
  • 전송 버튼은 상황에 따라 대기열 또는 재시도 모드로 바뀔 수 있다

재연결

  • 대화 맥락은 유지
  • 초안은 유지
  • 최근 실패 메시지는 재시도 가능 상태 유지

세션 만료와 초안 관계

  • 세션 만료 때문에 초안을 버리면 안 된다
  • 먼저 초안을 저장하고, 그다음 인증 복구를 시도한다
  • 인증 복구 실패 시에도 초안은 남는다

플랫폼별 신뢰 UX

Windows

  • 로컬 보호 저장소 기반 세션 유지
  • 앱 재실행 후 초안 즉시 복구
  • 멀티 윈도우 충돌 정책 필요

Mobile Web

  • 새로고침, 탭 복구, 브라우저 재시작에 강해야 함
  • 네트워크 변화가 잦으므로 전송 실패 UX가 더 중요

Android

  • 오프라인 큐와 백그라운드 복귀가 중요
  • 푸시와 연계된 재전송 모델 필요

UX 카피 원칙

권장:

  • 전송하지 못했습니다
  • 다시 보내기
  • 초안으로 되돌리기
  • 네트워크가 불안정합니다
  • 작성 중이던 내용은 محفوظ 같은 외래 표현 금지

권장 대체:

  • 작성 중이던 내용은 남아 있습니다
  • 연결이 다시 되면 이어서 보낼 수 있어요

신뢰 지표

  • 초안 복구 성공률
  • 세션 복구 성공률
  • 전송 실패 후 재시도 성공률
  • 중복 전송 비율
  • 초안 유실 제보 수
  • 실패 후 이탈률

현재 산출물과의 차이

현재 문서 기준 기대치는 높지만, 실제 구현은 아래가 비어 있다.

  • 초안 영속 저장
  • 인라인 재전송
  • 세션 자동 갱신
  • 실패 버블 액션

이 차이는 CURRENT_LIMITATIONS와 사용자 리뷰 문서에서 계속 추적해야 한다.

스크린샷 기준

  • 성공한 대화만 보여 주면 신뢰 문서는 의미가 없다
  • 실패 후 재전송, 초안 복구, 네트워크 약화 같은 상태 스크린샷이 필요하다

결론

사용자가 메신저를 믿는 순간은 평소가 아니라 실패 순간이다.
KoTalk는 “잘 될 때 깔끔한 메신저”를 넘어서, “망가져도 다시 일을 시키지 않는 메신저”를 목표로 해야 한다.