각 서비스 버전은 서비스와 버전의 이름을 제공하는 .yaml
파일에서 정의됩니다. YAML 파일은 대개 정의하는 서비스와 동일한 이름을 사용하지만 반드시 그럴 필요는 없습니다. 여러 서비스 버전을 배포하는 경우 버전마다 하나씩 여러 yaml 파일을 동일한 디렉터리에 만들 수 있습니다.
일반적으로 서비스의 YAML 파일과 관련 소스 코드를 포함하는 디렉터리를 서비스마다 만듭니다. 선택적 애플리케이션 수준 구성 파일(dispatch.yaml
, cron.yaml
, index.yaml
, queue.yaml
)은 최상위 앱 디렉터리에 포함됩니다. 아래 예시에서는 세 가지 서비스를 보여줍니다.
service1
및 service2
에서 소스 파일은 YAML 파일과 동일한 수준에 있습니다. service3
에는 두 가지 버전의 YAML 파일이 있습니다.
간단한 소규모 프로젝트의 경우 앱의 모든 파일이 디렉터리 하나에 위치할 수 있습니다.
모든 YAML 파일에는 버전 매개변수가 포함되어야 합니다. 기본 서비스를 정의하려면 service: default
매개변수를 명시적으로 포함하거나 서비스 매개변수를 파일에서 제외하면 됩니다.
각 서비스의 구성 파일은 특정 서비스/버전에 대한 확장 유형 및 인스턴스 클래스를 정의합니다. 지정하는 확장 유형에 따라 다른 확장 매개변수가 사용됩니다. 확장을 지정하지 않으면 자동 확장이 기본값이 됩니다. 확장 및 인스턴스 클래스 설정은 app.yaml
참조 섹션에 설명되어 있습니다.
서버의 효율성을 높이기 위해 각 서비스에 대해 URL 요청을 특정 스크립트에 매핑하고 정적 파일을 식별하도록 설정할 수도 있습니다. 이러한 설정은 yaml 파일에도 포함되며 app.yaml
참조 섹션에 설명되어 있습니다.
기본 서비스
모든 애플리케이션에는 1개의 기본 서비스가 있습니다. 개발자는 app.yaml
에서 service: default
설정을 사용하여 기본 서비스를 정의할 수 있지만 필수는 아닙니다. 서비스와 관련된 모든 구성 매개변수를 기본 서비스에 적용할 수 있습니다.
선택적 구성 파일
다음 구성 파일은 앱의 모든 서비스에 적용되는 선택적 기능을 제어합니다.
dispatch.yaml
는 URL의 경로 또는 호스트 이름에 따라 수신 요청을 특정 서비스로 보내어 기본 규칙을 라우팅합니다.queue.yaml
는 push 큐와 pull 큐를 모두 구성합니다.index.yaml
는 Datastore 쿼리를 사용할 경우 앱에 필요한 색인을 지정합니다.cron.yaml
는 정의된 시간 또는 일정한 간격으로 작동하는 정기 예약 태스크를 구성합니다.
이러한 구성 파일의 업데이트를 App Engine에 배포하려면 파일이 위치한 디렉터리에서 다음 명령어를 실행합니다.
gcloud app deploy [CONFIG_FILE]
예시
다음은 웹 요청을 처리하는 기본 서비스, 모바일 요청을 처리하는 서비스, 백엔드를 처리하는 서비스와 같이 3가지 서비스를 보유하고 있는 애플리케이션의 YAML 파일을 구성하는 방법을 보여주는 예시입니다.
먼저 app.yaml
이라는 구성 파일을 정의합니다. 이 구성 파일은 모든 웹 관련 요청을 처리합니다.
runtime: php55
api_version: 1
threadsafe: true
이 앱의 Google Cloud 콘솔 프로젝트 ID가 simple-sample
이면 이 구성은 자동 확장을 사용하고 공개 주소가 https://simple-sample.uc.r.appspot.com
인 기본 서비스를 만듭니다.
다음으로 모바일 웹 요청을 처리할 서비스를 만든다고 가정해 보겠습니다.
이 예시에서 모바일 사용자를 위해 최대 대기 지연 시간을 1초로 설정하며 항상 인스턴스 최소 2개 이상을 유휴 상태로 둡니다. 이를 구성하려면 다음 콘텐츠가 포함된 mobile-frontend.yaml
구성 파일을 만듭니다.
service: mobile-frontend
runtime: php55
api_version: 1
threadsafe: true
automatic_scaling:
min_idle_instances: 2
max_pending_latency: 1s
그러면 이 파일이 만드는 서비스를 https://mobile-frontend-dot-simple-sample.uc.r.appspot.com
에서 연결할 수 있습니다.
마지막으로 정적 백엔드 작업을 처리할 my-service
라는 서비스를 추가합니다.
이는 Datastore에서 BigQuery로 데이터를 내보내는 연속 작업일 수 있습니다. 작업량이 고정되어 있는 편이므로 상주 서비스는 항상 1개만 있으면 됩니다. 또한 이러한 작업에서 대량의 메모리 내 프로세싱을 사용하므로 메모리 구성을 늘린 서비스가 필요합니다. 이를 구성하려면 다음 콘텐츠가 포함된 my-service.yaml
구성 파일을 만듭니다.
service: my-service
runtime: php55
api_version: 1
threadsafe: true
instance_class: B8
manual_scaling:
instances: 1
그러면 이 파일이 만드는 서비스를 https://my-service-dot-simple-sample.uc.r.appspot.com
에서 연결할 수 있습니다.
manual_scaling:
설정을 확인합니다. instances:
매개변수는 이 서비스에 만들 인스턴스 수를 App Engine에 알립니다.