메인 콘텐츠로 바로 가기
튜토리얼

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

Capgo 환경 최적화: 단일 모바일 앱 ID를 사용하여 스테이징, QA, 및 프로덕션을 위한 Capacitor 앱의 채널을 사용하여 중복된 앱 ID 및 약한 런타임 플래그를 피하는 방법

마틴 도나디유

Martin Donadieu

컨텐츠 마케터

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

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

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

첫 두 가지 방법은 작동할 수 있지만, 팀에서 장기적인摩擦를 일으키게 됩니다. 실제 팀에서는 Capgo 채널 모델이 일반적으로 가장 깨끗합니다.

중복된 앱 ID가 노이즈가 되는 이유

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

  • 두 개의 릴리스 PIPELINE
  • 두 개의 푸시 ID, 깊은 링크 및 권한 매핑
  • 두 개의 분석 및 충돌 식별자
  • 환경 간에 일관성이 없는 동작과 다이버전트 구성

스토어 콘솔, 팀 및 내부 QA 지침을 관리하는 두 개의 제품으로 끝나게 됩니다.

런타임 Switching 구성이 종종 복잡한 이유

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

이것은 다음까지 작동합니다.

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

그것의 복잡성이 각 릴리스마다 증가하고, 팀의 속도가 느려지는 곳입니다.

Capgo 방식: 하나의 앱 ID, 여러 채널

Capgo는 채널을 통해 환경 제어를 명확하게합니다.

  • App Store / Play에서 하나의 프로덕션 앱 ID를 유지하세요.
  • '쉘' (native 변경이 실제로 재빌드가 필요한 경우까지) 에 대한 한 개의 네이티브 바이너리를 배포하세요.
  • 채널 대신 중복된 앱 식별성을 통해 동작을 라우팅하세요.

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

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

TestFlight / Play 내부 테스트 앱은 여전히 __CAPGO_KEEP_0__에 머물 수 있습니다. 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) 제어된 워크플로우에만 채널 Switching을 사용하십시오.

고급 팀에게는 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가 가능합니다: 더 적은 아티팩트, 더 깨끗한 테마트리, 그리고 릴리스 운영에서 더 적은 충격.

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

웹-layer 버그가 실시간으로 활성화되면, Capgo를 통해 픽스를 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 말라. 사용자는 배경에서 업데이트를 받으면서 네이티브 변경 사항은 일반적인 리뷰 경로에 남아있다.

시작하기

최신 블로그 글

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