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또는productionidentifier 사용.
- 앱 통합:
CodePushHOC로 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%