Cloud Datastore 에뮬레이터는 프로덕션 Datastore 환경의 로컬 에뮬레이션을 제공합니다. Cloud Datastore 에뮬레이터는 dev_appserver의 기본 Datastore 구현으로 점진적으로 롤아웃되고 있습니다.
Datastore 에뮬레이터로 마이그레이션할 때의 이점
Datastore 에뮬레이터는 DB 및 NDB와 같은 App Engine 표준 환경 클라이언트 라이브러리와 Cloud Datastore 클라이언트 라이브러리 사이에서 공유될 수 있습니다.
또한 Datastore 에뮬레이터를 사용하여 App Engine 표준 환경과 App Engine 가변형 환경에서 실행되는 서비스 사이에서 로컬 데이터를 공유할 수 있습니다.
시작하기 전에
자바 런타임(JRE) 버전 11 이상을 다운로드하여 설치합니다.
google-cloud-sdk/bin
디렉터리에서 dev_appserver를 실행합니다.
에뮬레이션 환경 선택
Cloud Datastore 에뮬레이터는 일부 dev_appserver 사용자의 기본 에뮬레이터입니다. Cloud Datastore 에뮬레이터를 사용하면 dev_appserver에 다음이 표시됩니다.
... Using Cloud Datastore Emulator.
dev_appserver.py
를 시작할 때 --support_datastore_emulator
플래그를 true로 설정하여 dev_appserver가 Cloud Datastore 에뮬레이터를 강제로 사용하도록 할 수 있습니다.
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --support_datastore_emulator=[true|false] app.yaml
DEVAPPSERVER_ROOT를 devapp_server.py
의 보관처리된 버전의 압축을 푸는 폴더 경로로 바꿉니다. dev_appserver.py
의 보관처리된 버전 다운로드 및 사용에 대한 자세한 내용은 로컬 개발 서버 사용을 참조하세요.
Datastore 에뮬레이터에서 dev_appserver 사용
dev_appserver는 환경 변수 DATASTORE_EMULATOR_HOST
에 따라 에뮬레이터 시작 여부를 결정합니다.
이 환경 변수가 있으면 dev_appserver는
DATASTORE_EMULATOR_HOST
에서 실행되는 기존 에뮬레이터 프로세스와 통신합니다.이 환경 변수가 없으면 dev_appserver는 새 에뮬레이터 프로세스를 시작합니다. dev_appserver.py를 시작할 때
--datastore_emulator_port
를 설정하면 Datastore 에뮬레이터의 포트를 지정할 수 있습니다.
동작 변경사항
로컬 데이터 형식 변환
현재 로컬 Datastore 에뮬레이터는 sqlite3에 데이터를 저장하고 Cloud Datastore 에뮬레이터는 데이터를 자바 객체로 저장합니다.
기존 sqlite3 데이터로 dev_appserver가 시작되면 해당 데이터는 자바 객체로 변환됩니다. 원래 데이터는 {original-data-filename}.sqlitestub이라는 파일 이름으로 백업됩니다.
로컬 데이터 파일 위치
--datastore_path
플래그로 로컬 데이터 파일을 지정할 수 있습니다.
dev_appserver가 에뮬레이터를 시작하면 위치는 변경되지 않습니다.
dev_appserver가 기존 Cloud Datastore 에뮬레이터를 사용하는 경우 이 플래그는 에뮬레이터 설정에 따라 무시됩니다.
로컬 index.yaml
빈 index.yaml은 유효하지 않다고 간주됩니다. index.yaml의 구문은 YAML 형식입니다. index.yaml 파일에는 색인이라는 단일 목록 요소가 있습니다.
dev_appserver가 에뮬레이터를 시작하면 index.yaml은 애플리케이션 프로젝트 디렉터리에 있습니다.
dev_appserver가 기존 Cloud Datastore 에뮬레이터를 사용하면 index.yaml은 에뮬레이터에서 관리됩니다.
기타 로컬 Datastore 서버 기능은 변경되지 않습니다.
문제해결
에뮬레이터 출력 가져오기
기본적으로 dev_appserver는 Datastore 에뮬레이터를 자동 모드로 실행합니다. Datastore 에뮬레이터 출력을 확인하려면 --dev_appserver_log_level=debug
를 사용하여 dev_appserver를 실행합니다.
gRPC 가져오기 실패
dev_appserver는 gRPC를 사용하여 Cloud Datastore 에뮬레이터와 통신하지만 gcloud CLI 패키지인 gRPC 패키지 버전은 일부 운영체제와 호환되지 않으므로 가져오기가 실패합니다.
가져오기 실패를 수정하려면 gcloud CLI 219.0.0 이상에서 pip
를 사용하여 gRPC를 별도로 설치하면 됩니다.
pip install grpcio