사용자가 거의 알아채지 못하는 라이브 업데이트는 최고입니다.
그것은 일반적으로 세 가지 것을 의미합니다.
- 다운로드 크기는 작습니다.
- 롤아웃은 제어됩니다.
- Recovery는 잘못된 경우에 즉시 복구됩니다.
React Native에서 작동하는 "OTA lean을 유지하세요"라는 조언과 Capgo의 차이점은 Capgo이 Capacitor 팀에게 몇 가지 추가 조절 장치를 제공한다는 것입니다. Delta 업데이트, 채널, 자동 롤백, 버전 대상, and optional end-to-end 암호화.
이러한 기능을 함께 사용하면 패키지 크기가 작아지고 설치 속도가 빨라지고 운영 메시지가 훨씬 줄어듭니다.
MAU가 동일한 경우에도 Lean은 중요합니다.
Capgo-specific 한 유용한 세부 사항: Capgo MAU는 실제로 30일 동안 업데이트 서비스에 접촉한 월간 활성 기기 수를 의미합니다.
bundle 크기를 줄이는 것은 주로 MAU 카운팅을 줄이는 trick이 아니며, 실제로 사용자와 팀이 느낄 수 있는 부분을 개선하기 때문에 중요합니다.
- 셀룰러 네트워크나 약한 Wi-Fi 환경에서 더 빠른 다운로드
- 직접 업데이트 통해 보다 나은 경험
- 실패하거나 롤백된 릴리스에 대한
- 실패하거나 롤백된 릴리스에 대한
실패하거나 롤백된 릴리스에 대한
Lean 업데이트
Lean 업데이트
Capgo’s Lean 업데이트 Lean 업데이트
bun run build
bunx @capgo/cli@latest bundle upload --channel staging --delta
QA 테스트가 끝나면:
bunx @capgo/cli@latest bundle upload --channel production --delta
CI가 엄격하게 유지되기를 원한다면 --delta-only 누군가가 오류로 인해 전체 배포 업로드로 돌아가지 않도록 하려면
bunx @capgo/cli@latest bundle upload --channel production --delta-only
사용하세요. --delta-only 만약 프로덕션 플릿이 델타 업데이트를 지원한다면만 사용하세요. 혼합된 플러그인 버전에서, 델타 배포를 지원하지 않는 오래된 기기는 업데이트를 다운로드할 수 없습니다.
이것은 특히 directUpdate,를 사용할 때 더 중요합니다. 업데이트 발견
와
앱 다시 로드
사이의 시간이 사용자에게 보이기 때문입니다.
- 2. 자산을 자산으로 다루세요, 자바스크립트 부하가 아니라고.
- Keep frequently changing content on your own CDN or API if it does not need to live inside the shipped app bundle.
- 어떤 실제 규칙:
- 안정된 자산은 안정되게 유지하세요. 델타 업데이트와 함께, 변경되지 않은 파일은 다시 다운로드하는 대신 재사용됩니다.
Capgo의 성능을 유지하는 가장 쉬운 방법 중 하나입니다. 작은 UI 수정이 사용자에게 많은 관련 없는 미디어를 다운로드하도록 강요하는 가장 나쁜 패턴입니다.
3. 실제 네이티브 변경에 대한 네이티브 릴리즈를 유지하세요
Capgo은 런타임에 로드되는 자원, HTML, CSS, JavaScript, 및 자산을 업데이트합니다.
다음은 올바르지 않은 채널입니다:
- 새 네이티브 플러그인
- 권한 변경
capacitor.config.ts변경- iOS 또는 Android 네이티브 프로젝트 상태를 수정하는 것
그 라인은 성능에도 중요합니다. OTA 채널에 주요 구조적 변경을 계속 밀어 넣으면 업데이트 전략이 무거워지고 위험도가 증가하는 것입니다.
목적을 가지고 두 개의 릴리스 채널을 사용하세요:
네이티브 채널
플러그인 변경, 권한 변경 및 네이티브 구성:
bun run build
bunx cap sync
그런 다음 일반 스토어 릴리즈를 배포합니다.
Capgo 경로
안전한 웹层 반복을 위해:
bun run build
bunx @capgo/cli@latest bundle upload --channel production --delta
최근에 많은 수명이 긴 자산을 추가한 경우에만, 자주 네이티브 베이스 라인을 갱신하세요. 새로운 스토어 빌드에서는 그 새로운 베이스 라인을 임베드합니다. 이로 인해 미래의 Capgo diff가 작아집니다.
4. 채널을 사용하여 롤아웃 크기를 작게 유지하세요
‘Lean’ 업데이트는 단순히 메가바이트만큼의 크기만큼의 것이 아닙니다. 또한 업데이트가 좋은지 알기 전에 업데이트를 받는 장치의 수에 대한 것입니다.
Capgo’s 채널 시스템 은 업데이트를 받는 장치의 수를 제어하는 가장 깨끗한 방법입니다:
stagingQAbeta초대된 테스터production모든 사람에게hotfix비상 복구를 위한
간단한 흐름은 다음과 같습니다:
- 업로드
staging. - 실제 장치에서 검증합니다.
- 통제 채널 또는 퍼센티지 기반 롤아웃을 통해 점진적으로 배포합니다.
- 건강이 떨어지면 즉시 롤백합니다.
실제로 여러 개의 네이티브 베이스 라인에 있는 앱이 있다면, pair 채널을 버전 대상과 함께 사용하세요. 이것은 더 오래된 바이너리에서 불필요한 또는 무거운 패키지를 차단합니다.팀이 더 긴 리뷰 루프를 원한다면, __CAPGO_KEEP_0__도 잘 작동합니다.
For teams that want even tighter review loops, Capgo also works well for __CAPGO_KEEP_0__. 제품, QA, 및 이해관계자들은 TestFlight 또는 Play 내부 빌드 기다리지 않고 JS-only 변경을 테스트할 수 있습니다.
5. 직접 업데이트 활성화 시, 최적화된 시작 시간을 선택하세요
업데이트가 적용되는 속도에 따라 시작 경로의 discipline 수준이 결정됩니다.
Capgo’s 업데이트 동작 docs는 Delta 업데이트와 pair하는 것을 명확히 권장합니다. 그게 올바른 기본 설정입니다. directUpdate 두 번째 경계는
앱이 기본 10초 또는 __CAPGO_KEEP_0__ config에서 설정한 시간 내에 준비되지 않으면, __CAPGO_KEEP_1__은 이전에 잘 작동하던 버전으로 롤백할 수 있습니다. 그 롤백 동작이 프로덕션에서 원하는 동작이지만, 시작 시간을 깨끗하게 유지해야 합니다: notifyAppReady().
import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()
시작 시간을 깨끗하게 유지하기 위해 Call notifyAppReady() __CAPGO_KEEP_0__’s appReadyTimeout you set in your Capacitor config, Capgo can mark that bundle invalid and restore the previous good version. That rollback behavior is what you want in production, but it also means you should keep startup clean:
- __CAPGO_KEEP_0__
notifyAppReady()올바른 위치에 - 중요한 경로에서 느린 부팅 시간 작업을 피하십시오.
- 즉시 다시 로드할 경우 앱 상태를 신중히 저장하고 복원하십시오.
- rộng泛한 배포 전에 나쁜 네트워크 및 저성능 장치 시나리오를 테스트하십시오.
최근에 검토하지 않은 경우, "notifyAppReady" 가이드는 다시 읽어보는 것이 가치가 있습니다. 6. 내부 업데이트 채널을 사용하여 불필요한 네이티브 재빌드 대신 사용하십시오. 많은 모바일 팀은 명백히 웹 전용인 변경 사항에 대해 명확히 빌드하는 시간을浪費합니다.
변경이:
복사:
UI 폴리시:
- UI
- UI
- 온보딩 플로우
- 가격화 화면 로직
- 분석 연결
- 기능 플래그
- API 또는 API 응답 렌더링
Capgo 업데이트가 일반적으로 빠른 검토 항목입니다.
이것은 Capgo의 가장 미사용된 이점 중 하나입니다: OTA 라인에 리뷰 및 QA 작업을 더 많이 이동할 수 있습니다. native/web 경계를 깨뜨리지 않고.
Capacitor에 대한 한 개의 모바일 앱 ID를 사용하여 스테이징 이 항목은 이 문제를 시간이 지남에 따라 유지하는 실제적인 방법을 다룹니다.
7. 가볍게 유지하고 __CAPGO_KEEP_0__를 분리하세요
작은 패키지와 안전한 패키지는 서로 다른 문제를 해결합니다.
채널은 자격을 제어합니다. 그들은 혼자서 배포를 암호화하는 묶음을 만들지 않습니다.
더 강한 배포 보증이 필요합니다:
- 켜기 라이브 업데이트 암호화,
- 사용 사용자 지정 저장소 또는 자체 호스팅 배포,
- __CAPGO_KEEP_0__
업데이트 크기는 무시되지 않습니다. 그것은 단순히 두 가지 측면을 모두 최적화해야 한다는 것을 의미합니다:
- 속도에 대한 최적화:
- 배포를 위한 암호화:
- 롤아웃을 위한 채널:
- 롤백을 위한 복구.
실용적인 "가볍고 Capgo" 워크플로우
기본적인 운영 모델을 간단하게 사용하고 싶다면 이 옵션을 사용하세요.
- 원본과 OTA 릴리즈 채널을 분리하세요.
- JS 변경 사항을
--delta기본적으로 - 을 사용하세요.
staging와beta채널을 사용하기 전에production. - 을 확인하세요. 롤아웃 후에만 업데이트 통계와 로그를 확인하세요.
- 원본 빌드가 필요하지 않다면 PR을 설치 가능한 미리보기로 변환하세요.
- __CAPGO_KEEP_0__의 큰, 자주 변경되는 미디어를 가능한 한 번들에서 제거하십시오.
- 주요 자산 성장 또는 네이티브 변경 후 네이티브 베이스 라인 다시 설정하십시오.
- Treat
notifyAppReady()and rollback behavior as part of release engineering, not setup trivia.
그 combination은 일반적인 “업로드 한 변경 사항만” 접근법보다 오래 동안 빠르게 유지됩니다.
Closing thought
Capgo 팀에게는 “lean and fast”가 단순히 번들 크기 문제만이 아닙니다.
그것은 릴리즈 디자인 문제입니다.
Delta 업데이트를 사용하여 전송 크기, 채널을 사용하여 롤아웃 크기, 롤백을 사용하여 실패 크기. OTA를 그렇게 생각하면 업데이트가 앱, 팀, 사용자 베이스가 커질 때도 빠르게 유지됩니다.
How to Keep Capgo Updates Lean and Fast에서 계속 진행하십시오.
__CAPGO_KEEP_0__을 사용하는 경우 How to Keep Capgo Updates Lean and Fast에서 계속 진행하십시오. 채널 라우팅과 스테이지 롤아웃을 계획하고 연결하세요. 채널 채널 채널 채널 베타 테스트 솔루션 베타 테스트 솔루션의 제품 워크플로우에 대해 버전 대상 솔루션 버전 대상 솔루션의 제품 워크플로우에 대해 Written by implementation detail in __CAPGO_KEEP_0__