Firebase/Firebase 프로젝트 이해

Firebase 프로젝트 이해

4EV.ZONE 2022. 6. 6. 09:48

이 페이지에서는 Firebase 프로젝트에 대한 몇 가지 중요 개념을 간략하게 설명한다. 링크가 제공된 경우 해당 링크로 이동하여 기능, 서비스, 도구, 권장사항에 대해 자세히 알아본다.

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

Firebase 프로젝트는 Firebase의 최상위 항목이다. 프로젝트에서 Apple, Android, 웹 앱을 등록할 수 있다. Firebase에 앱을 등록한 후 애널리틱스, Cloud Firestore, Performance Monitoring, 원격 구성 등 여러 가지 Firebase 제품에 Firebase SDK를 추가할 수 있다.

 

이 과정에 대한 자세한 내용은 플랫폼별 시작 가이드(iOS+ | Android | 웹 | Unity | C++ | Flutter)를 참조하라.

Firebase 프로젝트의 계층 구조 이해하기

이 다이어그램은 Firebase 프로젝트의 기본 계층 구조를 보여준다. 키 관계는 다음과 같다.

  • Firebase 프로젝트는 모든 앱 및 프로젝트에 프로비저닝(프로비저닝; (네트워크·통신 분야에서) 이용자의 요구에 따라 신속한 서비스를 제공하는 것; 또는, 그런 구조.)된 리소스와 서비스를 위한 컨테이너와 같다.
  • Firebase 프로젝트에는 하나 이상의 Firebase 앱을 등록할 수 있다(예: 앱의 iOS 및 Android 버전 또는 앱의 무료 버전과 유료 버전 모두).
  • 동일한 Firebase 프로젝트에 등록된 모든 Firebase 앱은 프로젝트에 프로비저닝된 모든 동일한 리소스와 서비스를 공유하고 여기에 액세스할 수 있다. 예를 들면 다음과 같다.
    • 동일한 Firebase 프로젝트에 등록된 모든 Firebase 앱은 Firebase 호스팅, 인증, 실시간 데이터베이스, Cloud Firestore, Cloud Storage, Cloud Functions와 같은 동일한 백엔드를 공유한다.
    • 동일한 Firebase 프로젝트에 등록된 모든 Firebase 앱은 동일한 Google 애널리틱스 속성과 연결되며, 여기서 각 Firebase 앱은 해당 속성에서 별도의 데이터 스트림이다.

Firebase 프로젝트와 Google Cloud 간의 관계

새 Firebase 프로젝트를 만들면 내부적으로 Google Cloud 프로젝트가 생성된다. Google Cloud 프로젝트부터 만들고 나중에 Firebase를 프로젝트에 추가할 수도 있다. Google Cloud 프로젝트는 데이터, 코드, 구성, 서비스의 가상 컨테이너라고 볼 수 있다.

더보기

핵심사항: Firebase 프로젝트는 실제로는 사용 설정된 Firebase 관련 구성과 서비스가 추가적으로 포함된 Google Cloud 프로젝트이다.

Firebase 프로젝트도 Google Cloud 프로젝트이므로 다음 내용이 적용된다.

  • Firebase Console, Google Cloud Console 및 Google API Console에서 프로젝트와 상호작용할 수 있다.
  • 프로젝트에서 Firebase와 Google Cloud의 제품 및 API를 모두 사용할 수 있다.
  • 프로젝트의 결제 및 권한이 Firebase와 Google Cloud에서 공유된다.
  • 프로젝트의 고유 식별자(예: 프로젝트 번호 및 프로젝트 ID)는 Firebase와 Google Cloud에서 공유된다.
  • 프로젝트를 삭제하면 Firebase와 Google Cloud에서도 삭제된다.

Firebase 프로젝트 설정 및 앱 등록

Firebase Console에서 Firebase 프로젝트를 설정하고 앱을 등록할 수 있다(고급 사용 사례에서는 Firebase Management REST API 또는 Firebase CLI 사용). 프로젝트를 설정하고 앱을 등록할 때 조직과 관련하여 몇 가지 결정을 내리고 Firebase 관련 구성 정보를 로컬 프로젝트에 추가해야 한다.

 

프로덕션 앱의 경우 명확한 개발 워크플로를 설정해야 하며 대개 여러 환경을 사용한다. Firebase 프로젝트 설정 및 개발 워크플로 생성을 위한 앱 등록에 대한 일반적인 권장사항 및 일반 보안 가이드라인을 포함하여 개발자 워크플로 문서를 검토하라.

Firebase 프로젝트와 상호작용

제품 SDK 외에도 여러 가지 도구와 인터페이스를 사용하여 Firebase 프로젝트와 직접 상호작용할 수 있다.

Firebase Console

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

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

 

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

 

Firebase 프로젝트도 Google Cloud 프로젝트이므로 다양한 작업 또는 제품에 Firebase Console 대신 Google Cloud Console을 사용해야 하는 경우가 있다.

Firebase CLI(명령줄 도구)

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

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

Firebase Management REST API

Firebase Management REST API를 사용하면 Firebase 프로젝트를 프로그래매틱 방식으로 관리할 수 있다. 예를 들어 프로그래매틱 방식으로 프로젝트에 앱을 등록하거나 이미 등록된 앱(iOS+ | Android | 웹)을 나열할 수 있다.

Firebase 프로젝트 식별자

Firebase 프로젝트는 프로젝트 이름, 프로젝트 번호, 프로젝트 ID 비롯한 다양한 식별자를 사용하여 Firebase 백엔드와 다양한 개발자 인터페이스에서 식별할 수 있다.

더보기

핵심사항: 프로젝트 번호와 프로젝트 ID는 모든 Firebase 및 Google Cloud에서 프로젝트의 실제 고유 식별자이다.

프로젝트 이름

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

Firebase Console의 settings 프로젝트 설정에서 언제든지 프로젝트 이름을 수정할 수 있다. 상단 창에 프로젝트 이름이 표시된다.

프로젝트 번호

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

프로젝트 번호는 수정할 수 없다. 프로젝트를 삭제하면 프로젝트 번호도 삭제되며 다른 어떠한 프로젝트에서도 다시 사용되지 않는다.

프로젝트 번호 찾기

다음 옵션 중 하나를 사용하여 Firebase 프로젝트의 프로젝트 번호를 찾는다.

  • Firebase Console 사용: settings 프로젝트 설정을 클릭한다. 상단 창에 프로젝트 번호가 표시된다.
  • Firebase CLI 사용: firebase projects:list를 실행한다. 프로젝트 번호가 계정과 연결된 모든 Firebase 프로젝트와 함께 표시된다.
  • Firebase Management REST API 사용: projects.list를 호출한다. 응답 본문에서는 FirebaseProject 객체에 프로젝트 번호가 포함된다

API 호출 및 프로젝트 번호

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

 

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

프로젝트 ID

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

더보기

Firebase에서 Firebase 프로젝트용 리소스를 프로비저닝한 후에는 프로젝트 ID를 변경할 수 없다. 프로젝트를 삭제하면 프로젝트 ID도 삭제되며 다른 어떠한 프로젝트에서도 다시 사용되지 않는다.

프로젝트 ID 찾기

다음 옵션 중 하나를 사용하여 Firebase 프로젝트의 프로젝트 ID를 찾습니다.

  • Firebase Console 사용: settings 프로젝트 설정을 클릭한다. 상단 창에 프로젝트 ID가 표시된다.
  • Firebase CLI 사용: firebase projects:list를 실행한다. 계정에 연결된 모든 Firebase 프로젝트와 프로젝트 ID가 표시된다.
  • Firebase Management REST API 사용: projects.list를 호출한다. 응답 본문에서는 FirebaseProject 객체에 프로젝트 ID가 포함된다.

Firebase 리소스 및 프로젝트 ID

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

  • 기본 호스팅 하위 도메인 — PROJECT_ID.web.app 및 PROJECT_ID.firebaseapp.com
  • 기본 실시간 데이터베이스 URL — PROJECT_ID-default-rtdb.firebaseio.com 또는 PROJECT_ID-default-rtdb.REGION_CODE.firebasedatabase.app
  • 기본 Cloud Storage 버킷 이름 — PROJECT_ID.appspot.com

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

더보기

Firebase에서 Firebase 프로젝트용 리소스를 프로비저닝한 후에는 프로젝트 ID를 변경할 수 없습니다. Firebase 리소스에 특정 식별자를 사용하려면 프로젝트를 처음 만들 때 프로젝트 ID를 수정해야 합니다.

Firebase CLI 및 프로젝트 ID

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

 

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

API 호출 및 프로젝트 ID

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

 

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

Firebase 구성 파일 및 객체

Firebase 프로젝트에 앱을 등록하면 Firebase Console에서 로컬 앱 디렉터리에 직접 추가하는 Firebase 구성 파일(Apple/Android 앱) 또는 구성 객체(웹 앱)를 제공한다.

  • Apple의 경우 GoogleService-Info.plist 구성 파일을 추가합니다.
  • Android의 경우 google-services.json 구성 파일을 추가합니다.
  • 웹 앱의 경우 Firebase 구성 객체를 추가합니다.

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

더보기

참고: Flutter 앱의 경우 firebase_options.dart라는 크로스 플랫폼 Firebase 구성 파일을 사용할 수 있다.
Flutter 앱에 이 파일이 사용될 경우 Flutter 프로젝트 디렉터리에서 flutterfire configure를 실행하여 최신 상태로 유지할 수 있다.

 

flutterfire configure --out=my_options.dart를 실행하여 Firebase에 등록된 Flutter 앱에 대해 Firebase에 있는 현재 구성 값을 가져올 수 있다.

Firebase 구성 파일 또는 객체는 앱을 특정 Firebase 프로젝트 및 리소스(데이터베이스, 스토리지 버킷 등)에 연결한다. 이 구성에는 Firebase Server API와 통신하고 Firebase 프로젝트 및 Firebase 앱과 클라이언트 데이터를 연결하기 위해 Firebase 및 Google 서비스에 필요한 매개변수인 'Firebase 옵션'이 포함된다. 필요한 최소 'Firebase 옵션'은 다음과 같다.

  • API 키: 비공개 사용자 데이터에 액세스할 필요가 없는 특정 API를 호출할 때 사용되는 간단한 암호화된 문자열(예시 값: AIzaSyDOCAbC123dEf456GhI789jKl012-MnO)
  • 프로젝트 ID: 모든 Firebase 및 Google Cloud에서 프로젝트의 사용자 정의 고유 식별자이다. 이 식별자는 일부 Firebase 리소스의 URL 또는 이름에 표시될 수 있지만 일반적으로 프로젝트를 참조하기 위한 편의성 별칭으로 취급된다. (예시 값: myapp-project-123)
  • 애플리케이션 ID('AppID'): 모든 Firebase에서 Firebase 앱의 고유 식별자로, 형식은 플랫폼에 따라 다르다.
    • Firebase Apple 앱: GOOGLE_APP_ID(예시 값: 1:1234567890:ios:321abc456def7890)
      Apple 번들 ID가 아니다.
    • Firebase Android 앱: mobilesdk_app_id(예시 값: 1:1234567890:android:321abc456def7890)
      Android 패키지 이름 또는 Android 애플리케이션 ID가 아니다.
    • Firebase 웹 앱: appId(예시 값: 1:65211879909:web:3ae38ef1cdcb2e01fe5f0c)
더보기

주의: 앱의 Firebase 구성 파일 또는 객체를 직접 수정하지 않는 것이 좋다. 이러한 필수 'Firebase 옵션'에 대해 유효하지 않거나 누락된 값으로 앱을 초기화하면 최종 사용자에게 심각한 문제가 발생할 수 있다.

앱의 플랫폼별 ID(예: Apple 번들 ID 또는 Android 패키지 이름) 및 Firebase 프로젝트에 고유한 값(예: API 키, 프로젝트 ID, 실시간 데이터베이스 URL, Cloud Storage 버킷 이름)과 같은 Firebase 구성 파일 또는 객체의 콘텐츠가 공개된 것으로 간주됩니다. 이러한 전제 하에 Firebase 보안 규칙을 사용하여 실시간 데이터베이스, Cloud Firestore, Cloud Storage의 데이터와 파일을 보호합니다.

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

Firebase 프로젝트, 앱, 사이트의 일반적인 제한사항

중요: Firebase 프로젝트 설정에 대한 일반적인 권장사항을 읽어보자. 이 가이드에서는 Firebase 프로젝트 계층 구조, 앱 변형 버전 등록 방법, 멀티테넌시(다중차용, 한 대의 서버에 작동하는 소프트웨어를 여러 테넌트, tenant가 공유하는 서비스)와 관련된 질문에 대해 답한다.

 

Firebase 프로젝트, 앱, 사이트의 일반적인 제한사항은 다음과 같다.

계정당 프로젝트 수

  • Spark 요금제 — 프로젝트 생성 할당량은 소수의 프로젝트(일반적으로 5~10개)로 제한된다.
    Blaze 요금제 — 연결된 Cloud Billing 계정이 양호한 상태인 경우 계정당 프로젝트 생성 할당량은 크게 상향 조정된다. 

대부분의 개발자에게 프로젝트 생성 할당량 한도는 문제가 되지 않지만 필요한 경우 프로젝트 할당량 상향 조정을 요청할 수 있다.

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

프로젝트당 앱 수

Firebase에서는 Firebase 프로젝트 내의 총 Firebase 앱 수를 30개로 제한한다.

단일 Firebase 프로젝트 내의 모든 Firebase 앱은 최종 사용자의 관점에서 동일한 애플리케이션의 플랫폼 변형 버전이어야 한다. 권장사항 문서에서 멀티테넌시에 대해 자세히 알아보라.

더보기

멀티테넌시 (다중차용, 한 대의 서버에 작동하는 소프트웨어를 여러 테넌트tenant가 공유하는 서비스)

FAQ에서 프로젝트당 앱 한도에 대해 자세히 알아보라.

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

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

앱 출시

  • Google Cloud Console에서 프로젝트의 예산 알림을 설정한다.
  • Firebase Console에서 사용량 및 결제 대시보드를 모니터링하여 여러 Firebase 서비스에서 프로젝트 사용량을 전체적으로 파악한다.
  • Firebase 출시 체크리스트를 검토한다.