Windy.com - 날씨 예보
지도, 알림, 내비게이션 수정 사항을 신중하게 배포해야 하는 날씨 앱.
- Google Play 설치 수
- 32.9M
- 스토어 평점
- 4.7
CLI 또는 CI에서 새로운 웹 번들을 upload하세요. 디바이스는 백그라운드에서 이를 download하며, 앱이 다시 포그라운드로 돌아올 때 실행됩니다. 배포 비율을 설정하고, Observe로 모니터링하며, 문제가 발생하면 즉시 롤백하세요.
문제점
버그 발견
모니터링이나 고객 지원을 통해 화면 오류가 보고됩니다. 수정에는 단 몇 줄의 JavaScript나 CSS만 필요합니다.
새로운 바이너리 빌드
버전을 올리고 iOS와 Android용을 빌드한 뒤, 두 개의 스토어 제출물을 준비합니다.
심사 대기
스토어 심사는 보통 24~48시간이 걸리며, 때로는 훨씬 더 오래 걸립니다. 반려되면 처음부터 다시 기다려야 합니다.
사용자 업데이트 대기
승인 후에도 각 사용자가 새 버전을 직접 설치해야 합니다. 그 전까지 사용자는 이전 code를 실행하게 됩니다.
각 단계마다 수정 사항이 준비된 시점부터 사용자 기기에 적용될 때까지의 시간이 지연됩니다.
24–48시간 이상
일반적인 스토어 심사 시간
Apple과 Google은 모든 새로운 바이너리를 심사합니다. 심사는 보통 24~48시간이 소요되며 때로는 훨씬 더 오래 걸릴 수도 있고, 거절되면 다시 제출해야 합니다.
사용자당
스토어 업데이트는 기기마다 다릅니다
스토어 업데이트는 사용자가 직접 설치하거나 자동 업데이트 설정이 활성화된 경우에만 기기에 적용됩니다. 일부 기기는 아주 오랫동안 이전 빌드에 머물러 있기도 합니다.
2개 스토어
수정할 때마다 두 번의 제출
동일한 웹 수정 사항이라도 App Store와 Google Play에 각각 별도로 제출해야 하며, 심사와 출시 과정도 각각 진행됩니다.
솔루션
이는 Capgo의 기본 업데이트 동작입니다. 업데이트 프롬프트나 강제 재시작이 없으며, 웹 레이어 변경을 위해 스토어에 다시 제출할 필요도 없습니다.
앱이 포그라운드로 전환될 때와 앱이 열려 있는 동안 10분마다, updater가 Capgo에 해당 채널의 최신 bundle을 요청합니다.
포그라운드 진입 시
사용자가 현재 버전을 사용하는 동안 새 bundle을 다운로드합니다. delta updates를 사용하면 변경된 파일만 다운로드합니다.
중단 없음
사용자가 앱을 종료하면 updater가 bundle을 설치합니다. 다음에 앱을 열 때 새 버전이 실행됩니다.
다음 포그라운드 진입 시
앱을 열자마자 새 버전을 보여줘야 하나요? Direct update 모드를 사용하면 스플래시 화면이 표시되는 동안 런칭 시점에 업데이트를 적용합니다.
Direct updates 알아보기작동 방식
이미 스토어에 출시된 Capacitor 앱의 일반적인 릴리스 과정입니다. 아래 모든 명령어는 Capgo CLI 문서에 기반합니다.
Setup wizard를 실행한 후, 앱 시작 시 notifyAppReady()가 호출되는지 확인하세요. 해당 호출이 없는 bundle은 자동으로 롤백됩니다.
npx @capgo/cli@latest init
# in your app start-up code
await CapacitorUpdater.notifyAppReady()
notifyAppReady() 문서
--delta를 사용하여 변경된 파일만 가져오게 하고, --rollout을 사용하여 소수의 기기부터 시작하세요. 나머지 사용자는 안정적인 bundle을 유지합니다.
npx @capgo/cli@latest bundle upload --channel production --delta --rollout 5
Progressive rollouts 문서
실패율 임계값을 설정하여 auto-pause를 활성화하세요 (500 basis points는 5%입니다). 실패율이 임계값을 넘으면 Capgo가 롤아웃을 롤백합니다. 실행 중인 새 버전은 Observe에서 확인할 수 있습니다.
npx @capgo/cli@latest channel set production \
--auto-pause-enabled \
--auto-pause-failure-rate-bps 500 \
--auto-pause-action rollback
Observe 문서
데이터가 정상적이라면 채널 내 모든 기기에 bundle을 배포하세요. 문제가 있다면 롤아웃 코호트를 다시 stable로 되돌리세요.
npx @capgo/cli@latest channel set production --rollout-promote
# or, if something looks wrong
npx @capgo/cli@latest channel set production --rollout-rollback
Rollbacks 문서
사용자에게 예기치 못한 경험을 주지 않으면서도 빈번하게 배포할 수 있는 프로덕션 팀용 컨트롤러.
--delta를 사용하여 upload하면 디바이스는 현재 bundle 이후 변경된 파일만 download합니다. 변경이 거의 없는 대용량 에셋은 한 번만 download됩니다.
--delta
변경된 파일만 download됨
다른 사용자들이 안정적인 bundle을 사용하는 동안, 특정 채널의 무작위 사용자 그룹에게만 새로운 bundle을 전송하세요. CLI 또는 콘솔에서 배포 비율을 높이거나, 정식 출시하거나, 롤백할 수 있습니다.
1–5%
일반적인 첫 번째 롤아웃 단계
모든 업데이트는 제대로 시작되는지 증명해야 합니다. 새 bundle이 제때 notifyAppReady()를 호출하지 않으면 기기는 마지막 정상 bundle로 돌아가고, 새 bundle은 실패로 표시됩니다.
10초
자동 롤백 전 기본 appReadyTimeout
Capgo는 JavaScript, CSS, 에셋과 같은 Capacitor 웹 레이어를 전달합니다. 네이티브 바이너리, 플러그인, 권한, entitlements 또는 앱 스토어 메타데이터는 변경하지 않습니다. 스토어 심사는 앱별로 진행되므로, 정책 준수 및 승인에 대한 책임은 사용자에게 있습니다.
Live Update 도입 후의 일상적인 릴리스 작업입니다. 각 카드는 문서를 연결합니다.
결제나 로그인 화면에 오류가 발생하면 웹 레이어 수정으로 해결하세요. 수정 사항을 upload하면 기기가 다음 업데이트 확인 시 이를 반영합니다.
업데이트 동작 문서채널의 번들을 변경한 후 silent update 알림을 보내면, 디바이스가 다음 포그라운드 진입 시점이 아닌 즉시 업데이트를 확인합니다.
업데이트 알림 보내기Capgo는 2021년부터 프로덕션 앱에 Live Update를 제공해 왔습니다.
팀의 요구사항에 맞는 솔루션을 찾아보세요
Capacitor로 빌드된 앱
날씨, 공공 보건, 통신 앱은 정확한 인터페이스, 알림, 내비게이션에 의존합니다. 프로덕션 업데이트를 사용하면 사용자 채택률을 모니터링하며 검증된 인터페이스 수정 사항을 안전하게 배포할 수 있습니다.
지도, 알림, 내비게이션 수정 사항을 신중하게 배포해야 하는 날씨 앱.
가이드 및 서비스 정보의 신속하고 신뢰할 수 있는 업데이트가 필수적인 공공 보건 앱.
알림 및 계정 정보가 빈번하게 변경되는 통신사 계정 앱.
drivolino GmbH 리드 개발자
“Capgo Capacitor Updater 플러그인 덕분에 업데이트 배포 방식이 완전히 바뀌었습니다. 며칠씩 걸리던 작업이 이제는 단 몇 분 만에 끝납니다.”
NuTriQ 창립자
“App Store의 전체 리뷰 주기를 기다리지 않고 프로덕션 OTA 업데이트를 즉시 푸시할 수 있다는 점은 운영상 엄청난 이점이었습니다.”
nethead emeritors
“업데이터 플러그인 정말 잘 만드셨네요. 제 환경에서는 완벽하게 동작하고, 라이브 업데이트 덕분에 테스트 주기가 훨씬 빨라졌습니다.”
자주 묻는 질문
업데이트가 기기에 전달되는 방식과 오류 발생 시 대처 방법.
기본적으로 앱이 포그라운드로 전환될 때와 앱이 열려 있는 동안 10분마다 업데이트를 확인합니다. 새 bundle은 백그라운드에서 download되며, 사용자가 앱을 종료할 때 설치된 후 다음 앱 실행 시 적용됩니다. autoUpdate 설정으로 이 동작을 변경할 수 있습니다.
업데이트 동작 문서네. 채널의 bundle을 변경한 후 콘솔에서 업데이트 알림을 보내거나, bundle upload 시 --send-update-notification 옵션을 추가하세요. 기기에 silent push가 전송되어 즉시 업데이트를 확인합니다. 이를 위해 iOS 및 Android 푸시 자격 증명이 포함된 Capgo Notifications가 필요합니다. 배포는 최선을 다해 수행되나, 오프라인 상태이거나 앱이 강제 종료된 경우 다음 앱 실행 시 확인됩니다.
업데이트 알림 보내기새 bundle이 10초(기본 appReadyTimeout) 이내에 notifyAppReady()를 호출하지 않으면, 기기는 마지막으로 정상 작동하던 bundle로 복구하고 새 bundle을 실패로 표시합니다. 앱 실행에는 문제가 없지만 버그가 있는 경우, progressive rollout을 중단하거나 채널 히스토리에서 이전 bundle을 선택하세요.
Rollback 문서--rollout 옵션으로 bundle를 upload하여, 다른 사용자는 안정적인 버전을 유지하는 동안 채널의 특정 비율(sticky share)에만 무작위로 배포할 수 있습니다. CLI 또는 콘솔에서 배포 비율을 높이거나, 프로모션하거나, 롤백할 수 있습니다. Auto-pause 기능을 사용하면 실패율이 임계값을 넘을 때 노출을 자동으로 중단할 수 있습니다.
Progressive rollouts 문서Live Update는 JavaScript, HTML, CSS 및 에셋과 같은 웹 레이어를 교체합니다. Native plugin, Capacitor 업그레이드, capacitor.config 변경 및 iOS 또는 Android 프로젝트 파일은 스토어 출시가 필요합니다. Capgo는 upload 시 bundle의 native 호환성을 확인하며, 채널 설정을 통해 이전 바이너리에 대한 업데이트를 차단할 수 있습니다.
네이티브 호환성 문서트라이얼 기간 동안 실제 앱에서 전체 워크플로우를 직접 경험해 보세요: bundle을 upload하고, 일부 기기에 roll out한 뒤, 다시 roll back할 수 있습니다.