사용자가 거의 알아채지 못하는 가장 좋은 실시간 업데이트입니다.
일반적으로 세 가지 것을 의미합니다:
- 다운로드 크기가 작습니다.
- 배포가 제어됩니다.
- 문제가 발생하면 즉시 복구됩니다.
Capgo의 "keep OTA lean" 조언은 React Native 영역에서 작동하는 것과 동일합니다. 차이점은 Capgo이 Capacitor 팀에게 몇 가지 추가 조절 장치를 제공한다는 것입니다. Delta 업데이트, 채널, 자동 롤백, 버전 대상, 그리고 선택적 엔드 투 엔드 암호화.
이러한 기능들을 함께 사용하면 더 작은 패키지 크기, 더 빠른 설치, 그리고 운영에 필요한 더 적은 복잡성을 얻을 수 있습니다.
MAU가 동일한 경우에도 Lean은 중요합니다.
Capgo의 유용한 Capgo-특정 세부사항: MAU는 30일 동안 업데이트 서비스에 접촉한 월간 활성 장치의 수입니다.
bundle을 얇게 만드는 것은 주로 MAU 카운팅을 줄이는 trick이 아닙니다. 사용자와 팀이 실제로 느낀 부분을 개선하기 때문입니다:
- 셀룰러 또는 약한 Wi-Fi에서 더 빠른 다운로드
- 직접 업데이트를 통해 실패 또는 롤백된 릴리스에 대한 lãwasted bandwidth
- 테스트 또는 스테이징 릴리스의 경우 더 작은 폭파 반경
- Lean 업데이트는 실제로 속도, 안전성, 및 운영-discipline에 관한 것입니다.
1. Delta 업데이트를 기본값으로 설정하세요
만약에 단 하나의 일을 하게 된다면, 이 일을 하세요.
__CAPGO_KEEP_0__는 __CAPGO_KEEP_1__입니다.
Capgo’s delta 업데이트 업데이트 시에만 변경된 파일만 전송하여 전체 웹 번들 다시 다운로드하지 않도록 합니다. 이는 정기적인 OTA 성능의 가장 큰 단일 이익입니다.
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 만들어질 때
production 플릿이 delta 업데이트를 지원할 때만 사용하세요. 혼합된 플러그인 버전의 경우, manifest 기반 delta 전송을 지원하지 않는 더 오래된 장치에서는 업데이트를 다운로드할 수 없습니다. directUpdate이것은 사용자가 "업데이트 발견"과 "앱 다시 로드" 사이의 시간이 보이게 되는데, 이 시간이 더 길어질 수록 더 중요합니다.
2. 자산을 자산처럼 다루세요, 자바스크립트 짐처럼 다루지 마세요
대형 자산은 OTA 번들이 조용히 부풀어 오르는 곳입니다.
어떤 실제적인 규칙들이 있습니다:
- JavaScript 내부에 큰 이미지를 또는 미디어를 인라인하지 말고, 일반 자산 파일이 될 수 있는 경우에는 그렇게 하세요.
- 자주 변경되는 콘텐츠는 자체 CDN 또는 API에 두세요. 만약 그것이 shipped 앱 패키지 내에 살고 싶지 않다면.
- 마케팅 이미지를, 온보딩 비디오, 그리고 한 번의 캠페인 자산에 주의하세요. 그것들은 매번 릴리즈마다 교체됩니다.
- 안정된 자산은 안정되게 두세요. 델타 업데이트와 함께, 변경되지 않은 파일들은 다시 다운로드되지 않고 재사용됩니다.
Capgo를 빠르게 유지하는 가장 쉬운 방법 중 하나입니다. 앱이 커질 때마다 사용자들이 무분별한 미디어를 다운로드해야 하는 작은 UI 수정 패턴은 최악의 패턴입니다.
3. 실제 네이티브 변경에 대해 네이티브 릴리즈를 유지하세요
Capgo는 런타임에 로드되는 HTML, CSS, JavaScript, 그리고 자산을 업데이트합니다.
다음과 같은 것은 __CAPGO_KEEP_0__의 올바른 채널이 아닙니다:
- 새로운 네이티브 플러그인
- 권한 변경
capacitor.config.ts변경- iOS 또는 Android 네이티브 프로젝트 상태를 수정하는 모든 것.
그 라인은 성능에도 중요합니다. OTA 라인에 주요 구조적 변경을 계속 밀어 넣으면, 시간이 지나면서 업데이트 전략이 무거워지고 위험해집니다.
2개의 릴리스 라인을 의도적으로 사용하세요:
네이티브 라인
플러그인 변경, 권한 변경 및 네이티브 구성:
bun run build
bunx cap sync
그 다음 정상적인 스토어 릴리스를 배포하세요.
Capgo 라인
안전한 웹层 반복을 위해:
bun run build
bunx @capgo/cli@latest bundle upload --channel production --delta
최근에 많은 수명이 긴 자산을 추가한 경우에 자주 네이티브 베이스 라인을 업데이트하세요. 새로운 베이스 라인을 포함한 최신 스토어 빌드는 미래의 Capgo diff를 작게 유지합니다.
4. 채널을 사용하여 롤아웃 크기를 작게 유지하세요
Lean한 업데이트는 단순히 메가바이트만큼의 크기만 아니라, 업데이트가 좋은지 알기 전에 많은 장치가 업데이트를 받는 크기도 중요합니다.
Capgo의 채널 시스템 이는 업데이트 관리를 효율적이고 빠르게 유지하는 가장 깨끗한 방법입니다.
stagingQA 환경beta초대된 테스터production모든 사용자hotfix비상 복구
단순한 흐름은 다음과 같습니다.
- 업로드
staging. - 실제 기기에서 검증합니다.
- 제한된 채널 또는 백분율 기반 롤아웃을 통해 점진적으로 배포합니다.
- 건강 지수가 떨어지면 즉시 롤백합니다.
앱이 여러 네이티브 베이스라인이 있는 경우, 채널을 pair합니다. 버전 목표. 그 버전이 이전 바이너리와 불일치하거나 불필요한 무거운 패키지를 방지합니다.
팀이 더 긴밀한 검토 루프를 원한다면 Capgo도 잘 작동합니다. PR 미리보기. 제품, QA, 및 이해관계자들이 JS-만 변경을 기다리지 않고 테스트할 수 있도록 합니다.
5. 직접 업데이트 활성화 시, 시작 시간을 최적화 하세요
업데이트를 적용하고 싶은 속도에 따라 시작 경로가 더 엄격해야 합니다.
Capgo의 업데이트 동작 설명서에서는 Delta 업데이트와 pair하는 것을 명확히 권장합니다. directUpdate 그것이 올바른 기본값입니다.
두 번째 경계는 notifyAppReady().
import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()
10초 이내에 앱이 준비되지 않으면, 또는 __CAPGO_KEEP_0__ 설정에서 지정한 시간 이내에 앱이 준비되지 않으면, __CAPGO_KEEP_1__은 해당 번들을 유효하지 않게 표시하고 이전에 잘 작동하던 버전으로 복원할 수 있습니다. 이 롤백 동작은 운영 환경에서 원하는 동작이지만, 앱이 빠르게 시작되도록 유지해야 합니다. notifyAppReady() window, 또는 __CAPGO_KEEP_0__에서 설정한 시간 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:
- 정확한 위치에서 호출
notifyAppReady()중요한 경로에서 느린 부팅 시간 작업을 피하십시오 - 앱 상태를 저장하고 복원할 때 즉시 다시 로드하는 경우 주의하십시오
- 너무 넓은 롤아웃 전에 나쁜 네트워크 및 저성능 장치 시나리오를 테스트하십시오
- 최근에 검토하지 않은 경우 __CAPGO_KEEP_2__ 가이드는 다시 읽어보는 것이 좋습니다.
6. 내부 업데이트 채널을 사용하여 불필요한 네이티브 리빌드를 피하십시오 __CAPGO_KEEP_0__ __CAPGO_KEEP_1__
__CAPGO_KEEP_2__
모바일 팀의 많은 팀은 명확히 웹 전용인 변경 사항에 대해 빌드하는 시간을浪費합니다.
변경 사항이:
- 복사
- UI 개선
- 온보딩 플로우
- 가격화 화면 로직
- 분석 연결
- 기능 플래그
- prompt 또는 API 응답 렌더링
그런 다음 Capgo 업데이트는 종종 더 빠른 검토 항목입니다.
이것은 더 적은 네이티브 리빌드, 더 적은 TestFlight churn, 그리고 팀의 더 긴 피드백 루프입니다. 이것은 Capgo의 가장 미사용된 이점 중 하나입니다: 네이티브/웹 경계를 깨지지 않고 OTA 차량으로 리뷰 및 QA 작업을 더 많이 이동할 수 있습니다.
Capgo 업데이트를 효율적으로 유지하는 방법에 대한 __CAPGO_KEEP_0__ __CAPGO_KEEP_1__
__CAPGO_KEEP_2__
__CAPGO_KEEP_3__
__CAPGO_KEEP_4__
__CAPGO_KEEP_5__
- __CAPGO_KEEP_6__ __CAPGO_KEEP_7__,
- __CAPGO_KEEP_8__ __CAPGO_KEEP_9__,
- __CAPGO_KEEP_10__
__CAPGO_KEEP_11__
- 속도 향상을 위해 "lean"
- 배달 제어를 위해 암호화
- 배포 제어를 위해 채널
- 복구를 위해 롤백
실용적인 "lean Capgo" 워크플로우
간단한 기본 운영 모델을 원한다면 사용하세요:
- 원본 및 OTA 릴리스 경로를 분리하세요.
- JS 변경 사항을 업로드할 때
--delta기본적으로 사용하세요. - 채널을 사용하여
staging그리고beta채널을 업로드하기 전에production. - 관찰 배포 후 업데이트 통계 및 로그를 확인하세요. 배포 후에만 업데이트 통계 및 로그를 확인하는 것이 아니라, 배포 전에도 확인하세요.
- PR을 설치 가능한 미리보기로 변환하여 네이티브 빌드가 필요하지 않은 경우.
- 가능한 경우 큰 크기의 자주 변경되는 미디어를 번들에서 제외하세요.
- 주요 자산의 성장 또는 네이티브 변경 후 네이티브 기준선을 갱신하세요.
- 처리
notifyAppReady()및 롤백 동작을 릴리스 엔지니어링으로 간주하세요. 설정 트리비아가 아닙니다.
이 combination은 일반적인 '변경된 것만 업로드' 접근법보다 오래 지속되는 빠른 상태를 유지합니다.
마무리 생각
Capgo 팀에게서 'lean and fast'는 단순히 번들 크기 문제가 아닙니다.
릴리스 디자인 문제입니다.
__CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요.
Capgo 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요.
Capgo를 사용하는 경우 How to Keep Capgo Updates Lean and Fast __CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요. __CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요. __CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요. __CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요. __CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요. __CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요. __CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요. __CAPGO_KEEP_0__ 업데이트를 빠르고 가볍게 유지하는 방법을 계속하세요. Capgo 업데이트를 효율적이고 빠르게 유지하는 방법 버전 목표 솔루션 Capgo 업데이트를 효율적이고 빠르게 유지하는 방법