여러 고객 앱을 운영할 때 계정과 서명 키를 분리하는 방법
React Native와 Expo로 여러 고객 앱을 개발·배포한다면 계정, 비용, 서명 키, 스토어 권한을 어떻게 나눌지 초기에 정해야 합니다. 이 구조를 잘못 잡으면 나중에 소유권 이전, 업데이트, 보안 관리가 복잡해집니다.
핵심 원칙
고객 앱을 여러 개 운영할 때는 “개발자가 편한 구조”보다 “고객 소유권과 보안이 분리되는 구조”가 중요합니다.
권장 원칙은 다음과 같습니다.
- 고객별로 스토어 계정을 분리한다.
- 고객별로 Expo Organization 또는 프로젝트 권한을 분리한다.
- iOS와 Android 서명 키를 고객 단위로 관리한다.
- CI/CD 권한은 최소 권한으로 부여한다.
- 비밀 키는 저장소에 커밋하지 않는다.
컨트롤과 결제는 다르다
하나의 개발자 계정으로 여러 조직에 접근할 수는 있습니다. 하지만 구독 비용, 빌드 사용량, 앱 소유권은 조직이나 스토어 계정 단위로 분리하는 것이 안전합니다.
이렇게 해야 특정 고객과의 계약이 끝나도 앱과 계정 소유권을 정리하기 쉽습니다.
iOS에서 봐야 할 것
iOS는 App Store Connect 권한, 인증서, provisioning profile, API Key 관리가 중요합니다.
자동 제출을 위해 App Store Connect API Key를 사용할 수 있지만, 키 파일은 강한 보안 관리가 필요합니다. 팀에서는 필요한 앱과 역할만 접근하도록 권한을 제한하는 것이 좋습니다.
Android에서 봐야 할 것
Android는 keystore와 Google Play 서비스 계정 권한이 핵심입니다.
keystore를 잃으면 기존 앱 업데이트가 어려워질 수 있으므로 백업 정책이 필요합니다. Google Play API 자동화를 쓴다면 서비스 계정 권한도 필요한 범위로 제한해야 합니다.
고객별 분리가 주는 장점
- 앱 소유권이 명확하다.
- 고객별 비용 산정이 쉽다.
- 권한 사고의 영향 범위를 줄일 수 있다.
- 계약 종료 시 이전이 쉽다.
- 빌드·제출 자동화를 표준화하기 좋다.
작은 팀을 위한 현실적인 구조
처음에는 모든 것을 완벽하게 자동화하기보다, 고객별로 다음 항목만 명확히 관리해도 충분합니다.
- 스토어 계정 소유자
- Expo Organization 또는 프로젝트
- iOS 인증/제출 키
- Android keystore와 서비스 계정
- CI secret 보관 위치
- 권한 회수 절차
듀오랩스가 보는 관점
여러 고객 앱을 만드는 사업에서는 코드보다 운영 구조가 더 오래 남습니다. 계정과 서명 키를 고객별로 분리하면 보안, 비용, 소유권 문제를 훨씬 안정적으로 관리할 수 있습니다.
우리 서비스에 적용할 계획이 있으신가요?
모바일 앱 개발 살펴보기 →함께 읽기
- Expo 앱을 통째로 복사해 새 프로젝트 만들기: 그대로 가는 파일과 고쳐야 하는 파일성경 지도라는 앱을 만들면서 npx create-expo-app을 치지 않았습니다. 이미 두 스토어에 배포되고 있는 다른 앱의 폴더를 통째로 복사해서 시작했습니다.
- EAS 배포 구조: Build·Submit·Update 는 왜 따로인가앱 하나를 두 스토어에 올리면서 EAS 를 처음 제대로 썼습니다. 그 전까지는 "배포 명령을 돌리면 스토어에 올라간다" 정도로만 알고 있었는데, 실제로 해보니 그 한 문장 안에 서로 다른 세 가지 일이 섞여 있었습니다. 그걸 구분하고 나서야 어디서 막혔는지가 보였습니다.
- Expo 앱 다국어: 사전의 키를 한국어 원문으로 둔 이유성경 지도 앱에 언어 다섯 개를 더했습니다. 영어, 일본어, 중국어 간체와 번체, 스페인어입니다. 화면이 하나뿐이고 서버도 없는 앱이라 붙이는 일 자체는 간단할 줄 알았는데, 번역문을 어디에 둘지에서 막혔습니다.
- Expo SDK 56 앱을 App Store와 Google Play에 배포하기Expo 앱을 배포한다고 하면 보통 eas build 명령 하나를 떠올립니다. 실제 운영 배포는 빌드, 앱 서명, 스토어 업로드, 베타 테스트, 심사, 공개 출시, OTA 업데이트가 서로 다른 단계입니다. 이 구분을 놓치면 CI가 성공했는데 스토어에는 앱이 없거나, JavaScript 수정이라고 생각해 OTA를 발행했는…
- Expo EAS 비용 구조와 절약 전략Expo Application Services(EAS)는 React Native 앱을 빌드, 제출, 업데이트하는 과정을 단순하게 만들어줍니다. 하지만 팀 규모와 빌드 빈도에 따라 비용 구조를 이해하고 써야 합니다.