주의: 앞으로 몇 개월에 걸쳐 Google은 콘텐츠를 보다 손쉽게 찾고 나머지 Google Cloud 제품과 더 잘 연동되도록 App Engine 문서 사이트를 재구성할 예정입니다. 제공되는 콘텐츠는 동일하지만, 이제 탐색 기능이 나머지 클라우드 제품과 일치하게 됩니다.

Node.js 16이 이제 정식 버전으로 제공됩니다.

애플리케이션 테스트 및 배포

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

리전 ID

REGION_ID는 앱을 만들 때 선택한 리전을 기준으로 Google에서 할당하는 축약된 코드입니다. 일부 리전 ID는 일반적으로 사용되는 국가 및 주/도 코드와 비슷하게 표시될 수 있지만 코드는 국가 또는 주/도와 일치하지 않습니다. 2020년 2월 이후에 생성된 앱의 경우 REGION_ID.r이 App Engine URL에 포함됩니다. 이 날짜 이전에 만든 기존 앱의 경우 URL에서 리전 ID는 선택사항입니다.

리전 ID에 대해 자세히 알아보세요.

애플리케이션을 로컬에서 실행 및 배포하고 App Engine에서 테스트하는 방법을 알아봅니다.

로컬에서 실행

배포 전에 애플리케이션 기능을 테스트하려면 자주 사용하는 개발 도구로 로컬 환경에서 애플리케이션을 실행합니다. 예를 들면 npm start입니다.

애플리케이션을 배포하기 전에

애플리케이션을 배포하기 전에 다음을 확인합니다.

애플리케이션 배포

gcloud app deploy 명령어를 사용하여 애플리케이션을 App Engine에 배포합니다.

배포 중에 Cloud Build 서비스가 App Engine 표준 환경에서 실행할 애플리케이션의 컨테이너 이미지를 빌드합니다. 빌드는 앱의 리전에 생성됩니다. 빌드 이미지 관리에서 자세히 알아보세요.

앱을 프로그래매틱 방식으로 배포하려면 Admin API를 사용합니다.

서비스 배포

애플리케이션의 서비스 버전과 각 구성 파일을 배포하여 App Engine에 애플리케이션을 배포합니다.

애플리케이션의 서비스 버전을 배포하려면 서비스의 app.yaml 파일이 있는 디렉터리에서 다음 명령어를 실행합니다.

gcloud app deploy

명령어로 파일을 지정하지 않으면 현재 디렉터리의 app.yaml 파일만 배포됩니다. 기본적으로 deploy 명령어는 개발자가 배포하는 버전에 대해 고유 ID를 생성하고 개발자가 사용하도록 Google Cloud CL를 구성한 Google Cloud 프로젝트에 버전을 배포하고, 모든 트래픽을 새 버전으로 라우팅합니다.

특정 파일을 타겟팅하거나 추가 매개변수를 포함하여 명령어의 기본 동작을 변경할 수 있습니다.

  • 서비스의 다른 구성 파일을 배포하려면 각 파일을 별도로 대상을 지정하고 배포해야 합니다. 예를 들면 다음과 같습니다.
    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • 커스텀 버전 ID를 지정하려면 --version 플래그를 사용합니다.
  • 트래픽이 자동으로 새 버전으로 라우팅되지 않게 하려면 --no-promote 플래그를 사용합니다.
  • 특정 Google Cloud 프로젝트에 배포하려면 --project 플래그를 사용합니다.

예를 들어 app.yaml 파일에서 정의된 서비스를 특정 Google Cloud 프로젝트에 배포하려면 커스텀 버전 ID를 할당하고 트래픽이 새 버전으로 라우팅되지 않도록 합니다.

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

이 명령어에 대한 자세한 내용은 gcloud app deploy 참조를 확인하세요.

여러 서비스 배포

동일한 배포 명령어를 사용하여 애플리케이션을 구성하는 여러 서비스를 배포 또는 업데이트할 수 있습니다.

여러 서비스를 배포하려면 각 서비스의 app.yaml 파일을 별도로 배포합니다. 단일 gcloud app deploy 명령어로 여러 파일을 지정할 수 있습니다.

gcloud app deploy service1/app.yaml service2/app.yaml

여러 서비스 배포 시 요구사항

  • 후속 서비스를 만들고 배포하려면 먼저 애플리케이션 버전을 default 서비스에 배포해야 합니다.
  • 각 서비스의 ID를 해당 app.yaml 구성 파일에 지정해야 합니다. 서비스 ID를 지정하려면 각 구성 파일에 service 요소 정의를 포함합니다. 기본적으로 구성 파일에서 이 요소 정의를 제외하면 해당 버전이 default 서비스에 배포됩니다.

빌드 로그 보기

Cloud Build는 Google Cloud Console의 Cloud Build 기록 섹션에서 볼 수 있는 빌드 로그와 배포 로그를 스트리밍합니다. 앱 리전의 빌드를 보려면 페이지 상단에 있는 리전 드롭다운 메뉴를 사용하여 필터링할 리전을 선택합니다.

파일 무시

.gcloudignore 파일을 사용하여 서비스를 배포할 때 App Engine에 업로드되지 않는 파일과 디렉터리를 지정할 수 있습니다. 이 작업은 배포를 통해 업로드할 필요가 없는 빌드 아티팩트와 기타 파일을 무시하려는 경우에 유용합니다.

빌드 이미지 관리

새 버전을 배포할 때마다 컨테이너 이미지가 Cloud Build 서비스를 사용하여 생성됩니다. 이 컨테이너 이미지는 앱의 리전에 빌드된 후 App Engine 표준 환경에서 실행됩니다.

빌드된 컨테이너 이미지는 Container Registryapp-engine-tmp/app 폴더에 저장됩니다. 이러한 이미지를 다운로드하여 다른 위치에서 실행하거나 보관할 수 있습니다. 배포가 완료되면 App Engine은 더 이상 컨테이너 이미지가 필요하지 않습니다. 이 이미지는 자동으로 삭제되지 않으므로 스토리지 할당량에 도달하지 않도록 하려면 필요 없는 이미지를 삭제하면 됩니다. Container Registry에서의 이미지 관리에 대한 자세한 내용은 Container Registry 문서를 참조하세요.

애플리케이션 보기

애플리케이션을 App Engine에 배포한 후 다음 명령어를 실행하면 브라우저를 시작하고 https://PROJECT_ID.REGION_ID.r.appspot.com에서 애플리케이션을 볼 수 있습니다.

gcloud app browse

트래픽 이동 전에 App Engine에서 테스트

새 버전에서 트래픽을 수신하도록 구성하기 전에 App Engine에서 버전을 테스트할 수 있습니다. 예를 들어 default 서비스의 새 버전을 테스트하려면 다음 안내를 따르세요.

  1. 새 버전을 배포하되 트래픽이 새 버전으로 자동 라우팅되지 않도록 합니다.

    gcloud app deploy --no-promote

  2. 다음 URL로 이동하여 새 버전에 액세스합니다.

    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

    이제 App Engine 런타임 환경에서 새 버전을 테스트할 수 있습니다. 로그를 확인하여 애플리케이션을 디버깅할 수 있습니다. 자세한 내용은 애플리케이션 로그 작성을 참조하세요.

    App Engine은 https://PROJECT_ID.REGION_ID.r.appspot.com으로 전송된 요청을 이전에 트래픽을 수신하도록 구성된 버전으로 라우팅합니다.

  3. 트래픽을 새 버전으로 전송하려면 Google Cloud Console을 사용하여 트래픽을 마이그레이션합니다.

    버전 관리하기

    방금 배포한 버전을 선택하고 트래픽 마이그레이션을 클릭합니다.

URL의 default를 서비스 이름으로 바꾸면 동일한 프로세스를 사용하여 다른 서비스의 새 버전을 테스트할 수 있습니다.

https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

특정 서비스와 버전 타겟팅에 대한 자세한 내용은 요청 라우팅 방법을 참조하세요.

빌드 환경 변수 사용

빌드팩을 지원하는 런타임용 빌드 환경 변수를 설정할 수도 있습니다.

빌드 환경 변수는 구성 정보를 빌드팩에 전달할 수 있는 앱과 함께 배포된 키-값 쌍입니다. 예를 들어 컴파일러 옵션을 맞춤설정할 수 있습니다. app.yaml 파일에서 build_env_variables 필드를 구성하여 이러한 빌드 환경 변수를 추가하거나 삭제할 수 있습니다.