본문 바로가기
프로덕션 업데이트

모든 사용자에게 최신 수정 사항을 즉시 적용하세요

CLI 또는 CI에서 새로운 웹 번들을 upload하세요. 디바이스는 백그라운드에서 이를 download하며, 앱이 다시 포그라운드로 돌아올 때 실행됩니다. 배포 비율을 설정하고, Observe로 모니터링하며, 문제가 발생하면 즉시 롤백하세요.

카드 등록 없이 시작
자동 롤백 기능 내장
Web-layer 업데이트만 지원

문제점

스토어 출시만으로는 작은 버그 수정조차 너무 느립니다

스토어 출시 기반의 수정 방식

1

버그 발견

모니터링이나 고객 지원을 통해 화면 오류가 보고됩니다. 수정에는 단 몇 줄의 JavaScript나 CSS만 필요합니다.

2

새로운 바이너리 빌드

버전을 올리고 iOS와 Android용을 빌드한 뒤, 두 개의 스토어 제출물을 준비합니다.

3

심사 대기

스토어 심사는 보통 24~48시간이 걸리며, 때로는 훨씬 더 오래 걸립니다. 반려되면 처음부터 다시 기다려야 합니다.

4

사용자 업데이트 대기

승인 후에도 각 사용자가 새 버전을 직접 설치해야 합니다. 그 전까지 사용자는 이전 code를 실행하게 됩니다.

각 단계마다 수정 사항이 준비된 시점부터 사용자 기기에 적용될 때까지의 시간이 지연됩니다.

스토어 수정을 통한 배포가 느린 이유

24–48시간 이상

일반적인 스토어 심사 시간

Apple과 Google은 모든 새로운 바이너리를 심사합니다. 심사는 보통 24~48시간이 소요되며 때로는 훨씬 더 오래 걸릴 수도 있고, 거절되면 다시 제출해야 합니다.

사용자당

스토어 업데이트는 기기마다 다릅니다

스토어 업데이트는 사용자가 직접 설치하거나 자동 업데이트 설정이 활성화된 경우에만 기기에 적용됩니다. 일부 기기는 아주 오랫동안 이전 빌드에 머물러 있기도 합니다.

2개 스토어

수정할 때마다 두 번의 제출

동일한 웹 수정 사항이라도 App Store와 Google Play에 각각 별도로 제출해야 하며, 심사와 출시 과정도 각각 진행됩니다.

솔루션

live update가 사용자에게 전달되는 방식

이는 Capgo의 기본 업데이트 동작입니다. 업데이트 프롬프트나 강제 재시작이 없으며, 웹 레이어 변경을 위해 스토어에 다시 제출할 필요도 없습니다.

기본 업데이트 흐름

  1. 앱이 업데이트를 확인합니다

    앱이 포그라운드로 전환될 때와 앱이 열려 있는 동안 10분마다, updater가 Capgo에 해당 채널의 최신 bundle을 요청합니다.

    포그라운드 진입 시

  2. 백그라운드에서 다운로드

    사용자가 현재 버전을 사용하는 동안 새 bundle을 다운로드합니다. delta updates를 사용하면 변경된 파일만 다운로드합니다.

    중단 없음

  3. 다음 재개 시 적용

    사용자가 앱을 종료하면 updater가 bundle을 설치합니다. 다음에 앱을 열 때 새 버전이 실행됩니다.

    다음 포그라운드 진입 시

앱을 열자마자 새 버전을 보여줘야 하나요? Direct update 모드를 사용하면 스플래시 화면이 표시되는 동안 런칭 시점에 업데이트를 적용합니다.

Direct updates 알아보기

업데이트 동작 문서

작동 방식

Capgo로 프로덕션 팀이 버그를 수정하는 방법

이미 스토어에 출시된 Capacitor 앱의 일반적인 릴리스 과정입니다. 아래 모든 명령어는 Capgo CLI 문서에 기반합니다.

  1. 업데이터 최초 1회 설정

    Setup wizard를 실행한 후, 앱 시작 시 notifyAppReady()가 호출되는지 확인하세요. 해당 호출이 없는 bundle은 자동으로 롤백됩니다.

    npx @capgo/cli@latest init
    # in your app start-up code
    await CapacitorUpdater.notifyAppReady()
    notifyAppReady() 문서
  2. 프로덕션 일부 그룹에 수정 사항 업로드

    --delta를 사용하여 변경된 파일만 가져오게 하고, --rollout을 사용하여 소수의 기기부터 시작하세요. 나머지 사용자는 안정적인 bundle을 유지합니다.

    npx @capgo/cli@latest bundle upload --channel production --delta --rollout 5
    Progressive rollouts 문서
  3. Capgo로 잘못된 롤아웃 중단하기

    실패율 임계값을 설정하여 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 문서
  4. 모든 사용자에게 배포

    데이터가 정상적이라면 채널 내 모든 기기에 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됩니다.

  • 느린 네트워크나 데이터 제한 환경의 사용자를 위한 최소화된 download 용량
  • 기본 모드에서는 업데이트가 세션 도중이 아닌 세션 사이에 적용됩니다.
Delta updates 문서

--delta

변경된 파일만 download됨

자동 일시 중지가 가능한 점진적 롤아웃

다른 사용자들이 안정적인 bundle을 사용하는 동안, 특정 채널의 무작위 사용자 그룹에게만 새로운 bundle을 전송하세요. CLI 또는 콘솔에서 배포 비율을 높이거나, 정식 출시하거나, 롤백할 수 있습니다.

  • 실패율이 임계값을 넘으면 Auto-pause가 롤아웃을 일시 중지하거나 롤백할 수 있습니다.
  • Observe는 노출을 확대하기 전에 새 버전과 이전 버전을 비교합니다.
Progressive rollouts 문서

1–5%

일반적인 첫 번째 롤아웃 단계

자동 롤백

모든 업데이트는 제대로 시작되는지 증명해야 합니다. 새 bundle이 제때 notifyAppReady()를 호출하지 않으면 기기는 마지막 정상 bundle로 돌아가고, 새 bundle은 실패로 표시됩니다.

  • appReadyTimeout(기본 10초) 내에 notifyAppReady()가 호출되지 않으면 롤백이 트리거됩니다.
  • 채널 전체를 히스토리에 있는 이전 bundle로 롤백하세요
notifyAppReady() 문서

10초

자동 롤백 전 기본 appReadyTimeout

스토어 심사를 고려한 배포

Capgo는 JavaScript, CSS, 에셋과 같은 Capacitor 웹 레이어를 전달합니다. 네이티브 바이너리, 플러그인, 권한, entitlements 또는 앱 스토어 메타데이터는 변경하지 않습니다. 스토어 심사는 앱별로 진행되므로, 정책 준수 및 승인에 대한 책임은 사용자에게 있습니다.

  • 네이티브 기능, 플러그인, 권한 또는 앱 스토어 메타데이터가 변경될 때는 네이티브 스토어 릴리스를 사용하세요
  • 앱의 의도된 기능과 웹 레이어 업데이트 경로에 대해 리뷰어에게 명확하게 설명하세요
  • 매 제출 전 Apple 및 Google의 최신 정책을 검토하세요

프로덕션 팀의 활용 사례

Live Update 도입 후의 일상적인 릴리스 작업입니다. 각 카드는 문서를 연결합니다.

치명적 버그 수정

결제나 로그인 화면에 오류가 발생하면 웹 레이어 수정으로 해결하세요. 수정 사항을 upload하면 기기가 다음 업데이트 확인 시 이를 반영합니다.

업데이트 동작 문서

문구 및 콘텐츠 변경

새로운 바이너리를 빌드할 필요 없이 문구를 수정하거나, 도움말 텍스트를 업데이트하고, 이미지 및 기타 번들 자산을 교체하세요.

네이티브 호환성 문서

Observe에서 릴리스 상태 확인

새 번들과 이전 번들을 비교하세요: 이슈 발생률, 런칭 및 WebView 타이밍, 버전별 배포 마커를 확인할 수 있습니다.

Observe 문서

업데이트 알림으로 더 빠른 반영

채널의 번들을 변경한 후 silent update 알림을 보내면, 디바이스가 다음 포그라운드 진입 시점이 아닌 즉시 업데이트를 확인합니다.

업데이트 알림 보내기

이전 Native Build 보호

채널의 메이저 업데이트를 차단하여, 새로운 Native code가 필요한 번들이 이전 바이너리에 도달하지 않도록 설정하세요.

버전 타겟팅 문서

채널 히스토리에서 롤백하기

채널의 History 탭에서 이전 번들을 선택하여 해당 채널의 모든 디바이스에 즉시 다시 적용할 수 있습니다.

롤백 문서

프로덕션 앱을 위한 안정적인 인프라

Capgo는 2021년부터 프로덕션 앱에 Live Update를 제공해 왔습니다.

월간 업데이트 수
10억+
도달 디바이스 수
9,000만+
Capgo 사용 앱
4,700+
평균 API 지연 시간
~50ms

Capacitor로 빌드된 앱

트래픽이 많은 앱은 프로덕션 환경에서도 안정적인 UI 변경이 필요합니다

날씨, 공공 보건, 통신 앱은 정확한 인터페이스, 알림, 내비게이션에 의존합니다. 프로덕션 업데이트를 사용하면 사용자 채택률을 모니터링하며 검증된 인터페이스 수정 사항을 안전하게 배포할 수 있습니다.

Windy.com - 날씨 예보 앱 아이콘 날씨

Windy.com - 날씨 예보

지도, 알림, 내비게이션 수정 사항을 신중하게 배포해야 하는 날씨 앱.

Google Play 설치 수
32.9M
스토어 평점
4.7
Conecte SUS 앱 아이콘 의료

연결하기

가이드 및 서비스 정보의 신속하고 신뢰할 수 있는 업데이트가 필수적인 공공 보건 앱.

Google Play 설치 수
27.7M
스토어 평점
4.6
Mi Orange 앱 아이콘 도구

Mi Orange

알림 및 계정 정보가 빈번하게 변경되는 통신사 계정 앱.

Google Play 설치 수
930만
스토어 평점
4.2

고객 사례

Capgo로 배포하는 팀들의 이야기

5.0/5 개발 팀 평점 9,400+ 팀 리뷰 보기
Sergiu S의 사진

Sergiu S

drivolino GmbH 리드 개발자

“Capgo Capacitor Updater 플러그인 덕분에 업데이트 배포 방식이 완전히 바뀌었습니다. 며칠씩 걸리던 작업이 이제는 단 몇 분 만에 끝납니다.”

Kapil

NuTriQ 창립자

“App Store의 전체 리뷰 주기를 기다리지 않고 프로덕션 OTA 업데이트를 즉시 푸시할 수 있다는 점은 운영상 엄청난 이점이었습니다.”

Michael Haberler의 인물 사진

Michael Haberler

nethead emeritors

“업데이터 플러그인 정말 잘 만드셨네요. 제 환경에서는 완벽하게 동작하고, 라이브 업데이트 덕분에 테스트 주기가 훨씬 빨라졌습니다.”

자주 묻는 질문

프로덕션 팀이 자주 묻는 질문

업데이트가 기기에 전달되는 방식과 오류 발생 시 대처 방법.

사용자가 live update를 받는 시점은 언제인가요?

기본적으로 앱이 포그라운드로 전환될 때와 앱이 열려 있는 동안 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로 변경할 수 없는 것은 무엇인가요?

Live Update는 JavaScript, HTML, CSS 및 에셋과 같은 웹 레이어를 교체합니다. Native plugin, Capacitor 업그레이드, capacitor.config 변경 및 iOS 또는 Android 프로젝트 파일은 스토어 출시가 필요합니다. Capgo는 upload 시 bundle의 native 호환성을 확인하며, 채널 설정을 통해 이전 바이너리에 대한 업데이트를 차단할 수 있습니다.

네이티브 호환성 문서

다음 수정 사항을 live update로 배포하세요

트라이얼 기간 동안 실제 앱에서 전체 워크플로우를 직접 경험해 보세요: bundle을 upload하고, 일부 기기에 roll out한 뒤, 다시 roll back할 수 있습니다.