React Native CodePush 마이그레이션: App Center 종료 후 BraveMobile 라이브러리를 활용한 S3 기반 배포 전략

🤖 AI 추천

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

🔖 주요 키워드

React Native CodePush 마이그레이션: App Center 종료 후 BraveMobile 라이브러리를 활용한 S3 기반 배포 전략

핵심 기술: App Center 지원 종료에 따른 대안으로 BraveMobile의 react-native-code-push 라이브러리를 사용하여 React Native 앱의 OTA(Over-The-Air) 업데이트를 AWS S3를 통해 직접 관리하는 방법을 제시합니다.

기술적 세부사항:

  • 라이브러리 설치 및 설정:
    • @bravemobile/react-native-code-pushdotenv 라이브러리 설치.
    • 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 파이프라인과의 연동을 통해 개발 및 배포 프로세스의 자동화를 강화할 수 있습니다.
  • 핫픽스 및 소규모 업데이트를 사용자에게 빠르고 안정적으로 배포하여 사용자 경험을 개선할 수 있습니다.

커뮤니티 반응:

  • 작성자는 새로운 라이브러리 도입에 대한 걱정에도 불구하고, 실제 적용이 수월했고 결과에 만족했다고 언급하며 긍정적인 경험을 공유했습니다.

📚 관련 자료