1. 스토어 배포 (Store Deployment)
스토어 배포는 앱을 구글 플레이스토어(안드로이드)나 애플 앱스토어(iOS)와 같은 공식 앱 마켓에 배포하는 과정입니다.
이는 사용자가 앱을 다운로드하고 설치하는 전통적인 방법입니다.
- 목적: 새로운 앱 버전(네이티브 코드 변경 포함)을 출시하고, 스토어의 심사를 거쳐 사용자들에게 배포하는 방법입니다.
- 장점: 새로운 기능이나 네이티브 코드의 수정 등을 포함한 완전한 앱 업데이트가 가능합니다.
- 제한 사항: 스토어 배포는 심사 과정이 필요하고, 새로운 버전이 배포되기까지 시간이 걸립니다. 또한, 앱스토어에서의 승인을 받지 않으면 배포가 불가능합니다.
2. 코드푸시 (CodePush)
코드푸시는 주로 React Native와 같은 크로스 플랫폼 모바일 앱 개발에서 사용되는 서비스로,
앱의 JavaScript 코드나 리소스(예: 이미지, 스타일 등)를 앱 스토어를 거치지 않고 실시간으로 업데이트할 수 있도록 돕는 도구입니다.
- 목적: 앱의 기능을 즉시 수정하거나 버그를 수정할 때, 스토어 심사 없이 바로 사용자들에게 업데이트를 푸시할 수 있게 해줍니다.
- 장점: 앱을 새 버전으로 배포하려면 보통 시간이 많이 소요되지만, 코드푸시를 통해 빠르게 수정을 반영할 수 있습니다.
- 제한 사항: 코드푸시에서는 앱의 네이티브 코드(Android/iOS의 네이티브 코드)나 앱의 기본 구조는 업데이트할 수 없습니다. 앱의 JavaScript 코드나 리소스만 수정 가능하므로, 네이티브 코드 변경이 필요한 경우 스토어 배포를 해야 합니다.
차이점 요약
- 코드푸시는 앱의 JavaScript 코드나 리소스를 즉시 업데이트할 수 있는 서비스로, 스토어 심사를 거치지 않습니다.
- 스토어 배포는 앱의 전체적인 버전(네이티브 코드 포함)을 공식 앱 마켓에 배포하는 방식으로, 심사와 시간이 필요합니다.
따라서, 코드푸시와 스토어 배포는 서로 보완적인 관계에 있습니다.
코드푸시는 긴급한 수정이나 업데이트에 유용하고 스토어 배포는 앱의 주요 업데이트나 새로운 기능을 포함하는 데 사용됩니다.
잠수함 패치라고도 불리는 코드푸시

코드푸시는 종종 "잠수함 패치"(Submarine Patch)라고 불리기도 합니다.
이 용어는 "스텔스 업데이트" 혹은 "은밀한 수정"이라는 의미로 사용되며,
주로 앱을 스토어 심사를 거치지 않고 빠르고 은밀하게 사용자에게 패치나 수정사항을 제공하는 방식에 대해 이야기할 때 사용됩니다.
"잠수함 패치"라는 용어의 의미
"잠수함"이라는 단어는 잠수함처럼 보이지 않게, 은밀하게 진행되는 업데이트를 비유적으로 표현한 것입니다.
코드푸시를 사용하면 개발자가 앱을 스토어 심사를 거치지 않고 실시간으로 업데이트를 배포할 수 있기 때문에, 사용자는 이러한 업데이트를 그들이 알지 못한 채 받을 수 있습니다.
왜 "잠수함 패치"라고 불리는지?
- 빠른 대응: 앱의 기능이나 버그를 빠르게 수정할 수 있지만, 이 과정이 사용자의 눈에 띄지 않게 이루어집니다. 즉, 사용자들이 새로운 업데이트가 이루어진 사실을 모를 수도 있다는 점에서 "잠수함"이라는 표현이 사용됩니다.
- 스텔스 방식: 개발자가 앱을 업데이트하더라도 사용자는 이를 명시적으로 인지하지 못할 수 있습니다. 즉, 공식적인 업데이트 알림 없이 업데이트가 이루어지기 때문에 "잠수함"처럼 물속에서 조용히 진행되는 패치라고 비유됩니다.
주의점
"잠수함 패치"라는 용어는 주로 비공식적인 패치나 위법적인 수단을 의미하기도 합니다.
예를 들어, 앱에서 기능을 추가하거나 수정해야 하는데 이를 스토어 심사를 거치지 않고 급하게 배포하는 경우
사용자에게 제대로 알리지 않고 원치 않는 변화가 발생할 수 있기 때문입니다.
따라서 "잠수함 패치"가 반드시 나쁜 의미만 있는 것은 아니지만, 때때로 의도치 않은 버그를 유발할 수 있기 때문에 신중하게 사용해야 합니다.
코드푸시 업데이트가 기설치자에게 적용되는 조건은?
코드푸시를 통해 진행한 업데이트가 기존에 설치된 유저에게 적용되기 위해서는 몇 가지 조건과 상황이 필요합니다.
아래는 코드푸시 업데이트가 실제로 유저에게 적용되는 과정과 그 조건들입니다.
1. 앱 재실행
- 가장 일반적인 방법: 사용자가 앱을 재실행(앱을 완전히 종료하고 다시 실행)하면, 코드푸시가 적용된 최신 JavaScript 코드나 리소스가 로드됩니다.
- 앱을 재시작할 때, 코드푸시가 업데이트된 파일을 다운로드하고 적용하는 과정이 진행됩니다.
2. 앱 실행 후 일정 시간 경과
- 앱이 실행 중일 때, 코드푸시는 앱이 완전히 로딩된 후 일정 시간 내에 배경에서 업데이트를 진행할 수 있습니다.
- 예를 들어, 앱이 백그라운드 상태에서 돌아가거나 앱이 포그라운드로 다시 돌아왔을 때 코드푸시 업데이트가 다운로드되고 적용됩니다. 다만, 이 과정은 비동기적으로 이루어지기 때문에, 유저가 앱을 종료하고 다시 실행하지 않더라도 몇 분 후 자동으로 적용될 수 있습니다.
3. 수동으로 체크 (폴링)
- 코드푸시는 앱에서 정기적으로 업데이트를 확인하는 주기를 설정할 수 있습니다. 이 방법을 통해 앱이 실행 중일 때 코드푸시 서버와 통신하여 새 업데이트가 있는지 확인하고, 업데이트가 있을 경우 다운로드하고 적용합니다.
- 예를 들어, 사용자가 앱을 오픈한 후 몇 분 내에 수동으로 업데이트 체크를 통해 새로운 버전을 반영할 수 있습니다. 이 경우, 사용자가 기다려야 할 수 있습니다.
4. 알림을 통한 적용 (Optional)
- 일부 코드푸시 설정에서는 사용자가 업데이트를 적용할지 여부를 직접 선택하도록 유도하는 방식도 있습니다. 이 경우, 사용자에게 업데이트 알림을 보내거나 특정 시점에서 업데이트를 적용하도록 요구할 수 있습니다.
5. 오프라인 후 연결 시 적용
- 만약 사용자가 오프라인 상태에서 앱을 사용하고 있다면, 네트워크가 연결된 이후에 코드푸시 업데이트가 다운로드될 수 있습니다. 이 경우, 앱이 온라인 상태로 전환되면 자동으로 최신 업데이트가 다운로드되고 반영됩니다.