Firebase Data Connect는 엔드 투 엔드 프로토타입 제작은 물론 지속적 통합 및 지속적 배포(CI/CD) 흐름을 위한 로컬 에뮬레이터를 제공합니다.
- Data Connect 에뮬레이터는 로컬 통합 PGLite 데이터베이스 인스턴스와 상호작용하여 완전히 로컬 환경에서 쿼리 및 변형을 프로토타입으로 만들고 클라이언트 코드를 테스트할 수 있습니다.
- Data Connect 에뮬레이터는 비대화형 작업에도 사용할 수 있습니다. 자동 테스트를 실행할 수 있으며 CI/CD 워크플로와 함께 사용하기에 적합합니다. 이는 스키마가 안정적이고 클라이언트 측 코드를 프로토타입으로 만들고 테스트하려는 경우에 유용합니다.
이 가이드에서는 빠른 시작보다 에뮬레이터의 설치 및 사용을 더 자세히 다룹니다.
Data Connect 에뮬레이터 설치
Data Connect 에뮬레이터를 사용하기 위해 Local Emulator Suite를 설치하려면 다음이 필요합니다.
- Node.js 버전 18.0 이상
Firebase CLI 설치 및 프로젝트 디렉터리 설정
설치 가이드에 따라 Firebase CLI를 설치합니다. Data Connect 에뮬레이터는 버그 수정 및 새로운 기능과 함께 활발히 개발되고 있으므로 정기적으로 업데이트하세요.
아직 초기화하지 않았다면 메시지에 따라 사용할 제품을 지정하여 현재 작업 디렉터리를 Firebase 프로젝트로 초기화합니다.
firebase init
Local Emulator Suite 구성 설정 또는 수정
Firebase VS Code 확장 프로그램에서 Data Connect 에뮬레이터를 시작한 경우 필요한 경우 에뮬레이터가 설치되었습니다.
Firebase CLI를 사용하여 에뮬레이터를 Local Emulator Suite의 다른 선택된 구성요소와 함께 수동으로 설치할 수 있습니다. 이 명령어는 원하는 에뮬레이터를 선택하고 해당 에뮬레이터 바이너리 파일을 다운로드하며 기본값이 적절하지 않은 경우 에뮬레이터 포트를 설정할 수 있는 구성 마법사를 시작합니다.
firebase init emulators
에뮬레이터가 설치되면 Firebase CLI 버전을 업데이트할 때까지 업데이트 확인이 수행되지 않으며 자동 다운로드가 추가로 진행되지 않습니다.
Firebase 프로젝트 선택
설정 흐름에서 Firebase CLI는 Firebase 프로젝트를 선택하거나 만들도록 프롬프트를 표시합니다. Firebase 콘솔에서 Data Connect로 설정한 기존 프로젝트를 선택하면 선택한 구성이 제안됩니다.
에뮬레이터 설정
에뮬레이터 구성
firebase init
흐름을 실행하면 에뮬레이터 설정 옵션이 안내됩니다.
Local Emulator Suite의 다른 에뮬레이터와 마찬가지로 구성 매개변수는 로컬 프로젝트 파일에 저장됩니다.
firebase.json
파일에는 에뮬레이터 포트 할당이 포함되어 있습니다.emulators:ui
키는 Data Connect 에뮬레이터에는 적용되지 않습니다.
로컬 및 프로덕션 Data Connect 리소스 사용
프로덕션 리소스에 영향을 주지 않으려면 demo-
projectID를 설정하거나 클라이언트 코드가 에뮬레이터에 연결되도록 계측해야 합니다(후반 섹션 참고).
에뮬레이터 시작
CI/CD 워크플로와 같이 비대화형으로 에뮬레이터를 실행하는 경우 exec
옵션으로 시작하세요.
firebase emulators:exec ./path/to/test-script.sh
클라이언트 코드에 사전 정의된 쿼리와 변형을 통합하고 클라이언트 테스트를 위해 에뮬레이터를 사용하는 경우 대화형 작업을 위해 start
옵션을 사용할 수 있습니다. VS Code 확장 프로그램에서 에뮬레이터를 시작할 수도 있습니다.
firebase emulators:start
에뮬레이터와 통신하도록 클라이언트 코드 구현
Data Connect 에뮬레이터와 상호작용하도록 인앱 구성 또는 테스트 클래스를 다음과 같이 설정합니다.
자바스크립트
import { initializeApp } from "firebase/app"; import { connectorConfig } from "@name-of-package"; import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect'; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { //... }; const app = initializeApp(firebaseConfig); const dataConnect = getDataConnect(app, connectorConfig); connectDataConnectEmulator(dataConnect, "localhost", 9399); // Make calls from your app
Kotlin Android
val connector = MoviesConnector.instance // Connect to the emulator on "10.0.2.2:9399" connector.dataConnect.useEmulator() // (Alternatively) if you're running your emulator on non-default port: connector.dataConnect.useEmulator(port = 9999) // Make calls from your app
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig) // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: connector.useEmulator(port: 9999) // Make calls from your app
테스트 및 지속적 통합에 에뮬레이터 사용
컨테이너화된 Local Emulator Suite 이미지 실행
일반적인 CI 설정에서 컨테이너를 사용하여 Local Emulator Suite를 설치하고 구성하는 방법은 간단합니다.
다음과 같은 몇 가지 문제가 있습니다.
- 에뮬레이터 바이너리는
~/.cache/firebase/emulators/
에 설치되고 캐시됩니다. 이 경로를 CI 캐시 구성에 추가하여 반복 다운로드를 방지할 수 있습니다. - 저장소에
firebase.json
파일이 없는 경우emulators:start
또는emulators:exec
명령어에 명령줄 인수를 추가하여 시작할 에뮬레이터를 지정해야 합니다. 예를 들면--only dataconnect
입니다.
테스트 간 데이터베이스 삭제
실행 간에 테스트 환경을 재설정하려면 다음을 권장합니다.
- 다음을 처리하기 위한 전용 변형 작성:
- 설정에서 시작 데이터로 로컬 데이터베이스 인스턴스를 채웁니다.
- 테어다운에서 테스트 후 데이터베이스 인스턴스에서 수정된 데이터를 삭제합니다.
Data Connect 에뮬레이터와 프로덕션 환경의 차이점
Data Connect 에뮬레이터는 서버 측 제품의 여러 기능을 시뮬레이션합니다. 하지만 다음과 같은 예외가 있습니다.
- PGLite의 버전과 세부 구성은 프로덕션 Cloud SQL 인스턴스의 버전과 다를 수 있습니다.
- 에뮬레이터를 사용하여 Data Connect의 pgvector 및 Vertex API 통합으로 개발하는 경우 Cloud SQL의 Vertex 통합을 통하지 않고 Cloud Vertex API에 직접 호출이 이루어집니다. 하지만 프로덕션 API 호출은 계속 이루어지므로 실제 Firebase 프로젝트를 사용해야 하고
demo-
프로젝트는 사용할 수 없으며 Vertex API 비용이 발생합니다.