팀들은 일반적으로 모바일 환경을 위해 세 가지 접근 방식을 선택합니다.
- 두 개의 앱 ID(생산 + 미리 제작)
- 하나의 앱 ID + 동적 런타임 환경switching
- 하나의 앱 ID + Capgo 채널
첫 두 가지 접근 방식은 작동할 수 있지만, 실제 팀에서는 Capgo 채널 모델이 일반적으로 가장 깨끗합니다.
왜 중복된 앱 ID가 노이즈가 되는가
Using com.myapp 그리고 com.myapp.beta __CAPGO_KEEP_0__
- 두 개의 릴리스 PIPELINE
- 두 개의 PUSH ID, 깊은 링크 및 권한 매핑
- 두 개의 분석 및 충돌 식별자
- 환경 간에 다르며 구성 및 동작이 일관되지 않는 경우
스토어 콘솔, 팀 및 내부 QA 지침을 관리하는 두 개의 제품이 있습니다.
런타임 Switching Config이 왜 복잡한가요
‘한 앱 ID + 런타임 Switch’ 패턴은 일반적으로 앱이 시작 시 환경 변수 또는 플래그를 읽고 API, 키 및 업데이트 동작을 동적으로 라우팅합니다.
이것은 다음까지 작동합니다.
- QA 팀이 의도하지 않은 흐름을 우회하는 경우
- someone이 프로덕션에서 잘못된 엔드포인트를 사용하는 경우
- 환경 드리프트가 복잡한 버그를 일으키는 경우
- 사용자 기기에서 ‘이 바이너리가 사용하는 구성 버전은 무엇인가요?’를 디버그해야 하는 경우
그것은 각 릴리스마다 복잡도가 증가하고 팀의 속도가 느려지는 곳입니다.
Capgo 방식: 하나의 앱 ID, 여러 채널
Capgo는 환경 제어를 명확하게 하는 채널을 통해 이루어진다:
- App Store / Play에서 하나의 프로덕션 앱 ID를 유지하세요.
- “쉘” (원래의 네이티브 변경이 실제로 다시 빌드가 필요한 경우) 에 대한 한 개의 네이티브 바이너리를 배포하세요.
- 채널 대신 중복된 앱 식별자로 동작하지 않도록 동작을 라우팅하세요.
이것은 실제로 다음과 같은 것을 의미합니다:
production모든 사용자staging내부 QA 및 릴리스 후보beta초대된 테스터hotfix긴급 패치 트랙
Your TestFlight / Play 내부 테스트 앱은 여전히 staging 영원히.
JS/CSS/자산 업데이트를 Capgo에서 반복적으로 수행하여 새로운 네이티브 앱을 배포하지 않습니다.
실제 적용 구조
1) 네이티브 릴리스 기준
네이티브 바이너리가 여러 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
버전을 명시적으로 관리하는 경우:
bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production
3) 테스트 플라이트는 '항상 전제 생산'을 유지합니다.
iOS 워크플로우에서 이 의미는 테스트 플라이트 빌드가 전제 생산 업데이트와 연관되어 유지됩니다:
- 각 JS 변경에 대한 빈번한 네이티브 제출이 없습니다.
- QA는 실제 운영 code을 확인하기 위해 스테이징 채널을 통해 검증합니다.
- 운영 사용자는만 승인된 운영 채널 패키지를 받습니다.
4) 제어된 워크플로우에만 채널 Switch를 사용하십시오.
고급 팀에게는 QA/관리자 사용자에게 제어된 채널 Switch를 노출하십시오:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({
channel: 'staging',
triggerAutoUpdate: true
});
이것은 선택사항입니다. 대부분의 팀은 대시보드에서 채널 assignments를 사용하고 내부 사용자만 아니라 모든 고객에게 채널 Switch를 사용하지 않습니다.
운영 절차 목록
- 1개의 앱 ID만 사용하십시오 (중복된 운영/스테이징 ID 없음)
- 1개의 기본 네이티브 빌드 PIPELINE만 사용하십시오
- 채널 mapping 문서화 (
staging,beta,production,hotfix) - CI/CD에서 승인된 운영 채널 패키지로의 승진 경로가 강제됩니다.
- 네이티브 빌드만 네이티브 변경 사항이 있을 때만 다시 빌드하십시오.
- 롤백 테스트는 정기적으로 수행됩니다.
실용적인 이점
이 접근 방식은 환경漂移을 제거하고 빌드 충돌을 줄이고修정을 가속화합니다:
- QA가 실제 바이너리를 받을 수 있고 (가짜 '스테이징 앱' 식별자가 없음),
- 테스트 플라이트 경로가 안정적이므로
- 팀이 '두 앱 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 환경 최적화 방법: 단일 모바일 앱 ID를 사용한 스테이징 채널 Channels Channels 채널 Channels 채널 Channels 베타 테스트 솔루션 Channels 채널 버전 대상 솔루션