Skip to main content
튜토리얼

Capgo 환경 최적화 방법: 단일 모바일 앱 ID를 사용한 스테이징

A practical guide to avoid duplicate app IDs and fragile runtime flags by using Capgo channels for staging, QA, and production in Capacitor apps.

Martin Donadieu

Martin Donadieu

콘텐츠 마케터

Capgo 환경 최적화 방법: 단일 모바일 앱 ID를 사용한 스테이징

팀들은 일반적으로 모바일 환경에 대한 세 가지 접근 방식 중 하나를 선택합니다.

  1. 두 개의 앱 ID (생산 + 미리 제작)
  2. 단일 앱 ID + 동적 런타임 환경switching
  3. 단일 앱 ID + Capgo 채널

첫 두 가지는 작동하지만 장기적인摩擦를 일으킵니다. 실제 팀에서 Capgo 채널 모델은 일반적으로 가장 깨끗합니다.

중복된 앱 ID가 왜 노이즈가 되는지

사용하는 com.myappcom.myapp.beta 가 단순해 보이지만, 빠르게 중복이 발생합니다:

  • 두 개의 릴리즈 PIPELINE
  • 두 개의 푸시 ID, 깊은 링크, 그리고 권한 매핑
  • 두 개의 분석 및 충돌 ID
  • 환경 간에 일관되지 않은 동작과 config

마지막으로, 두 개의 제품을 스토어 콘솔, 팀, 그리고 내부 QA 지침을 관리해야 합니다.

런타임 Switching config이 왜 종종 복잡한지

‘한 앱 ID + 런타임 Switch’ 패턴은 일반적으로 앱이 시작할 때 환경 변수 또는 플래그를 읽고 API, 키, 업데이트 동작을 동적으로 재구성합니다.

This works until:

  • QA가 의도하지 않은 흐름을 우회하기 시작하여 config 상태가陈舊해지면
  • 프로덕션에서 잘못된 엔드포인트를 사용하는 경우
  • 환경 드리프트가 복잡한 버그를 일으키는 경우
  • 유저 디바이스에서 “이 바이너리가 사용하는 config 버전은?”를 디버그해야 하는 경우

이 복잡성은 각 릴리스마다 증가하고 팀의 속도가 느려지기 시작합니다.

The Capgo way: one app ID, many channels

Capgo makes environment control explicit through channels:

  • 앱 스토어 / 플레이에서 하나의 프로덕션 앱 ID를 유지하세요.
  • “쉘” (native 변경이 실제로 재빌드가 필요할 때까지) 에 대한 한 개의 네이티브 바이너리를 배포하세요.
  • 채널 대신 duplicated 앱 식별성을 통해 동작을 라우팅하세요.

실제로 이것은 다음과 같습니다:

  • production: 모든 사용자
  • staging: 내부 QA 및 릴리즈 후보
  • beta: 초대된 테스터
  • hotfix:緊急 패치 트랙

Your TestFlight/Play 내부 테스트 앱은 영원히 남아있을 수 있습니다. You는 JS/CSS/자산 업데이트를 __CAPGO_KEEP_0__에서 반복적으로 수행할 수 있습니다. 새로운 네이티브 앱을 릴리스하지 않고도. staging forever. You do JS/CSS/asset updates there repeatedly through Capgo without publishing a new native app.

네이티브 바이너리의 마지막 버전은 많은 JS 반복에서 동일하게 유지됩니다.

네이티브 표면 영역이 실제로 변경되었을 때만 네이티브 바이너리를 다시 빌드합니다.

bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual

2) 환경별 전용 채널 사용

채널을 사용하여 업데이트를 릴리스합니다:

__CAPGO_KEEP_0__

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를 사용하지 않습니다.

운영 체크리스트

  • 한 개의 앱 ID만 사용합니다 (중복된 프로덕션/스테이징 ID가 없습니다)
  • 원본 네이티브 빌드 PIPELINE
  • 채널 매핑 문서화 (staging, beta, production, hotfix)
  • CI/CD에서 프로모션 경로 강제
  • 실제 네이티브 변경만 네이티브 재빌드
  • 롤백 테스트 정기적으로

실용적인 이점

이 접근 방식은 환경 드리프트를 제거하고 빌드 충돌을 줄이고修정을 빠르게합니다:

  • QA가 실제 바이너리를 받을 수 있습니다 (가짜 '스테이징 앱' 식별자가 없습니다)
  • 테스트 플라이트 경로가 안정적입니다
  • 팀이 '두 앱 ID 부채'를 피합니다
  • JS-만의 수정을 Capgo에서 빠르게 푸시할 수 있습니다.

결과적으로 simpler governance: fewer artifacts, cleaner telemetry, and fewer surprises in release operations.

Capgo 환경 최적화: 단일 모바일 앱 ID를 사용한 스테이징

__CAPGO_KEEP_0__ 환경 최적화: 단일 모바일 앱 ID를 사용한 스테이징 Capgo Environment Best Practices: Staging with One Mobile App ID __CAPGO_KEEP_0__ 환경 최적화: 단일 모바일 앱 ID를 사용한 스테이징 계획 채널 라우팅 및 스테이지 롤아웃을 위해 채널 채널 채널 채널 베타 테스트 솔루션 베타 테스트 솔루션 채널 버전 목표 솔루션 버전 목표 솔루션의 제품 워크플로우에 대해.

Capacitor 앱에 대한 실시간 업데이트

웹层 버그가 활성화된 경우, Capgo을 통해 픽스를 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 마십시오. 사용자는 배경에서 업데이트를 받으며 네이티브 변경 사항은 일반적인 검토 경로를 유지합니다.

시작하기

블로그에서 최신 뉴스

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.