로컬 개발 서버 사용

Java용 Google Cloud CLI에는 사용자의 컴퓨터에서 애플리케이션 테스트가 가능하도록 로컬 개발 서버가 포함되어 있습니다. 로컬 개발 서버는 App Engine 자바 런타임 환경 및 Datastore를 포함한 모든 해당 서비스를 에뮬레이션합니다.

개발용 웹 서버 실행

앱의 시스템 속성 및 환경 변수 설정에 대한 자세한 내용은 요청 처리 방법을 참조하세요.

또한 명령 프롬프트에서 개발용 웹 서버를 실행할 수 있습니다. 실행할 명령어는 SDK의 google-cloud-sdk/bin/ 디렉터리에 있습니다.

Windows 명령어 구문:

google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]

Linux 또는 macOS 명령어 구문은 다음과 같습니다.

google-cloud-sdk/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]

이 명령어는 애플리케이션의 WAR 디렉터리 위치를 인수로 사용합니다.

개발 서버 중지

웹 서버를 중지하려면 Ctrl-C를 누릅니다.

애플리케이션 런타임 환경 검색

코드가 프로덕션 또는 로컬 개발 서버에서 실행 중인지 확인하려면 SystemProperty.environment.value() 메서드 값을 확인하면 됩니다. 예를 들면 다음과 같습니다.

if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
   // Production
 } else {
  // Local development server
  // which is: SystemProperty.Environment.Value.Development
}

로컬 Datastore 에뮬레이터 사용

개발용 웹 서버는 컴퓨터에서 로컬 파일 지원 Datastore를 사용하여 Datastore를 시뮬레이션합니다. Datastore 이름은 local_db.bin이며 애플리케이션의 WAR 디렉터리인 WEB-INF /appengine-generated/ 디렉터리에 생성됩니다. 이 Datastore는 애플리케이션과 함께 업로드되지 않습니다.

이 Datastore는 웹 서버 호출 간에 지속되므로, 다음에 웹 서버를 실행할 때에도 여기에 저장된 데이터를 계속 사용할 수 있습니다. Datastore의 내용을 지우려면 서버를 종료하고 이 파일을 삭제합니다.

데이터 스토어 색인 구성에 설명된 대로, 개발 서버는 테스트 중에 수행되는 쿼리로부터 확인된, 애플리케이션에 필요한 Datastore 색인에 대한 구성을 생성할 수 있습니다. 그러면 WAR의 WEB-INF/appengine-generated/ 디렉터리에 datastore-indexes-auto.xml이라는 파일이 생성됩니다. 자동 색인 구성을 사용 중지하려면 <datastore-indexes> 요소에 autoGenerate="false" 속성을 사용하여 WEB-INF/ 디렉터리에서 datastore-indexes.xml 파일을 만들거나 수정합니다.

개발 서버에서 Datastore 찾아보기

개발용 웹 서버를 사용하여 로컬 Datastore를 찾아보려면 다음 안내를 따르세요.

  1. 이전에 설명된 대로 개발 서버를 시작합니다.
  2. 개발용 콘솔로 이동합니다.
  3. 왼쪽 탐색 창에서 Datastore 뷰어를 클릭하여 로컬 Datastore 내용을 확인합니다.

Cloud Datastore 일관성 모델

기본적으로 로컬 Datastore는 전역 쿼리에서 즉시 표시되지 않는 Datastore 쓰기 비율이 10%로 설정되도록 구성됩니다.

이러한 일관성 수준을 조정하려면 애플리케이션에 표시하려는 eventual consistency 정도에 해당하는 값으로 datastore.default_high_rep_job_policy_unapplied_job_pct 시스템 속성을 설정합니다.

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

명령 프롬프트 java_dev_appserver.sh를 사용하여 이 속성을 설정할 경우 --jvm_flag=...를 사용하여 속성을 설정해야 합니다.

google_cloud_sdk/bin/java-dev_appserver.sh  --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

datastore.default_high_rep_job_policy_unapplied_job_pct의 유효 범위는 0~100입니다. 이 범위 외부의 숫자를 사용할 경우 오류가 수신됩니다.

자동 ID 할당 정책 지정

로컬 Datastore가 자동 항목 ID를 할당하는 방법을 구성할 수 있습니다(참고로 이 정보는 자바 11 런타임 및 자바 8 런타임에 적용됩니다).

다음 자동 ID 할당 정책은 개발 서버에서 지원됩니다.

sequential
ID가 연속된 일련의 정수로부터 할당됩니다.
scattered
ID가 대략적으로 균일하게 분포된 일련의 반복되지 않는 정수로부터 할당됩니다.

로컬 Datastore의 기본 정책은 scattered입니다.

자동 ID 정책을 지정하려면 datastore.auto_id_allocation_policy 시스템 속성을 sequential 또는 scattered로 설정합니다.

-Ddatastore.auto_id_allocation_policy=scattered

dev_appserver macro에 전달된 플래그를 통해 이 시스템 속성을 설정하려면 다음을 사용하세요.

java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered

사용자 계정 시뮬레이션

개발용 웹 서버는 고유한 로그인 및 로그아웃 페이지를 사용해서 Google 계정을 시뮬레이션합니다. 개발용 웹 서버에서 실행되는 동안 로그인 및 로그아웃 URL을 생성하는 메서드는 로컬 서버에서 /_ah/login/_ah/logout의 URL을 반환합니다.

개발 로그인 페이지에는 사용자가 이메일 주소를 입력할 수 있는 양식이 포함되어 있습니다. 세션에는 사용자가 활성 사용자로서 입력한 모든 이메일 주소가 사용됩니다.

로그인된 사용자가 애플리케이션에서 관리자로 인식되도록 하려면 양식에서 '관리자로 로그인' 체크박스를 선택합니다.

URL 가져오기 사용

애플리케이션이 URL 가져오기 API를 사용해서 HTTP 요청을 수행하는 경우 개발용 웹 서버는 컴퓨터에서 직접 요청을 수행합니다. 웹사이트에 액세스하기 위해 프록시 서버를 사용하는 경우 App Engine에서 애플리케이션이 실행될 때와 동작이 다를 수 있습니다.

개발용 콘솔

개발용 웹 서버에는 콘솔 웹 애플리케이션이 포함됩니다. 콘솔에서는 로컬 Datastore를 찾아볼 수 있습니다.

콘솔에 액세스하려면 서버의 URL(예: /_ah/admin http://localhost:8080/_ah/admin)에 방문하세요.

명령줄 인수

로컬 개발 서버 명령어 옵션은 여기를 참조하세요.