React Native CodePush 마이그레이션: App Center 종료 후 BraveMobile 라이브러리를 활용한 S3 기반 배포 전략
🤖 AI 추천
App Center 지원 종료로 인해 기존 CodePush 라이브러리 사용에 어려움을 겪고 있거나, AWS S3를 활용하여 React Native 앱의 코드 푸시를 직접 관리하고 싶은 백엔드 개발자, DevOps 엔지니어, 또는 프론트엔드 개발자에게 이 콘텐츠를 추천합니다. 특히, CI/CD 파이프라인에 코드 푸시 배포를 통합하고 싶은 개발자에게 유용합니다.
🔖 주요 키워드

핵심 기술: App Center 지원 종료에 따른 대안으로 BraveMobile의 react-native-code-push
라이브러리를 사용하여 React Native 앱의 OTA(Over-The-Air) 업데이트를 AWS S3를 통해 직접 관리하는 방법을 제시합니다.
기술적 세부사항:
- 라이브러리 설치 및 설정:
@bravemobile/react-native-code-push
및dotenv
라이브러리 설치.- AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 환경 변수 설정.
- 안드로이드 설정:
android/app/build.gradle
파일에codepush.gradle
적용.MainApplication.kt
파일에CodePush.getJSBundleFile()
호출 추가.
- iOS 설정:
- Info.plist Configurations에 'Staging' 생성.
- Build Settings에
MULTI_DEPLOYMENT_CONFIG
사용자 정의 설정. AppDelegate.mm
파일에서[CodePush bundleURL]
로 수정.
- AWS S3 연동:
@aws-sdk/client-s3
및@aws-sdk/lib-storage
를 이용한 S3 클라이언트 설정.- S3 버킷, 리전, 기본 경로 설정.
bundleUploader
함수: 번들 파일(zip)을 S3에 업로드하고 다운로드 URL 반환.getReleaseHistory
함수: S3에서 릴리즈 히스토리(json)를 조회.setReleaseHistory
함수: S3에 릴리즈 히스토리(json)를 저장.
- 메타데이터 관리:
- 번들 디렉토리의
metadata.json
에서binaryVersion
,appVersion
읽어오기. - 환경 변수를 fallback으로 사용.
- 번들 디렉토리의
- CLI 설정:
CliConfigInterface
를 통해 S3 업로더, 히스토리 조회/저장 함수 구현.__DEV__
환경에 따라staging
또는production
identifier 사용.
- 앱 통합:
CodePush
HOC로 App 컴포넌트 감싸기.checkFrequency: CodePush.CheckFrequency.ON_APP_RESUME
으로 앱 재개 시 자동 업데이트 체크.installMode: CodePush.InstallMode.IMMEDIATE
로 즉시 업데이트 적용.releaseHistoryFetcher
를 통해 S3에서 업데이트 정보 가져오기.
- 배포 명령어:
npx code-push create-history
로 버전 히스토리 생성.npx code-push release
명령어로 릴리즈.
개발 임팩트:
- App Center의 갑작스러운 지원 종료에 대한 효과적인 대안을 제공합니다.
- AWS S3를 활용하여 코드 푸시 배포 인프라를 자체적으로 구축하고 관리할 수 있습니다.
- CI/CD 파이프라인과의 연동을 통해 개발 및 배포 프로세스의 자동화를 강화할 수 있습니다.
- 핫픽스 및 소규모 업데이트를 사용자에게 빠르고 안정적으로 배포하여 사용자 경험을 개선할 수 있습니다.
커뮤니티 반응:
- 작성자는 새로운 라이브러리 도입에 대한 걱정에도 불구하고, 실제 적용이 수월했고 결과에 만족했다고 언급하며 긍정적인 경험을 공유했습니다.
📚 관련 자료
react-native-code-push
The original Microsoft CodePush library that this solution is intended to replace or provide an alternative for when App Center is no longer an option. Understanding its core functionality is crucial for migrating.
관련도: 95%
aws-sdk-js-v3
The AWS SDK for JavaScript v3, which is used in the provided content to interact with AWS S3 for uploading bundles and managing release history. Essential for the S3 integration part of the solution.
관련도: 90%
react-native-dotenv
A library for managing environment variables in React Native applications, which is used in the provided content to load AWS credentials and other configuration settings from a .env file.
관련도: 70%