본문으로 건너뛰기

릴리즈 속도: 측정하고 개선하는 방법

최신 소프트웨어 팀에 대한 릴리즈 속도의 의미를 알아보세요. DORA 지표를 사용하여 측정하고, 실무적인 전략으로 더 빠르게 배포하는 방법을 배워보세요.

릴리스 속도: 측정하고 개선하는 방법

Elite software teams deploy code about 1,460 번의 릴리스를 연간으로 수행합니다.low 성능 팀은 약 1.5 번의 릴리스를 연간으로 수행합니다.2021년 DORA의 Accelerate State of DevOps 보고서에 따르면. 릴리스 속도는 약973배의 릴리스 빈도 차이를 나타냅니다. 973배의 릴리즈 빈도 차이모바일 팀은 더 구체적인 정의가 필요합니다. __CAPGO_KEEP_0__ 애플리케이션은 App Store 또는 Play 리뷰가 필요한 네이티브 __CAPGO_KEEP_1__을 포함할 수 있습니다. 웹层는 독립적으로 자주 변경될 수 있습니다. 릴리스 빈도만 측정하면 사용자가 경험하는 업데이트를 놓치게 됩니다. 실제적인 질문은 팀이 앱을 빌드하는 빈도가 아니라 고객이 기능 개선, 오류 수정, 콘텐츠 변경, 또는 구성 변경을 받는 빈도입니다.

Mobile teams need a more precise definition. A Capacitor application can contain native code that requires App Store or Play review, alongside a web layer that can often change independently. If you measure only binary submissions, you’ll miss the updates users experience. The practical question is not how often your team builds an app. It’s how often customers receive a functional improvement, fix, content change, or configuration update.

컨텍스트: Capgo 마케팅 웹사이트. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 위치: blog/[슬러그].astro. 메시지 키 `table_of_contents` (목차)

소프트웨어 팀에 대한 실제 릴리즈 속도 의미

소프트웨어 팀에 대한 릴리스 속도의 실제 의미 실시간 배포 온디맨드, 일일 여러 배포 카테고리에 배치하고, 낮은 퍼포먼스는 6개월 이상 배포하지 않는 것으로 문서화되었습니다. 2022년 DevOps 상태 보고서

. 정확한 벤치마크는 중요하지 않습니다. 높은 퍼포먼스를 보이는 팀은 작은 릴리스를 일상적인 작업으로 만들고, 변경 사항을 위험한 배치로 모으지 않습니다.

릴리스 속도 릴리스 속도는 팀이 code에서 커밋된 기능적이고 사용자에게 유용한 변경 사항을 라이브 경험으로 전달하는 속도입니다. 그 과정에는 검토, 테스트, 패키징, 배포, 롤아웃, 수용, 그리고 문제가 발생했을 때 복구가 포함됩니다. 빠른 빌드 PIPELINE은 도움이 되지만 자동으로 빠른 고객 피드백 루프를 생성하지는 않습니다.

why 모바일이 계산을 바꾸는 이유

웹 팀은 자바스크립트 변경을 직접 인프라에 배포하고 즉시 사용할 수 있습니다. 모바일 팀은 다른 종속성을 가진 다른 chain을 마주합니다. 네이티브 변경은 새로운 바이너리, 스토어 제출, 검토, 승인, 롤아웃, 사용자 수용이 필요합니다. 팀은 고속으로 수정을 완료하고도 사용자의 설치된 애플리케이션을 업데이트하여 수신할 수 있도록 기다릴 수 있습니다.

이 차이점은 Capacitor, Ionic, Electron 팀에게 중요합니다. 그들의 애플리케이션은 종종 네이티브 기능과 HTML, CSS, 자바스크립트, 자산, 구성과 결합됩니다. 모든 변경을 바이너리 릴리스로 처리하면 단순한 인터페이스 또는 논리 업데이트에 대해 느린 경로를 강요합니다.

실용적인 규칙: Measure the time from code change to the user receiving the intended experience, not just the time from commit to build completion.

유용한 운영 모델은 바이너리 릴리스 주기 와 배송 된 경험 빈도바이너리 패키징 속도는 팀이 네이티브 패키징 및 스토어 준수성을 효율적으로 처리하는지 알려줍니다. shipped 경험 빈도는 사용자가 의미 있는 변경 사항을 얼마나 자주 받는지 알려줍니다. 이 차이는 더 광범위한 운영 효율성 관행과 함께 속해야 합니다. 운영 효율성 관행, 고객이 움직임을 거의 보지 못하더라도 pipe line이 기술적으로 바쁠 수 있음을 의미합니다.

릴리즈 속도에 대한 핵심 지표

릴리스 속도에 대한 핵심 지표

5개의 핵심 지표 , 리워크 레이트를 포함하여, 이전 변경 사항을 수정하는 대신 새로운 가치를 제공하는 데 들인 노력을 추적합니다. DORA 지표 가이드를 사용하여팀 간에 정의를 일관되게 유지하세요. 속도와 안정성을 함께 추적하세요. 이 지표들은 시스템으로 작동합니다.

릴리즈 성능을 설명할 수 없습니다.

릴리즈 성능을 설명할 수 없습니다.

  • 배포頻度 배포頻度는 변경 사항이 생산 또는 최종 사용자에게 얼마나 자주 도달하는지 측정합니다.
  • 변경의 시간 변경의 시간은 code 커밋부터 배포까지의 시간을 측정합니다.
  • 변경 실패율 변경 실패율은 배포가 실패, 롤백, 또는 복구를 필요로 하는 빈도수를 측정합니다.
  • 복구 시간 평균 복구 시간 평균은 팀이 프로덕션 실패 후 서비스를 복구하는 속도를 측정합니다.
  • 재작업률 재작업률은 이전 변경 사항을 수정하는 대신 새로운 가치를 배송하는 데 사용되는 배달 용량의 비율을 보여줍니다.

모바일 팀은 배포 경로에 따라 변경 시간을 해석해야 합니다. 자바스크립트 또는 자산 변경은 사용자에게 준비가 될 수 있지만 네이티브 변경은 바이너리 PIPELINE에 남아 있을 수 있습니다. 두 경로를 하나의 대시보드에 결합하면 능력 있는 팀이 느려 보이게 만들고 앱 스토어 리뷰 병목 현상을 숨길 수 있습니다.

역사적인 DORA 계층은 유용한 용어를 제공합니다. 엘리트 퍼포먼스는 일일 여러 배포를 통해 즉시 배포할 수 있습니다. 고성능은 월 1회에서 일주일에 1회, 중성능은 6개월에 1회에서 월 1회, 저성능은 6개월에 1회 미만으로 배포합니다. 2022년 DORA 보고서이 등급은 배포 능력을 설명한다. 이들은 위험, 팀 크기 또는 이진 릴리스와 라이브 웹 레이어 업데이트의 차이를 고려하지 않고 추구하는 목표가 아니다.

위험을 고려하지 않고 추구하는 목표가 아닌 위험을 고려한 목표를 사용하십시오.

배포 빈도 차트에 실패와 복구 데이터가 없으면 위험한 배치가 보상된다. 실패율 차트에 리드 타임이 없으면 배포를 피하는 팀을 숨길 수 있다. 크로스 플랫폼 팀은 네이티브 이진 릴리스와 웹 레이어 업데이트를 분리하고 업데이트의 수용, 롤백 이벤트 및 리워크도 추적해야 한다.

성능 등급 배포 빈도 변경 사항의 리드 타임 변경 실패율 복구까지의 평균 시간
엘리트 일정 시간에 여러 배포 배포 흐름과 추적 안정성 경계로 추적 복구 속도 추적
높음 한 달에 한 번에서 한 주에 한번 배포 흐름과 함께 추적 안정성 경계로 추적 복구 속도 추적
중간 여섯 달에 한 번에서 한 달에 한 번 배포 흐름과 함께 추적 안정성 경계로 추적 복구 속도 추적
Low 6개월마다 한번 이하 배포 흐름과 함께 추적 안정성 경계로 추적 회복 속도 추적

측정하지 않은 지표에 대한 기준점을 설정하지 말고, 원본과 웹层의 변경을 구분하고, 더 빠른 배포가 더 작은 배치, 관리 가능한 실패, 빠른 회복을 가져오는지 확인하세요. broader engineering output을 제공하는 팀에게는 이 개발자 생산성 안내서 이 안내서는 개발자 생산성에 대한 보조 참고 자료를 제공합니다.

바이너리 캐드런스 VS shipped 경험 빈도

바이너리 릴리스는 스토어 또는 APPROVED 데스크톱 채널을 통해 제출된 애플리케이션 패키지입니다. 배포 된 경험 빈도 사용자가 보는 것과 하는 것을 영향받는 변경 사항을 얼마나 자주 받는지에 대한 것입니다. 두 가지 측정치는 겹치지만 서로 대체할 수 없습니다.

A monthly binary cadence can coexist with frequent web-layer delivery. A Capacitor team might reserve binary releases for native plugins, permissions, OS integrations, and updater changes, while sending eligible JavaScript, CSS, copy, configuration, and asset updates through a controlled live-update path. The binary number describes packaging work. The experience number describes product iteration.

이진 앱 스토어 업데이트 cadence와 지속적인 웹-layer 배포를 비교하는 다이어그램입니다.

왜 하나의 모바일 번호만큼 충분하지 않나요?

앱 스토어 리뷰는 백엔드 팀이 마주치지 않는 같은 방식으로 지연을 도입합니다. Digia에서 제공하는 모바일 릴리스 속도 분석 스토어 리뷰를 도입하는 것 24에서 48시간의 지연 백엔드 팀이 마주치지 않는 같은 방식으로 지연을 도입합니다.

사용자 수용은 또 다른 지연을 만듭니다. 심지어 승인 후 사용자는 새로운 이진을 즉시 설치하지 않을 수 있습니다.

변경 사항을 올바른 경로로 전달하십시오

Native 패키징이 필요한 변경 사항은 바이너리 PIPELINE을 사용하세요. 변경 사항이 Native 패키징이 필요하지 않으면 Live Update, Remote Configuration, Content Delivery, Signed Web-layer Update를 사용하세요. 목표는 모든 업데이트를 Over-the-air 메커니즘을 통해 강제하는 것이 아닙니다. 목표는 Native 패키징이 필요하지 않은 변경 사항이 Store의 기본 게이트가 아닌지 확인하는 것입니다.

앱 업데이트 빈도 분할 릴리스 PIPELINE을 가속화하는 실제 전략

릴리스 PIPELINE 가속화 전략

기계적인 작업을 자동화하세요

신뢰할 수 있는 CI/CD PIPELINE은 알려진 커밋에서 빌드, 고정 의존성을 설치, 테스트, 서명된 아티팩트를 생성, 그리고 이를 반복하지 않고 로컬 단계를 수행하지 않고 배포합니다. independent 테스트 스위트를 병렬화하고 빌드 시스템이 지원하는 경우 Native 의존성을 캐시하세요. 스테이징 및 프로덕션 구성이 구조적으로 일관적일 때, 환경 불일치가 릴리스를 차단하는 것을 방지하세요.

A reliable CI/CD pipeline builds from a known commit, installs pinned dependencies, runs tests, produces signed artifacts, and publishes them without repeating local steps. Parallelize independent test suites and cache native dependencies where the build system supports it. Keep staging and production configuration structurally consistent, because an environment mismatch can block a release late in the process.

Automation은 시간보다 소유권을 더 많이 바꾼다. 그것이 없다면, 한 개발자가 서명, 빌드, 승인, 및 배포를 조율해야 한다. 그것이 있으면 pipe line은 반복 가능한 작업을 수행하며 개발자는 결과를 검토하고 예외를 처리한다.

Differential 업데이트는 별도의 소모원의 하나를 해결한다. 웹 번들의 일부만 변경된 경우, 변경된 파일만 보내고 전체 패키지를 보내지 않으면 전송 작업을 줄이고 제한된 연결에서 실시간 배포를 더 실용적으로 할 수 있다. artifact는 실제 변경 표면을 반영하는 대신 모든 변경되지 않은 자산을 다시 패키징하는 대신.

위험을 줄이기 위해 QA 큐를 만들지 않는다.

채널 기반 배포는 내부 테스트, 초기 접근, 및 일반 가용성을 분리한다. 스테이징은 업데이트를 먼저 받을 수 있고, 베타는 선택된 사용자에게 노출시킬 수 있고, 프로덕션은 수신된 데이터가 적절한 동작을 보인 후에 따라올 수 있다. 이로써 유효성 검증은 더 작은, 관찰 가능한 대상과 연관되며, 하나의 늦은 승인에 대한 대량의 배치가 쌓이지 않는다.

기능 플래그는 애플리케이션 내에서 제어를 추가한다. 개발자는 code을 병합할 수 있다. 그 후에 정의된 대상에게 경험을 활성화하고 오류 및 동작을 모니터링할 수 있다. 그로써 더 짧은 수명 branch를 지원하고, 팀은 문제가 있는 경험을 비활성화할 수 있다. 그 후에 원본 바이너리를 다시 빌드할 필요가 없다.

배포 게이트를 자동화하기 전에 테스트 커버리지 및 성능 유효성 검증에 대한 지침을 찾으려면 PageSpeed Plus 테스트 전략 기사 를 참조하십시오.

소프트웨어 릴리스 PIPELINE을 자동화, 테스트 및 배포를 통해 가속화하는 세 단계를 설명하는 다이어그램입니다.

실용적인 PIPELINE은 이 순서를 따를 수 있습니다.

  1. 커밋 및 검증: 모든 관련 변경 사항에 대해 linting, 단위 테스트, 번들 검사 및 보안 검사를 실행합니다.
  2. 제어된 채널로 게시: 명확한 버전 기록 및 대상 규칙과 함께 스테이징 또는 베타에 아티팩트를 전송합니다.
  3. 관찰 및 승격: 사용자 보고 및 실패를 검토한 후 프로덕션으로 아티팩트를 승격합니다.
  4. 의도적으로 복구: 이전의 알려진 좋은 버전을 유지하여 롤백이 다른 저장소 제출이 필요하지 않도록 합니다.

워크플로우를 관찰하세요:

The 배포 자동화 가이드 이러한 관행을 반복 가능한 배포로 변환하는 구현 컨텍스트를 제공합니다. Capacitor 팀에게 있어서, 실질적인 차이는 중요합니다: 네이티브 변경은 여전히 바이너리 릴리즈가 필요하지만, 적격한 웹 레이어 변경은 제어된 라이브 업데이트 경로를 통해 사용자에게 릴리즈를 제공할 수 있고, 스토어 리뷰를 기다리지 않아도 됩니다.

크로스 플랫폼 앱에 대한 더 빠른 릴리즈를 위한 Capgo

Capacitor 팀은 Capgo을 사용하여 적격한 웹 레이어 변경을 라이브 업데이트 경로로 사용할 수 있습니다. 개발자는 자바스크립트 버그를 수정하고 웹 번들을 빌드하고, Capgo CLI를 통해 서명된 업데이트 릴리즈를 발행합니다. 업데이터는 대상 기기를 대상으로 배포하고, 다음 런칭 시 업데이트를 적용하고, 업데이트가 실패할 경우 롤백 보호를 유지할 수 있습니다.

Capgo이 사용자에게 무결점으로 전달하는 모바일 앱 업데이트를 즉시 OTA로 제공하는 워크플로를 minh họa하는 다이어그램입니다.

이 워크플로가 배포의 단위가 변합니다. 네이티브 기능은 여전히 바이너리 경로를 따르지만, 웹 레이어 변경은 플랫폼 및 스토어 정책 경계 내에서 적격한 경우 새로운 스토어 패키지를 기다리지 않아도 됩니다. Capgo은 서명된 웹 번들을 지원하며, 차별 업데이트, 채널, CI/CD 통합, 기기별 로그, 수용 및 실패 메트릭, 버전 기록, 자동 롤백 보호를 제공합니다.

채널은 릴리즈 컨트롤을 팀 워크플로로 변환합니다.

채널은 크로스 플랫폼 팀이 작업하는 방식과 자연스럽게 매핑됩니다:

  • 스테이징 내부 테스터에게 격리된 업데이트 스트림을 제공합니다.
  • 베타 새로운 기능과 버그 수정을 빠르게 출시하는 데 도움이 됩니다.
  • Production 팀이 증거에 만족할 때 일반 사용자에게 제공됩니다.

각 채널은 독립적인 속도로 진행할 수 있습니다. 따라서 개발자는 내부 검증을 위한 수정을 내보내지 않고 테스트된 버전을 대신 내보낼 수 있습니다.

롤백은 배포와同등한 중요성을 가집니다. 중요한 문제가 발생하면 이전 버전으로 되돌아가 안전한 경로를 제공하여 underlying 문제를 조사하는 동안 팀이 회복할 수 있습니다.

두 가지 배포 경로를 비교하세요.

기존의 Capacitor 배포 주기는 다음과 같습니다.

  1. code의 웹 및 네이티브 버전을 변경합니다.
  2. 바이너리를 빌드합니다.
  3. 리뷰에 제출합니다.
  4. 승인과 배포를 기다립니다.
  5. 사용자가 이를 채택할 때까지 기다립니다.

Live Update

  1. 웹層을 변경하세요.
  2. 배포 속도 향상을 위해 번들을 빌드하고 서명하세요.
  3. 통제 채널에 게시하세요.
  4. 사용자 수용과 실패를 관찰하십시오.
  5. 업데이트 또는 롤백

자동화 pipeline을 연결하여 팀은 이 워크플로를 사용할 수 있습니다. Capgo GitHub 액션 통합 가이드Common Misconceptions About Shipping Faster

Faster releases don’t automatically mean lower quality.

빠른 릴리스는 자동으로 낮은 품질을 의미하지는 않는다. A live-update cycle for an eligible web-layer change looks different:

2번째 오해는 배포 빈도만으로 속도 정의가 된다는 것이다. DORA는 배달을 여러 개의 지표로 다루는데, 이 중에는 리드 타임, 변경 실패율, 복구까지 평균 시간이 포함된다. 팀이 지속적으로 배포하지만 시간을 소비하여 사고를 수습한다면 건강한 속도를 구축하지 못했다. 이는 미완성한 위험의 움직임을 가속화한 것이다.

회복이 없는 속도는 오랜 장애로 가는 더 빠른 길이다.

모바일 팀은 종종 리뷰가 개선이 불가능하다고 말한다. 리뷰는 이진 배달을 제한하지만, 모든 사용자 대면 변경을 정의하지는 않는다. 유용한 구별은 변경이 네이티브 code에 속하는지 아니면 웹层에 속하는지 여부이다. 기능 플래그, 원격 구성, 콘텐츠 업데이트, 그리고 서명된 패키지의 자격이 있는 경우 후자의 경우에는 더 짧은 경로를 제공할 수 있다. 네이티브 변경이 리뷰가 필요하다는 것을 부정하지는 않는다.

라이브 업데이트도 합리적인 정책 및 보안 문제를 제기한다. 팀은 애플과 구글의 규칙을 이해하고, 허용된 콘텐츠와 동작으로 배달을 제한하고, 패키지를 서명하고 인증하고, 채널을 보호하고, 명확한 롤백 경로를 유지해야 한다. 라이브 업데이트 시스템은 금지된 실행 가능한 동작을 숨겨서 배포하는 방법이 될 수 없다.

관찰성은 팀이 더 빠르게 될 때까지 기다릴 수 없다.

릴리즈 속도 향상을 위한 액션 플랜

측정부터 시작하여 대기 시간의 가장 큰 원인을 제거하라. 네이티브 바이너리 릴리즈와 웹 레이어 업데이트를 분리하고, 각 경로의 리드 타임을 기록하고, 빈도와 회복을 함께 추적하여 팀이 단일 숫자를 최적화하는 동안 고객 경험을 느리게 유지하는 것을 방지하라.

첫 스프린트의 빠른 승리

  • 페이지/영역: Capgo Builder / 네이티브 클라우드 빌드 제품 페이지. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 메시지 키 `native_build_builder_credit_first` (네이티브 빌드 빌더 크레딧 퍼스트). 트리거를 자동화하라:
  • 저장소에서 빌드 작업과 유효성 검사를 실행하여 개발자의 노트북에서 실행하는 대신. 버전 표준화:
  • 일관된 버전 표준화를 사용하여 팀이 변경된 것을 식별하고 사용자가 받은 아티팩트를 식별할 수 있도록 하라. 스테이징 채널을 생성하라:
  • 내부 테스터에게 제어된 경로를 제공하여 넓은 배포가 필요하지 않도록 하라. 회복 단계를 기록하라:
  • 리뷰 배치 크기: 릴리스 PIPELINE에 들어가기 전에 큰 변경 사항을 분할하십시오.

다음 투자는 아키텍처입니다. 변경 사항이 바이너리와 웹层를 통해 전송할 수 있는지 확인하고, 차등 배포를 추가하고, 진행 중인 채널을 소개하고, 관찰 가능성 시스템에 배달 이벤트를 연결하십시오. 대시보드는 누가 업데이트를 받았는지, 실패했는지, 팀이 안전한 버전을 복원하는 데 얼마나 빠르게 복원했는지 알려줍니다.

긴급한 경우, 제품 및 엔지니어링 리더는 shipped 경험 빈도 를 보상해야합니다. 아닌 버전 번호 활동만. 작은 릴리스는 더 긴 feedback 루프를 만듭니다. 그러나 팀이 안정성을 보호하고 롤백 루틴을 유지하고, 복원은 배달의 예외적인 이벤트가 아닌 부분으로 다루는 경우에만.현재 스프린트에서 이 체크리스트를 사용하십시오:

바이너리 카다ンス와 shipped 경험 빈도

  1. 를 분리하십시오.
  2. 빌드, 테스트, 서명, 및 배포 경로를 자동화하십시오.
  3. 스테이징 및 베타 채널을establish하기 전에 프로덕션 배포를 확장하십시오.
  4. 수용, 실패, 및 롤백 시각성을 추가하십시오.
  5. DORA 지표를 함께 리뷰하십시오. 배포 빈도만 추적하는 대신.

릴리즈 속도는 각 완료된 피드백 루프가 다음 변경을 informs하기 때문에 배가된다. 하나의 병목 현상을 제거하면 다음 사이클도 개선되며, 특히 팀이 더 작은 변경을 배포하고, 그 변경을 빠르게 관찰하고, 다시 전체 애플리케이션을 재구축하지 않고 회복할 수 있는 경우尤其 그렇다.


Capgo provides Capacitor and Electron teams with a controlled live-update path for signed web-layer bundles, differential delivery, channels, observability, and rollback protection. If App Store review is slowing eligible fixes and experience changes, visit Capgo Capgo를 평가하는 방법을 알아보세요.

Live updates for Capacitor apps

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

웹层 버그가 활성화되면 __CAPGO_KEEP_0__를 통해修정을 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 말고.

사용자는 배경에서 업데이트를 받으면서 네이티브 변경은 일반적인 검토 경로에 남아있다.

마틴의 인간 지원

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의 통찰력을 제공합니다.