본문 바로가기

Capgo OTA 업데이트로 Semantic Versioning 활용하기

Capacitor 앱을 위한 Capgo OTA 업데이트와 Semantic Versioning을 활용해 앱 업데이트 및 버전 관리를 효율화하는 방법을 알아보세요.

Capgo OTA 업데이트에서 Semantic Versioning을 사용하는 방법 Capgo 블로그 일러스트

단순화하고 싶으신가요? 앱 업데이트를 버전 관리도요? 시맨틱 버저닝 (SemVer) 함께 사용하면 Capgo의 Over-The-Air(OTA) 업데이트를 사용하면 앱 관리가 Capacitor 더 쉽고 빨라집니다. 방법은 다음과 같습니다:

  • 시맨틱 버저닝(SemVer) 기본: 버전은 다음 형식을 사용합니다: MAJOR.MINOR.PATCH:

    • MAJOR: 호환성이 깨지는 변경 사항에 사용합니다.
    • MINOR: 하위 호환성을 유지하는 새 기능에 사용합니다.
    • PATCH: 버그 수정에 사용합니다.
  • Capgo에서 SemVer를 사용하는 이유

    • 업데이트에 대한 명확한 안내.
    • 더 스마트한 버전 관리.
    • 의존성 충돌 방지.
    • 체계적인 릴리스 계획.
  • Capgo 설정 단계:

    1. Capgo의 updater plugin을 설치하세요.
    2. 앱 버전을 다음 파일에서 설정하세요: capacitor.config.json 및 기타 파일.
    3. API 키로 초기화하세요.
    4. 사용 Capgo CLI 업데이트를 번들링하고 업로드하려면.
  • 버전 및 채널 관리:

    • 별도 채널을 사용하세요(예: 테스트용 “beta”, 안정적인 릴리스용 “production”).
    • 업데이트 정책을 제어하세요(패치는 자동 업데이트, 주요 변경 사항은 수동 승인).
    • 업데이트 실패 시 롤백 옵션 제공.
  • 배포 프로세스:

    • SemVer 규칙에 따라 버전 번호를 업데이트합니다.
    • 배포 전에 철저히 테스트하세요.
    • CLI 명령어로 업데이트를 업로드하고 배포하세요.

Capgo는 장애 대응과 안정성 유지를 위한 도구를 통해 업데이트가 사용자에게 빠르고 안정적으로 전달되도록 보장합니다. CI/CD 워크플로우로 업데이트를 자동화하는 팀에 최적입니다.

꿀팁: 항상 업데이트를 테스트하고, 채널을 활용해 단계적 배포를 효과적으로 관리하세요.

Semantic Versioning | 레벨 업

Capgo 설정 가이드

Capgo Live Update 대시보드 인터페이스

OTA 업데이트와 버전 관리를 손쉽게 처리하도록 Capgo를 설정하는 방법입니다.

초기 설정 단계

먼저 다음을 설치하세요 Capgo updater 플러그인:

npm install @capgo/capacitor-updater  
npx cap sync

다음 설정값 capacitor.config.json 파일은 semantic version 형식을 사용합니다:

{ 
  "appId": "com.example.app", 
  "appName": "My App", 
  "version": "1.0.0" 
}

기존 프로젝트의 경우, 다음 위치에서 버전 정보를 업데이트하세요:

  • package.json (다음 항목을 version 찾으세요)
  • android/app/build.gradle (업데이트 versionName)
  • ios/App/App.xcodeproj/project.pbxproj (업데이트 CURRENT_PROJECT_VERSION)

설정이 완료되면, API 키를 사용하여 Capgo를 초기화하세요:

npx @capgo/cli@latest init YOUR_API_KEY

빠른 참조 표:

설정 단계 주요 작업 검증 단계
설치 플러그인 설치 및 sync 체크 항목 package.json
설정 버전 번호 설정 모든 파일 검증
초기화 API 키로 연결 연결 상태 테스트
빌드 초기 bundle 생성 업로드 성공 확인

버전 관리 연동

Capgo는 CI/CD 플랫폼과 잘 연동되어 자동 업데이트를 가능하게 합니다 간편합니다. 지원되는 플랫폼은 다음과 같습니다:

로컬 개발 중이라면, 설정에 다음 내용을 추가하여 자동 업데이트를 비활성화할 수 있습니다:

{ 
  "plugins": { 
    "CapacitorUpdater": { 
      "autoUpdate": false 
    } 
  } 
}

이렇게 하면 Capgo이 로컬 변경 사항을 덮어쓰지 않습니다. 설정이 완료되면 첫 번째 버전을 upload 하세요:

npx @capgo/cli@latest bundle upload  
npx @capgo/cli@latest channel set production -s default

마지막으로, 앱의 메인 파일에서 네이티브 플러그인에 번들의 상태를 알리도록 설정합니다:

import { CapacitorUpdater } from '@capgo/capacitor-updater';  
CapacitorUpdater.notifyAppReady();

이 설정을 통해 앱이 원활한 OTA 배포 및 버전 관리를 수행할 준비를 마칩니다.

Capgo에서 Semantic Versioning 활용하기

버전 번호 관리

Capgo는 앱 버전을 관리하기 위해 다음과 같은 형식의 Semantic Versioning (SemVer)을 사용합니다: MAJOR.MINOR.PATCH. 작동 방식은 다음과 같습니다:

  • 메이저 버전 (X.0.0): 하위 호환성이 깨지는 변경 사항이 있을 때 MAJOR 번호를 올립니다.
  • 마이너 버전 (1.X.0): 호환성을 유지하면서 새로운 기능이 추가될 때 MINOR 번호를 올립니다.
  • 패치 버전 (1.0.X): 호환성에 영향을 주지 않는 버그 수정 시 PATCH 번호를 올립니다.
버전 유형 버전을 올릴 때 Auto-Update 동작
Major (X.0.0) 하위 호환성이 깨지는 API 변경 시 수동 승인 필요
Minor (1.X.0) 새로운 기능 추가 시 Capgo에서 설정 가능
Patch (1.0.X) 버그 수정 시 보통 자동 적용

SemVer 규칙을 준수하면 버전 관리가 간편해지고, 다양한 배포 채널에서 더욱 원활한 업데이트를 보장할 수 있습니다.

버전 관리 가이드라인

Capgo를 사용하면 워크플로 단계별로 별도의 채널을 설정하여 배포를 효과적으로 관리할 수 있습니다.

  • 채널 기반 버전 관리: 테스트와 프로덕션용 채널을 분리하여 배포 프로세스를 체계화하세요. 예시는 다음과 같습니다:

    • 새로운 기능을 테스트할 때는 “beta” 채널(예: 1.2.0-beta)을 사용하세요.
    • 안정적인 릴리스를 위해 “production” 채널(예: 1.2.0)을 유지하세요.
    • 플랫폼별 이슈를 해결할 때는 플랫폼 전용 채널(예: 버전 1.2.1의 “ios-hotfix”)을 추가하세요.
  • 업데이트 정책 설정: Capgo의 설정 옵션을 사용하여 업데이트 적용 방식을 제어하세요. 예시는 다음과 같습니다:

    {
      "plugins": {
        "CapacitorUpdater": {
          "disableAutoUpdate": "minor"
        }
      }
    }

    이 설정을 통해 사용자는 패치 업데이트를 자동으로 받되, 마이너 및 메이저 업데이트는 수동 승인을 거치도록 할 수 있습니다.

  • 버전 롤백 전략: 프리릴리스 식별자를 사용하여 명확한 롤백 옵션을 확보하세요. 이 방식을 사용하면 모든 채널의 버전 일관성을 유지하면서도, 문제 발생 시 이전 버전으로 안전하게 되돌릴 수 있습니다.

이러한 베스트 프랙티스를 적용하면 업데이트 관리, 신규 기능 테스트, 앱 배포 프로세스의 안정성 유지가 훨씬 수월해집니다.

sbb-itb-f9944d2

OTA 업데이트 배포

버전 관리 설정이 완료되었다면, 다음 단계에 따라 OTA 업데이트를 효과적으로 배포하세요.

업데이트 준비

먼저 다음 파일의 버전을 업데이트합니다: package.json 및 capacitor.config.json. 버전이 SemVer 형식(MAJOR.MINOR.PATCH)을 따르는지 확인하세요:

  • 버그 수정: PATCH 번호 증가 (예: 1.0.1 → 1.0.2)
  • 새 기능 추가: MINOR 번호 증가 (예: 1.0.0 → 1.1.0)
  • Breaking Change: MAJOR 버전을 올립니다 (예: 1.0.0 → 2.0.0)

빌드를 철저히 테스트하고 앱이 서버와 정상적으로 통신하는지 확인하세요. notifyAppReady.

다음으로, 사용할 업데이트 전략을 방식을 결정하세요. 다음 옵션이 있습니다:

  • 자동 업데이트: 최소 버전 요구 사항을 자동으로 적용합니다.
  • 수동 제어: 업데이트에 대한 정확한 버전 요구 사항을 지정합니다.
  • 채널 기반: 테스트 및 단계적 배포를 위해 채널을 사용합니다.

Capgo CLI Update 명령어

Capgo의 CLI를 사용하면 간편하게 업데이트를 배포할 수 있습니다. 방법은 다음과 같습니다:

# Initialize Capgo in your project
npx @capgo/cli@latest init [apikey]

# Upload your update bundle
npx @capgo/cli bundle upload [appId]

# Add a new distribution channel
npx @capgo/cli channel add [channelName] [appId]

Capgo는 종단 간 암호화와 안전한 키 관리를 통해 보안 배포를 보장합니다.

“@Capgo는 hot code push를 하는 스마트한 방법입니다. (@AppFlow처럼 엄청난 비용을 들이지 않아도 되죠) 🙂”

배포가 완료되면 Capgo 대시보드에서 업데이트를 모니터링할 수 있습니다. 업데이트는 보통 사용자가 앱을 실행한 후 몇 분 안에 적용됩니다. 작동 방식은 다음과 같습니다:

  • 앱이 업데이트를 확인합니다.
  • 백그라운드에서 업데이트를 다운로드합니다.
  • 사용자가 앱을 종료할 때 새 버전을 활성 상태로 표시합니다.
  • 다음 앱 실행 시 업데이트를 적용합니다.

엔터프라이즈급 배포에는 CI/CD 자동화를 통합하는 것이 좋습니다.

“저희는 애자일 개발을 실천하고 있으며, 사용자에게 지속적으로 제공하는 데 있어 @Capgo은 핵심입니다!”

문제 해결 및 팁

버전 관리 이슈

Capgo에서 시맨틱 버저닝을 관리하다 보면 업데이트 배포가 복잡해질 때가 있습니다. 개발 중인 작업물이 덮어씌워지는 것을 방지하려면 다음 설정을 구성하세요: capacitor.config.json 파일에 추가하세요:

{ 
  "plugins": { 
    "CapacitorUpdater": { 
      "autoUpdate": false 
    } 
  } 
}

업데이트에 실패했을 경우, 다음과 같이 조치할 수 있습니다:

  • 설정 autoUpdate 대상 false 개발 단계에서
  • 앱을 삭제합니다.
  • 수정된 버전으로 다시 설치합니다.
  • 모든 것이 안정되면 자동 업데이트를 다시 활성화합니다.

메이저 버전 업데이트의 경우, disableAutoUpdateBreaking 플래그를 사용하고 majorAvailable 업데이트를 제대로 처리하기 위한 이벤트:

CapacitorUpdater.addListener('majorAvailable', (info) => {
  console.log(`Major update available: ${info.version}`);
  // Add your update prompt logic here
});

이러한 설정과 팀의 협업 방식을 결합하면 버전 일관성을 유지하고 오류를 줄일 수 있습니다.

팀 버전 관리

개별 업데이트를 관리한 후에는 팀이 강력한 버전 관리 관행을 수립하는 것이 매우 중요합니다.

“메인 저장소에 머지하기 전에 각 변경 사항을 테스트하면 안정성을 높이고 비용이 많이 드는 오류를 방지할 수 있습니다.” [4]

일관성을 보장하기 위한 몇 가지 방법은 다음과 같습니다:

  • 하나의 브랜치를 메인 저장소로 지정하여 단일 진실 공급원(source of truth)으로 활용하세요.
  • 개발 및 운영 환경을 위해 별도의 Capgo 채널을 사용하세요.
  • CI/CD 파이프라인을 통해 버전 업로드를 자동화하세요.
  • 모든 code 변경 사항은 명확하고 상세한 커밋 메시지로 기록하세요.

규모가 큰 팀이라면 다음 버전 관리 매트릭스를 통해 업데이트를 체계적으로 관리할 수 있습니다:

환경 채널 자동 업데이트 버전 패턴
개발 개발 비활성화 0.x.x
무대 구성 베타 활성화 x.x.x-beta
프로덕션 stable 활성화 x.x.x

업데이트 복구 단계

주의를 기울여도 업데이트는 실패할 수 있습니다. 문제가 발생하면 다음 복구 단계를 따르세요:

  1. 이전의 stable bundle로 롤백합니다.
  2. 새로운 수정 사항에 대해 버전 번호를 올립니다 (주의: 삭제된 버전 번호는 재사용할 수 없습니다) [2].
  3. 앱 시작 시 업데이트를 검증하여 의도한 대로 작동하는지 확인합니다.

Capgo의 updater는 중단 상황을 처리하도록 설계되었습니다. 예를 들어, 서버에 접속할 수 없거나 업데이트가 삭제된 경우에도 앱은 정상적으로 작동합니다 [3]. 또한, 네트워크 요청 실패 시 다음 앱 실행 시 자동으로 재시도됩니다 [3]. 이러한 내장된 복원력은 다운타임을 최소화하고 더욱 원활한 운영을 보장합니다.

요약

Semantic Versioning은 Capgo와 결oped되어 Capacitor 앱의 OTA 업데이트를 더욱 효율적으로 만들었습니다. 9억 4,760만 건의 업데이트가 전달되었고 1,400개의 프로덕션 앱이 이 시스템을 사용하며 [1]배포 프로세스의 효율성이 81% 향상되었습니다 [1]. 이 설정을 통해 개발자는 앱 스토어의 지연 없이 업데이트를 빠르고 제어된 방식으로 푸시할 수 있습니다.

개발자들의 후기는 다음과 같습니다:

“저희는 Capgo OTA 업데이트를 5,000명 이상의 사용자 기반을 가진 프로덕션 환경에서 운영 중입니다. 운영이 매우 원활하며, @Capgo에 OTA가 배포된 후 몇 분 안에 거의 모든 사용자가 최신 버전을 유지하고 있습니다.” - colenso [1]

MAJOR.MINOR.PATCH 버전 관리 시스템을 통해 breaking changes, 새로운 기능, 버그 수정을 쉽게 전달할 수 있습니다 [5]. 이는 Capgo 플랫폼을 통해 매주 여러 번의 릴리스를 관리하는 팀에 특히 유용합니다.

Capgo의 암호화된 솔루션은, CI/CD 도구와 통합되어 비용 효율적이며, 5년간 최대 $26,100의 비용을 절감할 수 있습니다 [1]. 또한 맞춤형 채널을 통해 적절한 시점에 적절한 사용자에게 업데이트를 전달합니다.

“우리는 애자일 개발을 실천하며, 사용자에게 지속적으로 전달하는 데 @Capgo는 핵심입니다!” - Rodrigo Mantica [1]

이어서 보기: Capgo OTA Updates로 시맨틱 버저닝 사용하는 방법

사용 중이라면 Capgo OTA 업데이트로 Semantic Versioning 활용하기 rollback 및 버전 관리를 계획하려면, 이를 다음 항목과 연결하세요 롤백 Rollbacks의 구현 세부 사항에 대해서는, 버전 타겟팅 Version Targeting의 구현 세부 사항에 대해서는, 업데이트 동작 Update Behavior의 구현 세부 사항은, bundle bundle의 구현 세부 사항은, 그리고 Capgo Live Updates Capgo Live Updates의 제품 워크플로우를 위해.

Capacitor 앱용 Live updates

웹 레이어 버그가 라이브 상태라면, 앱 스토어 승인을 며칠씩 기다리지 말고 Capgo를 통해 수정 사항을 배포하세요. 네이티브 변경 사항은 정상 리뷰 절차를 그대로 따르는 반면, 사용자는 백그라운드에서 업데이트를 받습니다.

블로그 최신 글

Capgo는 정말 프로페셔널한 모바일 앱을 만드는 데 필요한 최고의 인사이트를 제공합니다.