1️⃣ 왜 되돌릴 수 있어야 하는가
백엔드는 항상 이 조건을 안고 갑니다.
- 요구사항은 바뀐다
- 외부 연동은 깨진다
- 운영 데이터는 한 번 들어오면 끝이다
여기서 되돌릴 수 없으면:
- 핫픽스 → 임시 로직 → 플래그 → 분기 폭발
- 데이터 보정 스크립트 난무
- “이거 건드리면 터진다” 영역 증가
👉 속도보다 회복 불가능성이 더 큰 리스크입니다.
2️⃣ 되돌릴 수 있음의 실체 (추상 말 금지)
① 배포 단위가 작다
- 커밋 단위 명확
- 기능 플래그로 on/off
- 스키마 변경과 로직 분리
👉 롤백이 이론이 아니라 버튼이어야 합니다.
② 데이터는 항상 되돌릴 수 있게 남긴다
- 물리 삭제 ❌ → 상태 전이 ⭕
- overwrite ❌ → 이력 테이블 ⭕
- 집계 결과만 저장 ❌ → 원본 보존 ⭕
“원본은 진실이다”
③ 외부 연동은 언제든 끊을 수 있어야 한다
- 타임아웃
- 서킷 브레이커
- 수동 disable 스위치
외부 장애 시:
- 우리 시스템부터 죽으면 설계 실패
④ 실패는 기록되고 재처리 가능해야 한다
- 재시도 큐
- idempotency key
- 실패 원인 로그 + 재처리 플래그
👉 실패를 “다시 시도 가능 상태”로 남기는 게 핵심입니다.
3️⃣ “빠른 백엔드”의 함정
실무에서 말하는 빠름 = 지금 안 깨짐
하지만 운영에서의 빠름 =
상황진짜 빠른 쪽
| 장애 발생 | 롤백 가능한 쪽 |
| 데이터 오류 | 재처리 가능한 쪽 |
| 요구 변경 | 플래그로 꺼지는 쪽 |
| 인력 교체 | 문서·이력 남은 쪽 |
👉 장기적으로는 되돌릴 수 있는 쪽이 항상 빠릅니다.
4️⃣ 되돌릴 수 없음의 신호 (경고등)
- “이 테이블은 건드리지 마세요”
- “데이터 한번 들어가면 못 돌려요”
- “장애 나면 수동으로 맞춰야 해요”
- “배포는 새벽에만 합니다”
이 말이 나오면 이미 기술 부채가 아니라 기술 폭탄입니다.
5️⃣ 백엔드 설계 기준 문장
“이 변경을 오늘 배포했다가, 내일 아무 일 없었던 것처럼 되돌릴 수 있는가?”
YES면 합격
NO면 아직 설계 중입니다.
정리하면
백엔드는 빠르게 가는 기술이 아니라, 안전하게 돌아올 수 있는 기술입니다.
속도는 그 다음입니다.
LIST
'Spring & Backend' 카테고리의 다른 글
| 📌 현재 eGovFrame의 위치 (0) | 2026.02.04 |
|---|---|
| 락인은 기술 문제가 아니라 조직 결정의 결과다 (0) | 2026.02.04 |
| 장애 대응은 영웅 서사가 아니라 플레이북이다 (0) | 2026.02.04 |
| 정합성은 선택이 아니다. 언젠가 비용으로 돌아온다 (0) | 2026.02.04 |
| 네트워크에서 회선 교환 방식과 패킷 교환 방식은 어떤 차이점 있나요? (0) | 2026.02.03 |
