단순화하고 싶으신가요? 앱 업데이트 버전 관리까지? Semantic Versioning (SemVer) 와(과) 결합하여 Capgo의 Over-The-Air (OTA) 업데이트를 사용하면 앱 관리가 Capacitor 더 쉽고 빨라집니다. 방법은 다음과 같습니다:
-
Semantic Versioning 기본 개념: 버전은 다음 형식을 사용합니다:
MAJOR.MINOR.PATCH:- MAJOR: 하위 호환성이 깨지는 변경 사항이 있을 때 사용합니다.
- MINOR: 하위 호환성을 유지하며 새로운 기능이 추가될 때 사용합니다.
- PATCH: 버그 수정을 할 때 사용합니다.
-
Capgo에서 SemVer를 사용해야 하는 이유
- 업데이트에 대한 명확한 커뮤니케이션.
- 더 스마트한 버전 관리.
- 의존성 충돌 방지.
- 체계적인 릴리스 계획.
-
Capgo 설정 단계:
- Capgo updater plugin 설치.
- 다음 파일에서 앱 버전을 설정하세요:
capacitor.config.json및 기타 파일. - API 키로 초기화.
- 사용하세요: Capgo CLI 업데이트를 bundle하고 upload하려면.
-
- 별도의 채널을 사용하세요 (예: 테스트용 “beta”, 안정 버전용 “production”).
- 업데이트 정책 제어 (패치는 자동 업데이트, 주요 변경 사항은 수동 승인).
- 업데이트 실패 시 롤백 옵션 제공.
-
배포 프로세스:
- SemVer 규칙에 따라 버전 번호를 업데이트합니다.
- 배포 전 철저하게 테스트하세요.
- CLI 명령어를 사용하여 업데이트를 upload하고 배포하세요.
Capgo는 장애 대응 및 안정성 유지 도구를 통해 업데이트가 사용자에게 빠르고 안정적으로 전달되도록 보장합니다. CI/CD 워크플로우로 업데이트를 자동화하는 팀에 최적입니다.
꿀팁: 항상 업데이트를 테스트하고, 채널을 활용해 단계적 배포(staged rollouts)를 효과적으로 관리하세요.
Semantic Versioning | 레벨 업
Capgo 설정 가이드

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 변경 시 | 수동 승인 필요 |
| 마이너 (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 Update 배포하기
버전 관리 설정이 완료되었다면, 다음 단계에 따라 OTA update를 효과적으로 배포해 보세요.
업데이트 준비
먼저 다음 파일의 버전을 업데이트하세요: 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.
다음으로, 결정하세요. 업데이트 전략을 결정합니다. 다음 중 선택할 수 있습니다:
- Auto-Update: 최소 버전 요구 사항을 자동으로 적용합니다.
- 수동 제어: 업데이트에 필요한 정확한 버전 요구 사항을 지정합니다.
- Channel-Based: 테스트 및 단계적 배포를 위해 채널을 사용합니다.
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는 핫 code 푸시를 위한 스마트한 방법입니다. (@AppFlow처럼 엄청난 비용을 요구하지도 않고요 🙂)”
배포가 완료되면 Capgo 대시보드에서 업데이트를 모니터링할 수 있습니다. 업데이트는 사용자가 앱을 실행한 후 보통 몇 분 내에 적용됩니다. 과정은 다음과 같습니다:
- 앱이 업데이트를 확인합니다.
- 백그라운드에서 업데이트를 다운로드합니다.
- 사용자가 앱을 종료하면 새 버전을 활성 상태로 표시합니다.
- 다음 앱 실행 시 업데이트를 적용합니다.
엔터프라이즈급 배포를 원하신다면 CI/CD 자동화를 통합하는 것이 좋습니다.
“저희는 애자일 개발을 실천하고 있으며, @Capgo는 사용자에게 지속적으로 제공하는 데 핵심적인 역할을 합니다!”
문제 해결 및 팁
버전 관리 문제
Capgo에서 semantic versioning을 관리하다 보면 업데이트 배포가 복잡해질 때가 있습니다. 개발 중인 작업물이 덮어씌워지는 것을 방지하려면 다음 설정을 구성하세요: 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]
일관성을 보장하기 위한 몇 가지 방법은 다음과 같습니다:
- 하나의 브랜치를 main repository로 지정하여 단일 진실 공급원(source of truth)으로 활용하세요.
- 개발 및 운영 환경을 위해 별도의 Capgo 채널을 사용하세요.
- CI/CD 파이프라인을 통해 버전 업로드를 자동화하세요.
- 모든 code 변경 사항은 명확하고 상세한 커밋 메시지로 기록하세요.
규모가 큰 팀이라면 다음 버전 관리 매트릭스를 통해 업데이트를 체계적으로 관리할 수 있습니다:
| 환경 | Channel | Auto-Update | 버전 패턴 |
|---|---|---|---|
| 개발 | dev | Disabled | 0.x.x |
| Staging | 베타 | Enabled | x.x.x-beta |
| Production | stable | Enabled | x.x.x |
업데이트 복구 단계
주의를 기울여도 업데이트는 실패할 수 있습니다. 이 경우 다음 복구 단계를 따르세요:
- 이전의 stable 번들로 롤백합니다.
- 새로운 수정 사항에 대해 버전 번호를 올립니다 (주의: 삭제된 버전 번호는 재사용할 수 없습니다) [2].
- 앱 시작 시 업데이트를 검증하여 예상대로 작동하는지 확인합니다.
Capgo의 updater는 중단 상황을 처리하도록 설계되었습니다. 예를 들어, 서버에 접속할 수 없거나 업데이트가 삭제된 경우에도 앱은 정상적으로 작동합니다 [3]. 또한, 실패한 네트워크 요청은 다음 앱 실행 시 자동으로 재시도됩니다 [3]. 이러한 내장된 복원력은 다운타임을 최소화하고 더욱 원활한 운영을 보장합니다.
요약
Semantic Versioning은 Capgo와 결합하여 Capacitor 앱의 OTA 업데이트를 더욱 효율적으로 만들었습니다. 9억 4,760만 건의 업데이트가 전달되었고 1,400개의 프로덕션 앱이 이 시스템을 사용하고 있으며 [1]배포 프로세스의 효율성이 81% 향상되었습니다 [1]. 이 설정을 통해 개발자는 앱 스토어의 지연 없이 업데이트를 빠르고 제어된 방식으로 푸시할 수 있습니다.
개발자들의 후기는 다음과 같습니다:
“저희는 5,000명 이상의 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 Updates와 시맨틱 버저닝을 사용하는 방법 롤백 및 버전 관리를 계획하려면 다음 항목과 연결하세요: 롤백 Rollbacks의 구현 상세 내용은 버전 타겟팅 Version Targeting의 구현 상세 내용은 업데이트 동작 Update Behavior의 구현 세부 사항은, bundle bundle의 구현 세부 사항은, 그리고 Capgo Live Updates Capgo Live Updates 제품 워크플로우용.