확장 프로그램 에뮬레이터를 사용하여 확장 프로그램 평가

앱에서 확장 프로그램 에뮬레이터를 사용하기 전에 전반적인 Firebase 로컬 에뮬레이터 도구 모음 워크플로를 이해하고, 로컬 에뮬레이터 도구 모음을 설치 및 구성하고, CLI 명령어를 확인해야 합니다.

또한 이 가이드에서는 Firebase ExtensionsFirebase 앱에서 확장 프로그램을 사용하는 방법을 알고 있다고 가정합니다.

확장 프로그램 에뮬레이터로 무엇을 할 수 있나요?

확장 프로그램 에뮬레이터를 사용하면 안전한 로컬 환경에서 확장 프로그램을 설치 및 관리할 수 있으며 결제 비용을 최소화하면서 기능을 보다 잘 파악할 수 있습니다. 에뮬레이터는 Cloud Firestore, 실시간 데이터베이스, Firebase용 Cloud Storage, 인증, Pub/Sub용 에뮬레이터를 사용하여 백그라운드 이벤트에 의해 트리거되는 함수 및 Cloud Functions v2에 구현된 Eventarc 트리거 함수를 포함한 확장 프로그램의 함수를 로컬에서 실행합니다.

Firebase 프로젝트 선택

Firebase 로컬 에뮬레이터 도구 모음은 단일 Firebase 프로젝트의 제품을 에뮬레이션합니다.

에뮬레이터를 시작하기 전에 사용할 프로젝트를 선택하려면 CLI로 작업 디렉터리에서 firebase use를 실행합니다. 또는 --project 플래그를 각 에뮬레이터 명령어에 전달합니다.

로컬 에뮬레이터 도구 모음은 실제 Firebase 프로젝트 및 데모 프로젝트의 에뮬레이션을 지원합니다.

프로젝트 유형 특징 에뮬레이터와 함께 사용
실제

실제 Firebase 프로젝트는 주로 Firebase Console을 통해 만들고 구성한 프로젝트입니다.

실제 프로젝트에는 데이터베이스 인스턴스, 스토리지 버킷, 함수 또는 해당 Firebase 프로젝트에 설정한 기타 리소스와 같은 라이브 리소스가 있습니다.

실제 Firebase 프로젝트로 작업할 때는 지원되는 제품 일부 또는 전부를 에뮬레이션할 수 있습니다.

에뮬레이션하지 않는 제품의 경우 앱과 코드가 데이터베이스 인스턴스, 스토리지 버킷, 함수 등 라이브 리소스와 상호작용합니다.

데모

데모 Firebase 프로젝트에는 실제 Firebase 구성이 없으며 라이브 리소스도 없습니다. 이러한 프로젝트는 일반적으로 Codelab 또는 기타 튜토리얼을 통해 액세스합니다.

데모 프로젝트의 프로젝트 ID에는 demo- 프리픽스가 있습니다.

데모 Firebase 프로젝트로 작업할 때는 앱과 코드가 에뮬레이터와 상호작용합니다. 앱이 에뮬레이터에서 실행 중이지 않은 리소스와 상호작용하려고 하면 코드가 실패합니다.

가능한 한 데모 프로젝트를 사용하는 것이 좋습니다. 장점은 다음과 같습니다.

  • 손쉬운 설정: Firebase 프로젝트를 만들지 않고도 에뮬레이터를 실행할 수 있습니다.
  • 강력한 안전성: 코드에서 실수로 에뮬레이션되지 않은(프로덕션) 리소스를 호출하더라도 데이터 변경, 사용, 청구 등이 발생할 가능성이 없습니다.
  • 오프라인 지원 향상: SDK 구성을 다운로드하기 위해 인터넷에 액세스할 필요가 없습니다.

확장 프로그램 설치 및 평가

확장 프로그램이 요구사항을 충족하는지 평가하기 위해 확장 프로그램 에뮬레이터를 사용하는 과정은 간단합니다.

다음 워크플로에서는 모든 확장 프로그램을 다루고 있지만 이메일 트리거(firestore-send-email) 확장 프로그램에 관심이 있다고 가정해 보겠습니다. 로컬 에뮬레이터로 실행하면 이메일 트리거에서 Cloud Firestore와 Cloud Functions 에뮬레이터를 자동으로 사용합니다.

로컬에서 확장 프로그램을 평가하려면 다음 단계를 따르세요.

  1. 로컬 확장 프로그램 매니페스트에 확장 프로그램을 추가합니다. 확장 프로그램 매니페스트는 확장 프로그램 인스턴스와 관련 구성으로 이루어진 목록입니다.

    firebase ext:install --local firebase/firestore-send-email

    위의 명령어를 실행하면 firebase/firestore-send-email 확장 프로그램의 최신 버전을 구성하고 구성을 매니페스트에 저장하라는 메시지가 표시되지만 이 구성이 프로젝트에 배포되지는 않습니다. 자세한 내용은 매니페스트로 확장 프로그램 구성 관리를 참조하세요.

  2. 평소와 같이 로컬 에뮬레이터 도구 모음을 시작합니다.

    firebase emulators:start

이제 매니페스트에 나열된 firestore-send-email 확장 프로그램 인스턴스를 사용하여 로컬 에뮬레이터 도구 모음에서 확장 프로그램의 소스 코드를 ~/.cache/firebase/extensions에 다운로드합니다. 소스 다운로드가 완료되면 로컬 에뮬레이터 도구 모음이 시작되고 확장 프로그램의 백그라운드 트리거 함수를 트리거하고, 앱을 로컬 에뮬레이터 도구 모음에 연결하여 앱과의 통합을 테스트할 수 있습니다.

에뮬레이터 도구 모음 UI를 사용하여 이메일 문서 컬렉션에 데이터를 추가하고 이메일 트리거 확장 프로그램에 필요한 기타 백엔드 리소스를 설정할 수 있습니다.

또는 지속적 통합 워크플로와 같은 비대화형 테스트 환경에서는 필요한 Cloud Firestore 데이터 채우기, 함수 트리거와 같은 단계를 포함하는 확장 프로그램의 기능을 평가하는 테스트 스크립트를 작성할 수 있습니다. 그런 다음 로컬 에뮬레이터 도구 모음을 호출하여 테스트 스크립트를 실행합니다.

firebase emulators:exec my-test.sh

확장 프로그램 에뮬레이터를 사용한 테스트와 프로덕션 환경의 차이점

확장 프로그램 에뮬레이터를 사용하면 프로덕션 환경과 거의 일치하는 방식으로 확장 프로그램을 테스트할 수 있습니다. 그러나 프로덕션 동작과는 차이가 있습니다.

Cloud IAM

Firebase 에뮬레이터 도구 모음은 실행을 위해 IAM 관련 동작을 복제하거나 준수하려는 시도를 하지 않습니다. 에뮬레이터는 제공된 Firebase 보안 규칙을 준수하지만 일반적으로 IAM을 사용하게 되는 상황(예: 서비스 계정과 따라서 권한을 호출하는 Cloud Functions를 설정)에서는 에뮬레이터를 구성할 수 없으며 로컬 스크립트를 직접 실행하는 것과 유사한 방식으로 개발 머신에서 글로벌 가용 계정을 사용하게 됩니다.

트리거 유형 제한

현재 Firebase 로컬 에뮬레이터 도구 모음은 Cloud Firestore, 실시간 데이터베이스, Firebase용 Cloud Storage, 인증, Pub/Sub에서 HTTP 요청에 의해 트리거되는 함수, 확장 프로그램용 Eventarc 커스텀 이벤트 트리거와 백그라운드 이벤트에 의해 트리거되는 함수만 지원합니다. 다른 유형의 트리거 함수를 사용하는 확장 프로그램을 평가하려면 테스트 Firebase 프로젝트에 확장 프로그램을 설치해야 합니다.

다음 단계