확장 에뮬레이터를 사용하여 확장 평가

앱에서 Extensions 에뮬레이터를 사용하기 전에 전체 Firebase 로컬 에뮬레이터 제품군 워크플로를 이해하고 로컬 에뮬레이터 제품군설치 및 구성 하고 해당 CLI 명령 을 검토해야 합니다.

또한 이 가이드에서는 귀하가 Firebase ExtensionsFirebase 앱에서 이를 사용하는 방법에 익숙하다고 가정합니다.

Extensions 에뮬레이터로 무엇을 할 수 있습니까?

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

Firebase 프로젝트 선택

Firebase 로컬 에뮬레이터 제품군은 단일 Firebase 프로젝트에 대한 제품을 에뮬레이트합니다.

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

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

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

실제 Firebase 프로젝트는 사용자가 만들고 구성한 프로젝트입니다(대부분 Firebase 콘솔을 통해).

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

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

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

데모

데모 Firebase 프로젝트에는 실제 Firebase 구성과 라이브 리소스가 없습니다. 이러한 프로젝트는 일반적으로 Codelab 또는 기타 자습서를 통해 액세스합니다.

데모 프로젝트의 프로젝트 ID에는 demo- 접두사가 있습니다.

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

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

  • Firebase 프로젝트를 생성하지 않고도 에뮬레이터를 실행할 수 있으므로 설정이 간편합니다.
  • 코드가 실수로 에뮬레이션되지 않은(프로덕션) 리소스를 호출하는 경우 데이터 변경, 사용 및 청구 가능성이 없으므로 더 강력한 안전성
  • SDK 구성을 다운로드하기 위해 인터넷에 액세스할 필요가 없기 때문에 더 나은 오프라인 지원.

확장 설치 및 평가

Extensions 에뮬레이터를 사용하여 확장이 요구 사항을 충족하는지 평가하는 것은 간단합니다.

다음 워크플로에서는 모든 확장을 다루지만 Trigger Email( firestore-send-email ) 확장 에 관심이 있다고 가정해 보겠습니다. 로컬 에뮬레이터로 실행하면 Trigger 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 확장 프로그램 인스턴스를 사용하여 Local Emulator Suite는 해당 확장의 소스 코드를 ~/.cache/firebase/extensions 로 다운로드합니다. 소스가 다운로드되면 로컬 에뮬레이터 제품군이 시작되고 확장의 백그라운드 트리거 기능을 트리거하고 앱을 로컬 에뮬레이터 제품군에 연결하여 앱과의 통합을 테스트할 수 있습니다.

에뮬레이터 제품군 UI를 사용하여 이메일 문서 컬렉션에 데이터를 추가하고 Trigger Email 확장에 필요한 다른 백엔드 리소스를 설정할 수 있습니다.

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

firebase emulators:exec my-test.sh

Extensions 에뮬레이터를 사용한 테스트가 프로덕션과 다른 점

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

클라우드 IAM

Firebase 에뮬레이터 제품군은 실행을 위한 IAM 관련 동작을 복제하거나 존중하지 않습니다. 에뮬레이터는 제공된 Firebase 보안 규칙을 준수하지만 IAM이 일반적으로 사용되는 상황(예: Cloud Functions 호출 서비스 계정 및 권한 설정)에서는 에뮬레이터를 구성할 수 없으며 개발자 컴퓨터에서 전역적으로 사용 가능한 계정을 사용합니다. 로컬 스크립트를 직접 실행하는 것과 유사합니다.

트리거 유형 제한

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

다음은?