app.yaml로 앱 구성

App Engine 앱은 CPU, 메모리, 네트워크 및 디스크 리소스, 확장, 환경 변수를 비롯한 기타 일반 설정이 포함된 app.yaml 파일을 사용하여 구성됩니다. 새 자바 11 이상 버전을 선택하거나 이전 Eclipse Jetty 9.3 또는 자바 8 버전을 사용할 수 있습니다. Eclipse Jetty 9.3 및 자바 8의 경우 Maven 또는 Gradle을 사용할 수 있습니다.

app.yaml 파일 정보

버전과 URL이 포함된 자바 앱의 런타임 구성을 app.yaml 파일에 지정할 수 있습니다. 이 파일은 특정 서비스 버전의 배포 설명자 역할을 합니다.

추가 서비스를 위해 app.yaml 파일을 만들고 배포하려면 먼저 default 서비스의 app.yaml 파일을 만들어야 합니다.

다음 app.yaml은 자바 버전 8, 11, 17 이상에서 앱을 구성하는 방법을 보여줍니다. 참고로 새 버전을 사용하려면 app.yaml 파일을 업데이트해야 합니다. 새 버전 사용에 대한 자세한 내용은 Java 런타임을 참조하세요.

버전 17 이상

runtime: java
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "21"
handlers:
- url: /.*
script: this field is required, but ignored

manual_scaling:
instances: 1

버전 11

runtime: java
env: flex
runtime_config:
operating_system: "ubuntu18"
runtime_version: "11"
handlers:
- url: /.*
script: this field is required, but ignored

manual_scaling:
instances: 1

버전 8

runtime: java
env: flex

handlers:
- url: /.*
  script: this field is required, but ignored

앱 서비스의 복잡성에 따라 해당 app.yaml 파일에 몇 가지 요소만 정의해야 할 수 있습니다. 다음 예에서는 가변형 환경에서 간단한 자바 앱에 필요한 사항을 설명합니다.

app.yaml 파일에 고유한 이름을 지정할 수 있습니다. 하지만 이렇게 하면 배포 명령어에도 파일 이름을 지정해야 합니다. 예를 들어 app.yaml 파일의 이름을 service-name-app.yaml이나 app.flexible.yaml로 지정한 후 다음 중 하나를 사용하여 앱을 배포해야 합니다.

gcloud app deploy service-name-app.yaml
gcloud app deploy app.flexible.yaml
앱에서 여러 서비스와 app.yaml 파일을 구조화하는 방법에 대한 자세한 내용은 웹 서비스 구조화를 참조하세요.

모든 구성 요소

이 구성 파일에서 지원되는 모든 요소의 전체 목록은 app.yaml 참조를 확인하세요.

자바 가상 머신 측정항목 수집 사용 설정

자바용 App Engine 가변형 환경을 구성하여 자바 가상 머신(JVM) 프로세스의 공통 측정항목을 수집할 수 있습니다. 측정항목은 Cloud Monitoring에서 사용하는 플러그인과 동일한 JVM 모니터링 플러그인을 통해 수집됩니다. App Engine의 전체 측정항목 목록을 보려면 Google Cloud 측정항목 가이드를 참조하세요.

앱에서 이러한 JVM 측정항목을 수집하려면 다음 안내를 따르세요.

  • appengine.googleapis.com/flex/instance/jvm/gc/count
  • appengine.googleapis.com/flex/instance/jvm/gc/time

app.yaml의 환경 변수에 다음과 같은 JMX 시스템 속성을 설정하고 앱을 배포해야 합니다.

JAVA_USER_OPTS: "-Djava.rmi.server.hostname=172.17.0.1 -Dcom.sun.management.jmxremote.port=10403 -
Dcom.sun.management.jmxremote.rmi.port=10403 -Dcom.sun.management.jmxremote.local.only=false -
Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"