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

Go 런타임

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

개요

Go 런타임은 애플리케이션 코드 및 종속 항목을 설치한 후 가변형 환경에서 해당 애플리케이션을 실행하는 소프트웨어 스택입니다.

지원되는 Go 런타임 버전은 1.19(미리보기), 1.18(미리보기), 1.15, 1.14, 1.13, 1.12, 1.11, 1.10, 1.9입니다.

중요: 런타임 지원은 Go 버전 1.18부터 Google Cloud 빌드팩으로 전환됩니다.

  • 미리보기: 1.18 버전부터는 모든 새 Go 런타임이 운영체제를 선택할 수 있는 빌드팩을 사용하여 빌드됩니다. 새 런타임을 사용하려면 app.yaml에서 추가 설정을 지정해야 합니다. 자세히 알아보기

  • Go 런타임 버전 1.15 이하는 Docker를 사용하여 빌드됩니다. 소스 코드는 GitHub에서 제공됩니다.

Go 버전 선택

새 런타임 버전(미리보기)

Go 런타임 버전 1.18 이상의 경우 운영체제를 지정하려면 app.yaml 설정에 runtime_configoperating_system이 포함되어야 합니다. Go 런타임 버전 1.18(미리보기) 및 1.19(미리보기)는 Ubuntu 22에서 실행됩니다.

필수:

  • 애플리케이션은 gcloud CLI 버전 417.0.1 이상을 사용해야 합니다. 현재 gcloud 버전을 보려면 gcloud version 명령어를 실행합니다.

  • 애플리케이션은 Go 모듈을 사용해야 하며 go.mod 파일이 app.yaml과 같은 폴더에 포함되어 있어야 합니다. 예를 들어 go.mod를 사용하는 앱의 폴더 구조는 다음을 나타내야 합니다.

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    

선택사항: app.yamlruntime_version 설정을 포함하여 런타임 버전을 지정할 수 있습니다. runtime_version 설정이 지정되지 않으면 기본적으로 최신 Go 버전이 사용됩니다.

예시

  • Go 버전 1.18 지정하기

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: 1.18
    
  • Ubuntu 22에서 지원하는 최신 Go 버전 지정하기

      runtime: go
      env: flex
    
      runtime_config:
          operating_system: "ubuntu22"
    

앱은 app.yaml 파일에 지정된 버전의 최신 안정화 출시 버전을 사용합니다. App Engine은 새로운 패치 버전으로 자동 업데이트되지만 주 버전을 자동 업데이트하지는 않습니다.

예를 들어 애플리케이션을 Go 1.18.10으로 배포하고 나중에 Go 1.18.11로 자동으로 업데이트할 수 있지만 메이저 버전 Go 1.19로 자동으로 업데이트되지 않습니다.

아래 표시된 대로 app.yaml에서 Go 런타임 버전 1.19를 선택하면 1.19.5와 같은 1.19의 최신 버전을 사용할 수 있습니다.

    runtime: go
    env: flex

    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: 1.19

자세한 내용은 app.yaml 참조를 확인하세요.

이전 런타임 버전

Go 1.15 및 이전 런타임 버전의 경우 runtime: go1.x 등의 app.yaml 구성 파일에서 go1.x 형식을 사용하여 특정 Go version을 선택할 수 있습니다.

예시

  runtime: go1.14
  env: flex

버전을 지정하지 않으면 go1.11의 기본 버전이 자동으로 선택됩니다.

앱은 app.yaml 파일에 지정된 버전의 최신 안정화 출시 버전을 사용합니다. App Engine은 새로운 패치 버전으로 자동 업데이트되지만 주 버전을 자동 업데이트하지는 않습니다.

예를 들어 애플리케이션을 Go 1.14.10으로 배포하고 나중에 Go 1.14.11로 자동으로 업데이트할 수 있지만 주 버전 Go 1.15로 자동으로 업데이트되지 않습니다.

아래 표시된 대로 app.yaml에서 go 런타임 버전 go1.15를 선택하면 1.15.15와 같은 1.15의 최신 버전을 사용할 수 있습니다.

  runtime: go1.15
  env: flex

패키지 가져오기

App Engine에 앱을 배포하면 코드가 컴파일됩니다. 배포 명령어를 실행하면 앱 종속 항목이 먼저 로컬 GOPATH에서 수집된 후 빌드 서버로 모두 전송됩니다. 누락된 종속 항목(예: 타사 라이브러리)이 있으면 빌드가 실패합니다.

앱을 배포하기 전에 로컬에서 테스트하면 빌드 실패가 방지되고 앱의 모든 종속 항목이 코드와 함께 배포되도록 할 수 있습니다.

런타임 확장

Go 런타임을 확장 및 맞춤설정하는 방법에 대한 자세한 내용은 GitHub의 Go 런타임 빌더를 참조하세요.

메타데이터 서버

애플리케이션의 각 인스턴스에서 Compute Engine 메타데이터 서버를 사용하여 호스트 이름, 외부 IP 주소, 인스턴스 ID, 커스텀 메타데이터, 서비스 계정 정보 등의 인스턴스 정보를 쿼리할 수 있습니다. App Engine에서는 인스턴스별로 커스텀 메타데이터를 설정할 수 없지만 프로젝트 차원의 커스텀 메타데이터를 설정해 App Engine 및 Compute Engine 인스턴스에서 읽는 것은 가능합니다.

cloud.google.com/go/compute/metadata 패키지를 사용하여 메타 데이터 서버에 액세스합니다.