4. 가맹 모집 서비스 개선: 파일 유실률 100% → 0%, CS 월 3건 → 0건

배경

가맹점 접수 피크 시간대 SFTP 파일 업로드 실패로 인하여 파일 유실로 인한 CS가 월 평균 3건 발생

사용자는 성공 응답을 받았지만 실제 파일은 미전달되는 구조적 문제를 식별하여 개선 주도

문제 1: SFTP 세션 고갈로 인한 파일 업로드 실패

AS-IS

TO-BE

---
config:
  theme: mc
---
sequenceDiagram
    participant U as User
    participant W as Was
    participant R as RDB
    participant F as File Server

    U->>W: 1. 가맹점 접수 신청
    W-->>R: 2. DB 저장
    W-->>U: 3. 성공 응답

    W-)F: 4. 비동기 파일 업로드 이벤트 발행
    Note over F: ❌ SFTP 세션 연결 실패<br/>1. 업로드 파일 유실<br/>2. 파일 유실로 인한 가맹점 심사 실패<br/>→ CS 증가
---
config:
  theme: mc
---
sequenceDiagram
    participant U as User
    participant W as Was
    participant R as RDB
    participant F as File Server

    U->>W: 1. 가맹점 접수 신청
    W->>R: 2. DB 저장 + Outbox 저장(PENDING)<br/>단일 트랜잭션
    W-->>U: 3. 접수 성공 응답
    W-)F: 4. 비동기 파일 업로드 (로컬 임시저장 후 전송)

    alt ✅ 업로드 성공
        F-->>W: 완료
        W->>R: Outbox status = COMPLETED
    else ❌ 업로드 실패 (5회 지수 백오프)
        W->>R: Outbox status = FAILED
        Note over W,R: 30분 배치: PENDING/FAILED 자동 재처리<br/>최종 실패 시 운영팀 알림
    end

해결 1: SFTP 세션 풀링 도입

문제 2: 비동기 업로드 실패 시 복구 메커니즘 부재

해결 2: 로컬 임시 저장소 + 트랜잭셔널 아웃박스 패턴