모바일 환경에 대한 접근 방식으로는 세 가지가 있습니다:
- 두 개의 앱 ID (생산 + 미리 제작)
- 한 개의 앱 ID + 동적 런타임 환경 switching
- 한 개의 앱 ID + Capgo 채널
첫 번째 두 가지 방법은 작동할 수 있지만, 장기적인摩擦를 일으킵니다. 실제 팀에서는 Capgo 채널 모델이 일반적으로 가장 깨끗합니다.
중복된 앱 ID가 왜 소음이 되는지
Using com.myapp 과 com.myapp.beta 페이지/영역: Capgo 마케팅 웹사이트. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 보이는 곳: page trust.astro. 메시지 키 `and` (And).
- 간단하게 보이지만, 빠르게 중복이 발생합니다:
- 두 개의 릴리스 PIPELINES
- 두 개의 PUSH ID, 디ープ 링크, 권한 매핑 세트
- Divergent config and inconsistent behavior between environments
Store console, 팀, 내부 QA 지침을 관리하는 두 개의 제품
Why runtime-switching config is often messy
한 앱 ID + 런타임 switch 패턴은 일반적으로 앱이 시작할 때 환경 변수 또는 플래그를 읽고 동적으로 API, 키, 업데이트 동작을 재구성합니다.
This works until:
- QA 팀이 의도하지 않은 흐름을 우회하기 시작하면 config 상태가陈舊해지기 시작합니다.
- someone uses the wrong endpoint in production
- 환경이 변하면 reproduce하기 어려운 버그가 발생합니다.
- you need to debug “what config version is this binary using?” on a user device.
각 릴리스와 함께 복잡성이 증가하고 팀이 속도를 잃습니다.
The Capgo way: one app ID, many channels
Capgo는 채널을 통해 환경 제어를 명확하게합니다.
- App Store / Play에서 하나의 프로덕션 앱 ID를 유지하세요.
- ‘shell’ (자연스러운 변경이 재빌드가 필요한 경우까지) 에 대한 한 개의 네이티브 바이너리를 배포하세요.
- 채널에 따라 동작을 라우팅하세요. 앱 식별성을 중복하여 사용하지 마세요.
이것은 실제로 다음과 같은 의미입니다:
production모든 사용자staging내부 QA 및 릴리스 후보beta초대된 테스터hotfix긴급 패치 트랙
TestFlight/Play 내부 테스트 앱은 영원히 유지될 수 있습니다.
__CAPGO_KEEP_0__를 통해 JS/CSS/자산 업데이트를 반복적으로 수행할 수 있습니다. 새로운 네이티브 앱을 배포하지 않고도. staging forever.
You do JS/CSS/asset updates there repeatedly through Capgo without publishing a new native app.
1) 네이티브 릴리스 기준선
2) Channel 별로 분리된 QA/릴리스
JS 반복으로도 네이티브 바이너리는 그대로 유지됩니다:
bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual
실제로 네이티브 영역이 변경된 경우에만 네이티브 바이너리를 다시 빌드합니다.
2) 환경별로 전용 채널을 사용하세요.
채널을 사용하여 업데이트를 공개하세요.
bun run build
bunx @capgo/cli deploy --channel staging
테스트를 QA에서 진행하고 문제를 해결한 후 승격하세요.
bunx @capgo/cli promote vX.Y.Z --channel production
explicit 버전 관리를 선호하시면:
bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production
3) 테스트 플라이트는 항상 'always pre-prod'로 유지하세요.
iOS 워크플로우에서 이 의미는 테스트 플라이트 빌드는 pre-production 업데이트와 연관되어 있으므로:
- JS 변경에 따라 자주 네이티브 제출이 필요하지 않습니다.
- QA는 스테이징 채널을 통해 근처의 프로덕션 code을 항상 유효성 검사합니다.
- 프로덕션 사용자는 승격된 프로덕션 채널 배포만 받습니다.
4) 제어된 워크플로우에서만 채널 Switching을 사용하세요.
고급 팀에게는 QA / 관리자 사용자에게 제어된 채널 Switch를 노출하세요:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({
channel: 'staging',
triggerAutoUpdate: true
});
이것은 선택사항입니다. 대부분의 팀은 채널 assignments를 대시보드에서 사용하고 내부 사용자만 아니라 모든 고객에게 채널 Switch를 사용하지 않습니다.
운영 체크리스트
- 한 개의 앱 ID만 (중복된 프로덕션 / 스테이징 ID가 없음)
- 한 개의 기본 네이티브 빌드 PIPELINE
- 채널 mapping 문서화 (
staging,beta,production,hotfix) - CI / CD에서 Promotion 경로가 강제되었습니다
- 네이티브 빌드만 네이티브 변경에 따라 다시 빌드합니다
- 롤백이 정기적으로 테스트됩니다
실용적인 이점
이 접근 방식은 환경漂移을 제거하고 빌드 충돌을 줄이고修정을 가속화합니다:
- QA가 실제 바이너리를 받습니다 (가짜 '스테이징 앱' 식별자가 없음)
- TestFlight 경로가 안정적이므로
- 팀은 '두 개의 앱 ID 부담'을 피할 수 있습니다.
- JS-만의 수정을 Capgo에서 빠르게 푸시할 수 있습니다.
결과적으로, 관리는 더 단순해집니다: fewer artifacts, cleaner telemetry, 그리고 릴리즈 운영에서 더 적은 놀라움.
Capgo Environment Best Practices: Staging with One Mobile App ID에서 계속 진행하세요.
__CAPGO_KEEP_0__ Environment Best Practices: Staging with One Mobile App ID를 사용하여 Capgo Environment Best Practices: Staging with One Mobile App ID __CAPGO_KEEP_0__ 채널 채널 채널 __CAPGO_KEEP_0__ 채널 채널에 대한 구현 세부 정보 베타 테스트 솔루션 베타 테스트 솔루션의 제품 워크플로 버전 대상 솔루션 버전 대상 솔루션의 제품 워크플로