CI/CD: 모바일 앱과 웹 앱의 차이점
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- DevOps 엔지니어 및 모바일/웹 개발자
- 난이도: 중급~고급 (CI/CD 파이프라인, 플랫폼별 도구 사용, 자동화 전략 이해 필요)
핵심 요약
- 모바일 CI/CD는 웹 CI/CD와 비교해 복잡도가 높음 (예: TestFlight 승인 대기 시간, Android 기기 수(8,742 기기), 실기기 테스트 필수성).
- 웹 CI/CD는 단순한
git push
로 즉시 배포 가능 (예: CDN 업데이트, 브라우저 호환성 예측 가능). - 자동화 도구 활용 필수: Fastlane(
pilot
,supply
), GitHub Secrets 또는 AWS Parameter Store로 보안 키 관리, Codemagic 또는 GitHub Actions Matrix로 플랫폼별 파이프라인 통합.
섹션별 세부 요약
1. **모바일 CI/CD의 주요 과제**
- 앱 스토어 승인 지연: iOS는 24-48시간, Google Play는 15% 수수료 문제로 인한 복잡성.
- 기기 호환성 문제: iOS는 5 버전 + 12 디스플레이 크기, Android는 8,742 기기(예: QA의 2014 Kindle Fire 포함).
- 실기기 테스트 필수: Firebase Test Lab, AWS Device Farm 사용 필요 (웹은 브라우저 에뮬레이터로 충분).
2. **모바일 CI/CD의 기술적 복잡성**
- iOS 프로비저닝 프로파일: "Tim의 Mac에서 작동하지만 내 Mac에서는 안됨" 같은 문제 발생.
- Android 키스토어 손실: "업로드 키를 잃었어?" 같은 실수로 인한 배포 실패.
- 빌드 시간 지연: Xcode는 "Hello World" 빌드가 10분 소요, Android Gradle은 "나의 낮잠 끝나면 배포할게" 같은 문제.
3. **웹 CI/CD의 단순성**
- 즉시 배포:
git push
후 CDN 업데이트 즉시 반영. - 브라우저 호환성: Chrome 기준으로 Edge는 "충분히 유사"로 처리.
- 보안 인증서: SSL 인증서 문제는 기계 간 이동으로 인한 오류가 없음.
4. **도구 및 자동화 전략**
- 모바일 도구:
- Appium, Espresso, XCTest (UI 테스트 자동화).
- Fastlane (스크린샷, 서명 자동화).
- Bitrise (YAML 없이 설정 가능한 노코드 CI/CD).
- 웹 도구:
- Vercel/Netlify (드래그 앤 드롭 배포).
- GitHub Actions (자동화 편의성).
- 핵심 전략:
- Feature Flag 사용: LaunchDarkly, Firebase로 배포와 릴리스 분리.
- 캐싱 및 병렬 처리:
~/.gradle
,Pods/
캐싱, iOS + Android 병렬 빌드.
5. **실제 사례와 교훈**
- React Native 앱 웹 파이프라인 재사용 실패 사례:
- M1 Mac vs. Intel 호환성 문제로 iOS 빌드 실패.
- Android APK 서명 미비로 배포 실패.
- 3일 소요.
- 핵심 교훈: 플랫폼별 도구 사용 필수 (예: Codemagic, GitHub Actions Matrix로 모바일/웹 통합).
결론
- 모바일 CI/CD는 "웹 CI/CD의 축소판"이 아닌 복잡한 시스템으로, 플랫폼별 도구(Fastlane, Codemagic)와 자동화(GitHub Secrets, 병렬 빌드)를 통해 관리해야 함.
- 웹 CI/CD는 즉시 배포 가능하지만, 모바일은 실기기 테스트, 스토어 승인, 보안 키 관리 등 추가 작업 필요.
- 핵심 팁: 플랫폼 인식 도구 사용, 보안 키를 GitHub Secrets/AWS Parameter Store에 저장, Feature Flag로 배포/릴리스 분리.