피드로 돌아가기
안전제일! 뱅크샐러드가 모바일 앱을 안정적으로 배포하는 방법
뱅크샐러드 기술블로그뱅크샐러드 기술블로그
Mobile

안전제일! 뱅크샐러드가 모바일 앱을 안정적으로 배포하는 방법

뱅크샐러드가 주간 정기 배포 루틴과 다단계 QA 프로세스로 대규모 리팩토링 중에도 주 1회 안정적 배포 달성

2023년 11월 30일12intermediate

Context

모바일 앱은 스토어 심사 프로세스(수 시간~수일 소요)로 인해 배포 후 롤백이 불가능하고, 수정 버전 배포까지 시간이 오래 걸린다. 대규모 리팩토링 같은 변경사항은 의도치 않은 버그를 발생시키기 쉬우므로, 배포 시 높은 안정성이 필수적이다.

Technical Solution

  • 주간 정기 배포 사이클 도입: 매주 금요일 오후에 develop 브랜치에서 release 브랜치를 분리하고 버전을 주차로 명명(예: 2023년 48주 → v23.48.*)
  • develop 브랜치를 배포 가능 상태 유지: 병합 전 모든 자동화 테스트 통과 필수, Feature Flag로 미완성 기능 차단
  • release 브랜치에서 cherry-pick 전략: 발견된 이슈는 develop 브랜치에서 수정 후 커밋을 release 브랜치로 cherry-pick만 수행(merge 없음)
  • 자동화 테스트 + 수동 QA 조합: GitHub Actions에서 자동화 테스트 실행(실제 iOS/Android 디바이스 연결), QA 팀이 리스크 분석 문서 작성 후 수동 테스트 진행
  • 점진적 배포 단계: 월요일부터 수요일까지 App Store 점진적 출시 기능으로 전체 사용자 중 5% 대상 배포 후, 이상 없으면 전체 배포 진행
  • release QA 프로세스: 금요일 오후 테스트 빌드 생성 → 주말 자동화 테스트 → 월-화(또는 화-수) QA 팀 수동 테스트 → 목-금 우선순위 높은 이슈 해결 → 금요일 스토어 심사 제출
  • 이슈 해결 브랜치 전략: release 브랜치가 아닌 develop 브랜치에서 생성·병합하여 develop 상태 최신 유지, 이후 cherry-pick 시점에만 충돌 해결

Key Takeaway

모바일 앱 배포의 안정성은 단일 기술이 아닌 '정기 사이클 + 자동화 + 다단계 검증 + 배포 전략'의 조합으로 달성된다. 특히 develop을 언제나 배포 가능한 상태로 유지하고 release 브랜치를 cherry-pick으로만 관리하면, 대규모 변경 중에도 다른 작업과의 충돌을 최소화하면서 안정성을 높일 수 있다.


iOS/Android 앱을 배포하는 팀에서 주간 정기 배포 루틴을 도입할 때, develop 브랜치를 항상 배포 가능 상태로 유지(자동화 테스트 필수, Feature Flag로 미완성 기능 차단)하고 release 브랜치에서는 cherry-pick만 수행하면, 작은 PR 규칙과 결합했을 때 대규모 리팩토링 중에도 주 1회 안정적 배포가 가능하다.

원문 읽기