이 문서에는 Firebase 앱을 프로덕션에 출시하기 전에 고려해야 할 사항과 권장사항의 체크리스트가 포함되어 있습니다.
출시를 위한 일반 권장사항
- 프로덕션에 배포하기 전에 Firebase Local Emulator Suite(지원되는 제품의 경우)에서 모든 변경사항을 테스트했는지 확인합니다. 철저한 테스트를 통해 비용이 많이 드는 실수를 방지할 수 있습니다. 
- 이를 지원하는 모든 서비스에 Firebase App Check를 시행합니다. App Check를 사용하면 실제 앱만 백엔드 서비스와 리소스에 액세스할 수 있습니다. 
- Firebase의 일반 보안 체크리스트를 검토합니다. 
- Firebase Remote Config 출시를 사용하여 앱에 새로운 기능 및 업데이트를 안전하고 점진적으로 출시합니다. 
- 아직 설정하지 않았다면 Firebase Crashlytics를 설정해 보세요. Firebase Crashlytics는 가벼운 실시간 비정상 종료 보고 도구로 앱 품질을 저하하는 안정성 문제를 추적하고 우선순위를 지정하고 문제를 해결하는 데 도움이 됩니다. 
요금제 한도 확인 및 예산 알림 설정
- 프로덕션으로 전환한 후 사용량 한도 및 할당량을 초과하지 않도록 합니다. 특히 무료 Spark 요금제를 사용하는 경우 주의해야 합니다. 사용한 만큼만 지불하는 Blaze 요금제로 업그레이드하는 것이 좋습니다. 
- 프로젝트에 예산 알림을 설정합니다. - 예산 알림은 예산 한도가 아닙니다. 구성된 기준점에 도달하거나 이를 초과하면 알림이 전송되므로 앱 또는 프로젝트에서 조치를 취할 수 있습니다. 
- 알림에 대한 응답으로 결제를 사용 중지하는 기능과 같은 고급 알림 및 작업을 설정해 보세요. 
 
- 제품별 대시보드 또는 Firebase Console의 중앙 사용량 및 결제 대시보드에서 사용량을 모니터링합니다. 
Firebase 프로젝트 및 앱이 권장사항을 준수하는지 확인
한 명의 개발자든 대규모 기업팀이든 Firebase 프로젝트, 앱, 리소스가 안전하게 보호되고 팀의 변화에 따라 발전할 수 있도록 하는 것이 중요합니다.
Firebase 프로젝트는 Firebase 서비스 및 구성이 사용 설정된 Google Cloud 프로젝트일 뿐이라는 점을 기억하는 것이 좋습니다. 즉, Google Cloud에서 권장하는 많은 권장사항이 Firebase에도 적용됩니다.
- 개발, 테스트, 프로덕션에 서로 다른 Firebase 프로젝트를 사용합니다. - 프로덕션 앱과 연결된 프로젝트에 대한 예상치 못한 노출을 제한해 보세요. 개발 워크플로 설정에 대해 자세히 알아보세요. 
- 중요한 프로젝트, 특히 프로덕션 앱과 연결된 프로젝트를 보호합니다. 
- 아직 설정하지 않았다면 Google Cloud 조직을 설정하고 Firebase 프로젝트를 추가해 보세요. 
- 특히 프로젝트가 Google Cloud 조직에 속하지 않는 경우 Firebase 프로젝트에 소유자를 두 명 이상 추가합니다. Firebase 프로젝트에 소유자를 할당하는 시기 및 방법을 자세히 알아보세요. 
- 프로젝트 구성원('원칙'이라고도 함)을 개별적으로 추가하는 대신 Google 그룹으로 추가합니다. - 그룹을 사용하면 팀원에게 역할을 일괄적으로 할당하고 Firebase 프로젝트에 액세스할 수 있는 사용자를 관리할 수 있습니다(특히 팀원이 교체되거나 퇴사하는 경우). 
- 각 프로젝트 구성원('원칙'이라고도 함)에게 Firebase 프로젝트 및 리소스에 대한 적절한 수준의 액세스 권한을 부여합니다. Firebase IAM으로 프로젝트 액세스 관리에서 자세히 알아보세요. 
- 각 관련 프로젝트 구성원('원칙'이라고도 함)이 특정 제품 또는 프로젝트 상태(예: 요금제 변경 또는 할당량 한도)에 관한 알림을 수신하도록 환경설정을 지정해야 합니다. Firebase 알림 수신에서 자세히 알아보세요. - 또한 필요에 따라 특정 프로젝트 구성원 또는 추가 프로젝트 구성원이 알림을 받도록 하려는 경우 프로젝트의 '필수 연락처'를 맞춤설정할 수 있습니다. 이는 결제, 법률, 제품 변경사항에 대한 알림을 프로젝트 소유자 외에도 더 많은 사용자가 받을 수 있도록 하는 데 특히 유용합니다. 
- Firebase API 키를 키의 API 허용 목록에 있어야 하는 API로만 제한합니다. Firebase 보안 체크리스트에서 API 키에 대한 정보도 확인하세요. 
앱에서 사용하는 특정 서비스 준비
앱에서 사용하는 각 제품 및 서비스는 프로덕션에서 사용할 때 구체적인 고려해야 할 사항이 있을 수 있습니다.
Google Analytics
- Google Analytics가 앱 실행 시부터 분석 데이터 수집을 시작할 수 있도록 잠재고객 조건을 정의합니다. 
- BigQuery SQL로 데이터를 분석하거나 자체 도구로 사용할 데이터를 내보낼 수 있도록 Google Analytics 데이터를 BigQuery로 내보내기를 사용 설정해 보세요. 
- 사용자 속성을 전체 앱의 수명 주기와 관련된 정보로 제한합니다. 만들 수 있는 개수에는 제한이 있으며 보관처리할 수 없습니다. 
- Google Analytics 속성 및 계정의 Google Analytics 역할 설정을 검토합니다. 이러한 권한은 Firebase 프로젝트 IAM 권한 및 역할과는 별도로 관리됩니다. 
- Firebase Console의 프로젝트 설정에서 App Store ID 및 팀 ID(필요한 경우)가 올바른지 확인합니다. 
App Check
- Firebase Console의 프로젝트 설정에서 팀 ID가 올바른지 확인합니다. 
- 아직 설정하지 않은 경우 이를 지원하는 모든 서비스에 Firebase App Check를 시행합니다. App Check를 사용하면 실제 앱만 백엔드 서비스와 리소스에 액세스할 수 있습니다. 
Authentication
- 이용하지 않는 제공업체(특히 익명 인증)를 사용 중지합니다. 
- 앱에서 Google 계정으로 로그인을 사용하는 경우 OAuth 동의 화면을 맞춤설정합니다. 
- Authentication 이메일 전송 서비스의 도메인 및 발신자를 맞춤설정합니다. 
- Identity Platform SMS 인증 서비스를 사용하는 경우 Firebase App Check를 시행하고 SMS 리전 정책을 구성하여 SMS 악용으로부터 앱을 보호합니다. 
- Apple 플랫폼에서 일반적인 Authentication 오류에 대한 오류 처리를 구현합니다. 
- Firebase Console의 프로젝트 설정에서 앱의 서명 인증서에 출시 SHA-1 해시를 추가합니다. 앱에서 전화번호 로그인 또는 Google 계정으로 로그인(OAuth 클라이언트 요구사항이 있음)을 사용하는 경우 SHA-1 해시가 필요합니다. 
- : 도메인에 대한 액세스 제어를 추가하여 무단 사용을 방지합니다. 특히 Firebase Console의 Authentication 섹션에서 프로덕션 도메인 액세스를 허용합니다(Firebase Security Rules을 사용하는 제품을 사용하는 경우 특히 중요). 
Cloud Firestore
- 의도하지 않은 데이터 액세스를 방지하도록 Cloud Firestore Security Rules을 구성합니다. 
- 출시 빌드에서 ProGuard를 사용하여 코드를 축소합니다. ProGuard가 없으면 Cloud Firestore SDK와 종속 항목으로 인해 APK 크기가 늘어날 수 있습니다. 
Cloud Messaging
- BigQuery SQL로 데이터를 분석하거나 자체 도구로 사용할 데이터를 내보낼 수 있도록 Cloud Messaging 데이터를 BigQuery로 내보내기를 사용 설정해 보세요. 
- Firebase Console에서 Apple 앱의 Cloud Messaging용 APNs 인증 키를 업로드합니다. APNs 인증서를 사용하는 경우 프로덕션 APNs 인증서를 업로드해야 합니다. 
Cloud Storage
- 의도하지 않은 데이터 액세스를 방지하도록 Cloud Storage Security Rules을 구성합니다.
Crashlytics
- 각 관련 프로젝트 구성원('원칙적'이라고도 함)이 Crashlytics 또는 프로젝트 상태(예: 요금제 변경 또는 할당량 한도)에 관한 알림을 수신하도록 환경설정을 지정해야 합니다. Firebase 알림 수신에서 자세히 알아보세요. 
- BigQuery SQL로 데이터를 분석하거나 자체 도구로 사용할 데이터를 내보낼 수 있도록 Crashlytics 데이터를 BigQuery로 내보내기를 사용 설정해 보세요. 
- (네이티브 Android 및 iOS만 해당) 비정상 종료가 발생한 이유와 해결 방법을 파악하는 데 걸리는 시간을 단축할 수 있도록 Crashlytics의 AI 지원을 사용 설정해 보세요. 
- Crashlytics에서 사용할 수 있도록 출시 빌드용 dSYM 파일을 업로드합니다. Xcode가 dSYM을 자동으로 처리하고 파일을 업로드할 수 있는지 확인 
- Crashlytics에서 사용할 수 있도록 출시 빌드의 ProGuard 매핑을 업로드합니다. Firebase CLI를 사용하여 업로드할 수 있습니다. 
- Firebase를 Google Play에 연결하여 Android 앱의 상태를 보다 다각적으로 확인합니다. 예를 들어 Google Play 트랙별로 앱의 비정상 종료 보고서를 필터링하여 특정 빌드에 대시보드를 더 집중할 수 있습니다. 
- Android를 타겟팅하고 IL2CPP를 사용하는 빌드의 경우 코드 또는 구성 변경 여부와 관계없이 기호가 포함되기를 원하는 모든 개별 빌드 실행에 대해 네이티브 기호를 업로드해야 합니다. 
Dynamic Links
- Dynamic Links는 지원 중단되었으므로 서비스를 마이그레이션하는 것이 좋습니다. 지원 중단 FAQ에서 자세히 알아보세요.
Firebase ML
- 프로덕션용 Firebase ML Apple 앱 준비를 참조하세요. 
- 프로덕션용 Firebase ML Android 앱 준비를 참조하세요. 
Performance Monitoring
- 각 관련 프로젝트 구성원('원칙적'이라고도 함)이 Performance Monitoring 또는 프로젝트 상태(예: 요금제 변경 또는 할당량 한도)에 관한 알림을 수신하도록 환경설정을 지정해야 합니다. Firebase 알림 수신에서 자세히 알아보세요. 
- BigQuery SQL로 데이터를 분석하거나 자체 도구로 사용할 데이터를 내보낼 수 있도록 Performance Monitoring 데이터를 BigQuery로 내보내기를 사용 설정해 보세요. 
Realtime Database
- 의도하지 않은 데이터 액세스를 방지하도록 Realtime Database Security Rules을 구성합니다. 
- 확장할 준비가 되었는지 확인합니다. Realtime Database에는 대부분의 애플리케이션에 충분한 기본 할당량이 있지만 일부 앱은 추가 용량이 필요하기도 합니다. 
- Realtime Database와 연동하도록 ProGuard 규칙을 구성합니다. 
Remote Config
- 실험용 Remote Config 규칙이 출시 사용자에게 영향을 주지 않으며 앱에 적절한 서버 및 인앱 기본값이 배포되어 있는지 확인합니다.