Firebase 프로젝트 이해

이 페이지에서는 Firebase 프로젝트에 대한 몇 가지 중요 개념을 간략하게 설명합니다. 링크가 제공된 경우 해당 링크로 이동하여 기능, 서비스, 다른 플랫폼에 대해 자세히 알아보세요. 페이지 하단에는 Firebase 프로젝트에 대한 일반적인 권장사항 목록이 있습니다.

Firebase 프로젝트, 앱, 제품 간의 관계

Firebase 프로젝트는 Firebase의 최상위 항목입니다. 프로젝트에서 iOS, Android 또는 웹 앱 등의 Firebase 앱을 추가할 수 있습니다. Firebase를 사용하도록 앱을 구성한 후 애널리틱스, Cloud Firestore, Performance Monitoring 또는 원격 구성과 같은 여러 가지 Firebase 제품에 Firebase SDK를 추가할 수 있습니다.

이 과정에 대한 자세한 내용은 시작 가이드(iOS | Android | | Unity | C++)를 참조하세요.

Firebase 프로젝트와 Google Cloud Platform(GCP) 간의 관계

Firebase Console에서 새 Firebase 프로젝트를 만들면 내부적으로 Google Cloud Platform(GCP) 프로젝트가 생성됩니다. GCP 프로젝트는 데이터, 코드, 구성, 서비스의 가상 컨테이너라고 볼 수 있습니다. Firebase 프로젝트는 Firebase 관련 구성 및 서비스가 추가적으로 포함된 GCP 프로젝트입니다. GCP 프로젝트부터 만들고 나중에 Firebase를 프로젝트에 추가할 수도 있습니다.

Firebase 프로젝트도 GCP 프로젝트 이므로 다음이 적용됩니다.

  • Firebase Console에 표시되는 프로젝트는 GCP ConsoleGoogle API 콘솔에도 표시됩니다.

  • 프로젝트의 결제권한이 Firebase와 GCP에서 공유됩니다.

  • 프로젝트의 고유 식별자(예: 프로젝트 번호프로젝트 ID)는 Firebase와 GCP에서 공유됩니다.

  • 프로젝트에서 Firebase와 GCP의 제품과 API를 모두 사용할 수 있습니다.

  • 프로젝트를 삭제하면 Firebase와 GCP에서도 삭제됩니다.

Firebase 프로젝트 설정 및 앱 추가

Firebase Console에서 Firebase 프로젝트를 설정하고 앱을 추가할 수 있습니다(고급 사용 사례에서는 Firebase Management REST API 사용). 프로젝트를 설정하고 앱을 추가할 때 구성과 관련하여 몇 가지 결정을 내리고 로컬 프로젝트에 특수한 구성 파일 또는 객체를 추가해야 합니다.

프로젝트를 설정하고 앱을 추가하기 전에 몇 가지 일반적인 권장사항을 검토하세요.

프로젝트 이름

프로젝트를 만들 때 프로젝트 이름을 제공해야 합니다. 이 식별자는 Firebase Console, GCP Console, Firebase CLI에서 프로젝트의 내부 전용 이름입니다. 프로젝트 이름은 공개적으로 표시되는 Firebase나 GCP 제품, 서비스 또는 리소스에서 노출되지 않으며 단순히 다양한 프로젝트를 간편하게 구분하는 용도로 사용됩니다.

언제든지 프로젝트 설정에서 프로젝트 이름을 수정할 수 있습니다. 상단 창에 프로젝트 이름이 표시됩니다.

프로젝트 번호

Firebase 프로젝트(및 연결된 GCP 프로젝트)에는 프로젝트 번호가 있습니다. 이 번호는 프로젝트의 전역적으로 고유한 정규 식별자입니다. 통합을 구성하거나 Firebase, Google 또는 타사 서비스에 API 호출 시 이 식별자를 사용합니다.

API 호출 및 프로젝트 번호

대부분의 경우 API 호출 시 프로젝트의 고유 식별자를 포함해야 합니다. 많은 API가 프로젝트 ID를 허용하지만 Firebase, Google 또는 타사 서비스에 API 호출 시 프로젝트 번호를 사용하는 것이 좋습니다.

Google의 AIP 2510 표준에서 프로젝트 식별자, 특히 프로젝트 번호 사용에 대해 자세히 알아보세요.

프로젝트 번호 찾기

  • Firebase CLI: firebase projects:list를 실행합니다. 프로젝트 번호가 계정과 연결된 모든 Firebase 프로젝트와 함께 표시됩니다.

  • Firebase Management REST API: projects.list를 호출합니다. 응답 본문에서는 FirebaseProject 객체에 프로젝트 번호가 포함됩니다.

프로젝트 ID

Firebase 프로젝트(및 연결된 GCP 프로젝트)에는 프로젝트 ID가 있습니다. 이 ID는 모든 Firebase 및 GCP에서 프로젝트의 사용자 정의 고유 식별자입니다. Firebase 프로젝트를 만들면 Firebase에서 자동으로 프로젝트에 고유 ID를 할당하지만 개발자가 설정 중에 수정할 수 있습니다. 일반적으로 이 식별자는 프로젝트를 참조하기 위한 편의성 별칭으로 취급됩니다.

프로젝트를 삭제하면 프로젝트 ID도 삭제되며 다른 어떠한 프로젝트에서도 다시 사용되지 않습니다.

Firebase 리소스 및 프로젝트 ID

프로젝트 ID는 공개적으로 표시되는 Firebase 리소스에 표시됩니다. 예를 들면 다음과 같습니다.

  • 기본 호스팅 하위 도메인 — projectID.web.appprojectID.firebaseapp.com
  • 기본 실시간 데이터베이스 URL — projectID.firebaseio.com
  • 기본 Cloud Storage 버킷 이름 — projectID.appspot.com

위와 같은 모든 리소스에서 기본이 아닌 인스턴스를 만들 수 있습니다. 기본이 아닌 인스턴스의 공개적으로 표시되는 이름은 완전히 맞춤설정할 수 있습니다. Firebase 호스팅 사이트에 커스텀 도메인을 연결하고, 실시간 데이터베이스를 샤딩하고, 여러 Cloud Storage 버킷을 만들 수 있습니다(플랫폼의 시작하기 페이지 참조).

Firebase CLI 및 프로젝트 ID

사용 사례에 따라 동일한 로컬 앱 디렉터리에 Firebase 프로젝트를 여러 개 연결할 수 있습니다. 이러한 경우 Firebase CLI를 사용할 때 firebase 명령어에 --project 플래그를 전달하여 상호작용할 Firebase 프로젝트를 알려야 합니다.

다양한 Firebase 프로젝트의 프로젝트 ID를 기억할 필요가 없도록 프로젝트 별칭을 설정할 수도 있습니다.

API 호출 및 프로젝트 ID

대부분의 경우 API 호출 시 프로젝트의 고유 식별자를 포함해야 합니다. 많은 API가 프로젝트 ID를 허용하지만 Firebase, Google 또는 타사 서비스에 API 호출 시 프로젝트 번호를 사용하는 것이 좋습니다.

Google의 AIP 2510 표준에서 프로젝트 식별자, 특히 프로젝트 번호 사용에 대해 자세히 알아보세요.

프로젝트 ID 확인

  • Firebase Console: > 프로젝트 설정을 클릭합니다. 상단 창에 프로젝트 ID가 표시됩니다.

  • Firebase CLI: firebase projects:list를 실행합니다. 계정에 연결된 모든 Firebase 프로젝트와 함께 프로젝트 ID가 표시됩니다.

  • Firebase Management REST API: projects.list를 호출합니다. 응답 본문에서는 FirebaseProject 객체에 프로젝트 ID가 포함됩니다.

Firebase 구성 파일 및 객체

Firebase 프로젝트에 앱을 추가하면 Firebase Console에서 로컬 프로젝트에 직접 추가하는 Firebase 구성 파일(Android/iOS) 또는 구성 객체(웹)를 제공합니다.

  • iOS의 경우 GoogleService-Info.plist 구성 파일을 추가합니다.
  • Android의 경우 google-services.json 구성 파일을 추가합니다.
  • 웹의 경우 초기화 스크립트용 Firebase 구성 객체를 추가합니다.

언제든지 Firebase 구성 파일 또는 구성 객체를 가져올 수 있습니다.

Firebase 구성 파일 또는 구성 객체는 Firebase 프로젝트와 해당 리소스(데이터베이스, 스토리지 버킷 등)에 앱을 연결합니다. 이 구성에는 Firebase 서버 API와 통신하고 Firebase 프로젝트 및 Firebase 애플리케이션과 클라이언트 데이터를 연결하는 데 필요한 매개변수인 'Firebase 옵션'이 포함됩니다. 필요한 최소 Firebase 옵션 집합은 다음과 같습니다.

  • API 키: 비공개 사용자 데이터에 액세스할 필요가 없는 특정 API를 호출할 때 사용되는 간단한 암호화된 문자열(값 예시: AIzaSyDOCAbC123dEf456GhI789jKl012-MnO)

  • 프로젝트 ID: 모든 Firebase 및 GCP에서 프로젝트의 사용자 정의 고유 식별자(값 예시: myapp-project-123). 이 식별자는 일부 Firebase 리소스의 URL 또는 이름에 표시될 수 있지만 일반적으로 프로젝트를 참조하기 위한 편의성 별칭으로 취급됩니다.

  • 애플리케이션 ID('AppID'): 모든 Firebase에서 Firebase 앱의 고유 식별자로, 형식은 플랫폼에 따라 다릅니다.

    • Firebase Android 앱: mobilesdk_app_id(값 예시: 1:1234567890:android:321abc456def7890)
      Android 패키지 이름이 아닙니다.
    • Firebase iOS 앱: GOOGLE_APP_ID(값 예시: 1:1234567890:ios:321abc456def7890)
      Apple 번들 ID가 아닙니다.
    • Firebase 웹 앱: appId(값 예시: 1:65211879909:web:3ae38ef1cdcb2e01fe5f0c)

Firebase Console의 설정 워크플로에 입력한 플랫폼별 ID 및 Firebase 프로젝트에 고유한 값(예: API 키, 실시간 데이터베이스 URL, 스토리지 버킷 이름 등)과 같은 Firebase 구성 파일 콘텐츠가 공개된 것으로 간주됩니다. 이러한 전제 하에 보안 규칙을 사용하여 실시간 데이터베이스, Cloud Firestore, Cloud Storage의 데이터와 파일을 보호합니다.

대부분의 경우 사용자는 자체 Firebase 프로젝트를 만들고 앱에서 자체 백엔드를 가리켜야 하므로 오픈소스 프로젝트에서는 소스 제어에 Firebase 구성 파일 또는 구성 객체를 포함하지 않는 것이 좋습니다.

Firebase 프로젝트 관리

일반적인 프로젝트 수준 권장사항을 검토하여 Firebase 프로젝트를 관리하는 방법과 관련된 고려사항을 알아보세요.

프로젝트 관리 도구

Firebase Console

Firebase Console은 Firebase 제품, 앱, 프로젝트 수준 설정을 관리하는 가장 유용한 환경을 제공합니다.

Firebase Console - 프로젝트 개요 화면

Console의 왼쪽 패널에는 Firebase 제품이 최상위 카테고리별로 나열됩니다. 왼쪽 패널 위에서 를 클릭하여 프로젝트 설정에 액세스합니다. 설정에는 통합, 액세스 권한, 결제가 포함되어 있습니다.

Console 중앙에는 다양한 앱 유형을 추가할 수 있도록 설정 워크플로를 시작하는 버튼이 표시됩니다. Firebase 사용을 시작하면 Console의 주 영역이 사용하는 제품의 통계를 표시하는 대시보드로 바뀝니다.

Firebase CLI(명령줄 도구)

Firebase는 Firebase 호스팅 및 Firebase용 Cloud Functions와 같은 특정 Firebase 제품을 구성 및 관리하는 Firebase CLI도 제공합니다.

npm을 사용하여 CLI를 설치하면 global firebase 명령어를 사용할 수 있습니다. CLI를 사용하여 Firebase 호스팅 콘텐츠의 새 버전 또는 함수 업데이트를 배포합니다. CLI를 사용하여 로컬 앱 디렉터리를 Firebase 프로젝트에 연결할 수도 있습니다.

Firebase Management REST API

Firebase Management REST API를 사용하면 Firebase 프로젝트를 프로그래매틱 방식으로 관리할 수 있습니다. 예를 들어 프로그래매틱 방식으로 프로젝트에 Android 앱 또는 iOS 앱을 추가하거나 프로젝트 내에 있는 앱(Android/iOS)을 나열할 수도 있습니다.

일반 권장사항

프로젝트에 앱 추가

한 프로젝트에 속한 모든 앱은 최종 사용자 관점에서 동일한 애플리케이션의 플랫폼 변형 버전이어야 합니다. 동일한 앱 또는 게임의 Android, iOS, 웹 버전을 같은 Firebase 프로젝트에 추가하는 것이 좋습니다. 한 프로젝트의 모든 앱은 일반적으로 동일한 Firebase 리소스(데이터베이스, 스토리지 버킷 등)를 공유합니다.

iOS 번들 ID 또는 Android 앱 ID가 서로 다르게 정의된 빌드 변형이 여러 개 있으면 각 변형을 별도의 Firebase 프로젝트에 추가할 수 있습니다. 그러나 여러 변형이 같은 Firebase 리소스를 공유하는 경우 동일한 Firebase 프로젝트에 추가합니다.

한 프로젝트에 속하는 앱의 개수에는 제한이 없지만 앱을 추가하면 기본 OAuth 2.0 클라이언트 ID를 한 개 이상 만들 수 있습니다. 프로젝트 하나에 만들 수 있는 클라이언트 ID의 한도는 약 30개입니다.

멀티테넌시

논리적으로 독립된 서로 다른 여러 앱 또는 웹사이트를 프로젝트 하나에 연결하는 '다중 테넌트 지원'은 권장되지 않습니다. 멀티테넌시로 인해 의도되지 않은 애널리틱스 집계, 인증 공유, 지나치게 복잡한 데이터베이스 구조, 까다로운 보안 규칙 등 심각한 구성과 데이터 개인정보 보호 관련 문제가 발생할 수 있습니다.

일반적으로 여러 앱에서 동일한 데이터와 구성을 공유하지 않으면 각 앱을 서로 다른 Firebase 프로젝트에 추가하는 것이 좋습니다.

예를 들어 화이트 라벨 애플리케이션을 개발하는 경우 독립적으로 라벨이 지정된 각 앱마다 자체 Firebase 프로젝트가 있어야 합니다. 이렇게 해야 앱들이 데이터를 서로 공유하지 못하므로 개인정보가 보호됩니다.

Firebase 프로젝트, 앱, 사이트에 다음과 같은 일반적인 한도가 적용됩니다.

  • 계정당 프로젝트 수

    • 무료 등급 Spark 요금제 — 프로젝트 할당량은 소수의 프로젝트(일반적으로 5~10개)로 제한됩니다.
    • 유료 요금제 — Cloud 결제 계정이 양호한 상태인 경우 결제 계정당 프로젝트 할당량이 크게 증가합니다.

    대부분의 개발자에게 프로젝트 할당량 한도는 문제가 되지 않지만 필요한 경우 프로젝트 할당량 증가를 요청할 수 있습니다.

    프로젝트를 완전히 삭제하는 데는 30일이 걸리며 완전히 삭제되기 전에는 할당량에 포함된다는 점에 유의하세요.

  • 프로젝트당 앱 수

    한 프로젝트에 속하는 앱의 개수에는 제한이 없지만, 앱을 추가하면 내부적으로 하나 이상의 OAuth 2.0 클라이언트 ID가 만들어질 수 있습니다. 프로젝트 하나에 만들 수 있는 클라이언트 ID의 한도는 약 30개입니다.

  • 프로젝트당 호스팅 사이트 수

    Firebase 호스팅 멀티 사이트 기능은 사이트를 프로젝트당 최대 36개까지 지원합니다.

앱 출시