
핵심요약
올리브영은 Android의 Product Flavor와 iOS의 xcconfig를 활용하여 개발용 앱과 운영용 앱을 명확히 분리했습니다. 이를 통해 개발 생산성 향상, 배포 안정성 강화, 그리고 팀 간 커뮤니케이션 비용 감소 효과를 얻었습니다.
올리브영, DEV/PROD 환경 분리를 통한 안정적인 앱 운영
환경 분리 필요성
- 커뮤니케이션 비용 감소: 개발 앱과 운영 앱 동시 설치 불가로 인한 데이터 초기화 및 혼란 방지.
- 휴먼 에러 방지: 실수로 개발 앱을 운영 환경에 배포하는 사고 예방. QA, 개발, 운영 단계에서의 안정성 확보.
- Dogfooding 문화: 내부 테스트 전용 빌드를 운영하여 검증 프로세스 강화.
플랫폼별 환경 분리 전략
- Android: Product Flavor (
develop/production)와 Build Variant (debug/release)를 조합하여com.oliveyoung.dev와com.oliveyoung으로applicationId분리. 소스셋 분리를 통해 아이콘, 앱 이름 등 리소스 차등 적용. - iOS: Build Configuration (
DEV/PROD) 및 Scheme을 재구성하고,xcconfig파일로 서버 주소, API 키 등 환경별 설정 분리. Bundle Identifier, App Group, Universal Links 등 시스템 식별자도 환경별로 분리.
서드파티 SDK 및 CI/CD 통합
- AppsFlyer, Firebase, Braze 등 서드파티 SDK의 앱 ID 및 API 키를
xcconfig파일로 이관하여 환경별로 명확히 관리. - GitHub Actions 기반 CI/CD 파이프라인에서 환경별 Scheme을 사용해 빌드 및 배포 자동화. DEV 빌드는 Firebase App Distribution, PROD 빌드는 TestFlight 및 App Store로 배포.
환경 분리 검증 기준
- 설치 확인: DEV/PROD 앱 동시 설치 및 아이콘/앱명 구분.
- 엔드포인트 확인: DEV 빌드가 DEV 서버 연결 확인.
- 서드파티 프로젝트 확인: DEV 이벤트가 DEV 프로젝트로만 수집되는지 확인.
- 딥링크 확인: DEV/PROD 도메인이 각 앱으로 올바르게 라우팅되는지 확인.
기대 효과
- 협업 명확성: 앱 아이콘/이름으로 환경 구분 가능, 비개발 부서와의 소통 비용 감소.
- 배포 안정성: CI/CD 워크플로우 분리를 통한 운영 빌드 스토어 배포 리스크 감소.
- 개발 생산성: 환경 전환 및 재설치 불필요, 동시 테스트 가능.
- 안정적인 운영: 개발 기능이 운영 데이터에 영향 주는 일 방지.