로컬 개발 서버 사용

로컬 개발 서버는 App Engine Java 런타임 환경 및 Datastore를 포함한 모든 해당 서비스를 에뮬레이션합니다.

시작하기 전에

Java 8가 지원 종료에 도달했으므로 더 이상 최신 버전의 dev_appserver.py를 사용하여 애플리케이션을 로컬로 실행할 수 없습니다. devapp_server.py의 보관처리된 버전을 다운로드하려면 다음 안내를 따르세요.

  1. 보관 파일에서 지원 종료에 도달한 런타임을 위한 dev_appserver.py 서버가 포함된 압축된 폴더를 다운로드합니다.

  2. 디렉터리 콘텐츠를 /home 디렉터리와 같은 로컬 파일 시스템에 추출합니다. google_appengine/google/appengine/tools/java/bin 디렉터리에서 dev_appserver.py를 찾을 수 있습니다.

개발용 웹 서버 실행

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

또한 명령 프롬프트에서 개발용 웹 서버를 실행할 수 있습니다. 실행할 명령어는 google_appengine/google/appengine/tools/java/bin 상대 경로의 SDK 디렉터리에 있습니다.

Windows 명령어 구문:

google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]

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

google_appengine/google/appengine/tools/java/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 내용을 확인합니다.

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_appengine/google/appengine/tools/java/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를 할당하는 방법을 구성할 수 있습니다.

다음 자동 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)에 방문하세요.

명령줄 인수

개발 서버 명령어에는 다음과 같은 명령줄 인수가 지원됩니다.

--address=...

서버에 사용할 호스트 주소입니다. 네트워크의 다른 컴퓨터에서 개발 서버에 액세스하려면 이 주소에 액세스할 수 있도록 설정해야 합니다. 주소가 0.0.0.0이면 localhost 액세스 및 호스트 이름 액세스가 모두 허용됩니다. 기본값은 localhost입니다.

--default_gcs_bucket=...

기본 Google Cloud Storage 버킷 이름을 설정합니다.

--disable_update_check

제공된 경우, 개발 서버가 새로운 SDK 릴리스 사용 가능 여부를 확인하기 위해 App Engine에 연결하지 않습니다. 기본적으로 서버는 시작 시에 새 버전을 확인하고 새 버전을 사용할 수 있으면 메시지를 출력합니다.

--generated_dir=...

생성된 파일이 만들어지는 디렉터리를 설정합니다.

--help

유용한 메시지를 출력한 후 종료합니다.

--jvm_flag=...

제공된 플래그를 JVM 인수로 전달합니다. 여러 플래그를 제공하기 위해 반복할 수 있습니다.

--port=...

서버에 사용할 포트 번호입니다. 기본값은 8080입니다.

--sdk_root=...

도구의 위치와 다른 경우 gcloud CLI의 경로입니다.

--server=...

최신 SDK 버전을 확인하는 데 사용할 서버입니다.