__CAPGO_KEEP_0__의 가장 좋은 라이브 업데이트는 사용자가 거의 알아채지 못하는 업데이트다.
일반적으로 세 가지 조건이 필요하다.
- 다운로드 크기는 작다.
- 롤아웃은 제어된다.
- Recovery is instant if something goes wrong.
Capgo의 경우, React Native에서 작동하는 동일한 'OTA lean' 유지 방법이 적용됩니다. 차이점은 Capgo이 Capacitor 팀에게 몇 가지 추가 조정기를 제공한다는 것입니다. Delta 업데이트, 채널, 자동 롤백, 버전 대상그리고 선택적 끝-to-끝 암호화.
이러한 기능들을 함께 사용하면 더 작은 패키지 크기, 더 빠른 설치, 그리고 운영에 대한 더 적은 혼란이 발생합니다.
Lean은 MAU가 동일할 때도 중요합니다.
Capgo에 대한 유용한 세부 사항: Capgo MAU는 30일 이내에 업데이트 서비스에 접촉한 월간 활성 기기 수를 의미합니다.
bundle을 얇게 유지하는 것은 주로 MAU 카운팅을 줄이기 위한 트릭이 아닙니다. 중요한 것은 사용자와 팀이 실제로 느낄 수 있는 부분을 개선하는 것입니다.
- __CAPGO_KEEP_0__의
- 셀룰러 또는 약한 Wi-Fi에서 더 빠른 다운로드 __CAPGO_KEEP_0__의
- 직접 업데이트
- 실패 또는 롤백된 릴리스에 대한 __CAPGO_KEEP_0__의
실패 또는 롤백된 릴리스에 대한 __CAPGO_KEEP_0__의
__CAPGO_KEEP_0__의
Lean 업데이트는 정말로 속도, 안전성 및 운영-discipline에 대해 이야기합니다.
Capgo’s 만약에 하나의 일을 하게 된다면, 이 일을 하세요. __CAPGO_KEEP_0__의
bun run build
bunx @capgo/cli@latest bundle upload --channel staging --delta
Delta 업데이트는 변경된 파일만 보내고 전체 웹 번들을 다시 다운로드하지 않습니다. 그것이 정기적인 OTA 성능의 가장 큰 단일 이익입니다.
bunx @capgo/cli@latest bundle upload --channel production --delta
CI가 엄격하게 유지되기를 원한다면 --delta-only 누군가가 오류로 인해 전체 배포 업로드로 돌아가지 않도록 하려면
bunx @capgo/cli@latest bundle upload --channel production --delta-only
사용하지 마세요. --delta-only 만약 프로덕션 플릿이 델타 업데이트를 지원한다면만 사용하세요. 혼합된 플러그인 버전의 경우, 델타 배포를 지원하지 않는 오래된 기기는 업데이트를 다운로드할 수 없습니다.
이것은 특히 __CAPGO_KEEP_0__를 사용할 때 더 중요합니다. 업데이트 발견부터 앱 재로드까지의 시간이 사용자에게 보이기 때문입니다. directUpdate2. 자산을 자산으로 다루세요. 자바스크립트 부하가 아닙니다.
OTA 배포에서 큰 자산은 조용히 불량입니다.
어떤 실용적인 규칙이 있습니다:
큰 이미지를 또는 미디어를 자바스크립트 내부에 인라인하지 마세요. 일반 자산 파일이면 충분합니다.
- 자주 변경되는 콘텐츠는 자체 CDN 또는 __CAPGO_KEEP_0__에 두세요. 앱 배포 패키지 내에 살펴야 하는 것은 아닙니다.
- Keep frequently changing content on your own CDN or API if it does not need to live inside the shipped app bundle.
- 이것은 특히 __CAPGO_KEEP_0__를 사용할 때 더 중요합니다. 업데이트 발견부터 앱 재로드까지의 시간이 사용자에게 보이기 때문입니다.
- __CAPGO_KEEP_0__의 안정적인 자산은 안정적입니다. 델타 업데이트로 인해 변경되지 않은 파일은 다시 다운로드하는 대신 재사용됩니다.
앱이 성장하는 동안 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의 채널 시스템 은 그에 대한 제어를 가장 깨끗하게 관리하는 방법입니다:
stagingQAbeta초대된 테스터production모든 사용자에게hotfix비상 복구를 위한
A simple flow는 다음과 같습니다.
- 업로드
staging. - 실제 기기에서 검증합니다.
- 제한된 채널 또는 퍼센티지 기반 롤아웃을 통해 점진적으로 배포합니다.
- 건강 지수가 떨어지면 즉시 롤백합니다.
앱이 여러 네이티브 베이스라인이 외부에 존재하는 경우, pair channels with 버전 타겟팅이렇게 하면 불일치하거나 불필요한 용량이 더 오래된 바이너리와 함께 배포되지 않습니다.
팀이 더 긴 리뷰 루프를 원하는 경우, Capgo도 PR 전시를 위해 잘 작동합니다. 업로드이러한 기능은 제품, QA 및 이해관계자들이 JS-만 변경을 테스트할 수 있도록 하며, 새로운 TestFlight 또는 Play 내부 빌드 기다리지 않도록 합니다.
5. 직접 업데이트 활성화 시, 최적화된 시작 시간을 고려해야 합니다.
__CAPGO_KEEP_0__의
Capgo’s docs는 Delta 업데이트와 pair하는 것을 명확히 권장합니다. 이는 기본 설정입니다. 두 번째 경계는 다음과 같습니다. directUpdate 앱이 기본 10초 또는 __CAPGO_KEEP_0__ config에서 설정한 시간 내에 준비되지 않으면, __CAPGO_KEEP_1__은 해당 번들을 무효화하고 이전에 잘 작동하던 버전으로 복원할 수 있습니다. 이는 프로덕션에서 원하는 rollback 동작이지만, 이는 시작 시간을 깨끗하게 유지해야 한다는 것을 의미합니다.
Call notifyAppReady().
import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()
__CAPGO_KEEP_0__ notifyAppReady() __CAPGO_KEEP_1__ 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()올바른 위치에 - 중요한 경로에서 느린 부팅 시간 작업을 피하십시오.
- 앱을 즉시 다시 로드할 경우 앱 상태를 신중히 저장하고 복원하십시오.
- rộng泛한 배포 전에 나쁜 네트워크 및 저성능 장치 시나리오를 테스트하십시오.
최근에 검토하지 않은 경우 notifyAppReady 지침 읽어보면 가치가 있습니다.
6. 내부 업데이트 채널을 사용하여 불필요한 네이티브 재빌드 대신 사용하십시오.
많은 모바일 팀은 명백히 웹 전용인 변경 사항에 대해 바이너리를 빌드하는 시간을浪費합니다.
변경이:
- 복사
- UI 폴리시
- 온보딩 플로우,
- 가격화 화면 로직,
- 분석 연결,
- 기능 플래그,
- prompt 또는 API 응답 렌더링,
그런 다음 Capgo 업데이트는 종종 더 빠른 검토 항목입니다.
이것은 원래 빌드가 적어지고, TestFlight의 churn이 줄어들고, 팀의 피드백 루프가 더 단단해지기 때문에 의미가 있습니다. 그것은 Capgo의 가장 미사용된 이점 중 하나입니다: 원래 웹 경계를 깨지지 않고 OTA 경로에 리뷰 및 QA 작업을 더 많이 이동할 수 있습니다.
__CAPGO_KEEP_0__에 대한 우리의 가이드는 1개의 모바일 앱 ID를 사용하여 스테이징 이것은 시간이 지남에 따라 이 CLEAN을 유지하는 실제적인 방법을 다룹니다.
7. Lean과 Secret을 분리하세요
작은 패키지와 안전한 패키지는 서로 다른 문제를 해결합니다.
채널은 승인 여부를 제어합니다. 채널 하나만으로는 업데이트를 암호화하는 것은 불가능합니다.
강력한 전달 보증이 필요하다면:
- 활성화 라이브 업데이트 암호화,
- 사용 사용자 지정 저장소 또는 자체 호스팅 전달,
- 개인 키를 CI 또는 보안된 운영자 워크플로우에서만 유지하세요.
업데이트 크기는 무시할 수 없습니다. 단지 두 가지 측면을 모두 최적화해야 한다는 뜻입니다:
- 빠르기
- 전달을 제어하기 위해 암호화
- 채널을 통해 롤아웃을 제어하기
- 회복을 위해 롤백
A practical “lean Capgo” workflow
만약 간단한 기본 운영 모델을 원한다면 이 것을 사용하세요.
- 자체 빌드와 OTA 릴리스 경로를 분리하세요.
- JS 변경 사항을 업로드할 때
--delta기본적으로 사용하세요. - Capgo
staging및beta채널을 업로드하기 전에production. - 릴리스 후에 업데이트 통계 및 로그를 확인하세요. 릴리스 전에만 확인하지 마세요.
- 자체 빌드가 필요하지 않은 경우 PR를 설치 가능한 미리보기로 변환하세요.
- 대형 미디어를 가능한 한 번들에서 제거하세요.
- 자주 변경되는 자원에 대한 주요 변경 사항이 발생하거나 네이티브 변경 사항이 발생한 후 네이티브 베이스 라인을 갱신하세요.
- 관리
notifyAppReady()그리고 롤백 동작을 릴리스 엔지니어링으로 간주하세요.
그것은 "변경된 항목만 업로드하세요"라는 일반적인 접근 방식보다 오래 지속되는 빠른 combination입니다.
마무리
Capgo 팀에게는 "빠르고 가볍다"가 단순히 번들 크기 문제만이 아닙니다.
릴리스 디자인 문제입니다.
Delta 업데이트를 사용하여 전송 크기, 채널을 사용하여 배포 크기, 롤백을 사용하여 실패 크기를 사용하세요. OTA를 그 방식으로 생각하면, 앱, 팀 및 사용자 기반의 크기가 커져도 업데이트가 빠르게 유지됩니다.
How to Keep Capgo Updates Lean and Fast에서 계속하세요.
__CAPGO_KEEP_0__을 사용하는 경우 Capgo Updates Lean and Fast를 유지하는 방법을 알고 싶다면 채널 라우팅과 스테이지 롤아웃을 계획하고 채널 채널 채널 채널 채널 채널 채널 채널 채널 채널