Go 런타임

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

  • 1.18 이상 버전은 빌드팩을 사용하여 빌드되므로 app.yaml 파일에서 운영체제를 선택해야 합니다. 예를 들어 Go 1.22를 사용하려면 Ubuntu 22를 운영체제로 지정해야 합니다.

  • 1.15 버전 이하는 Docker를 사용하여 빌드됩니다.

지원되는 Go 버전의 전체 목록과 해당 Ubuntu 버전은 런타임 지원 일정을 참조하세요.

Go 버전 선택

새 런타임 버전

Go 런타임 버전 1.18 이상의 경우 운영체제를 지정하려면 app.yaml 설정에 runtime_configoperating_system이 포함되어야 합니다.

새 런타임을 사용하려면 gcloud CLI 버전 420.0.0 이상을 설치해야 합니다. gcloud components update 명령어를 실행하여 CLI 도구를 업데이트할 수 있습니다. 설치된 버전을 보려면 gcloud version 명령어를 실행하면 됩니다.

Go에서는 종속 항목 관리에 go.mod 파일을 사용하는 것이 좋습니다. 배포 중에 종속 항목을 설치하려면 app.yaml 파일과 동일한 폴더에 go.mod 파일을 포함합니다.

예를 들어 go.mod가 있는 앱의 폴더 구조는 다음을 나타내야 합니다.

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

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

예시

  • Ubuntu 22에서 지원되는 Go 1.22를 지정하려면 다음을 실행합니다.

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.22"
    
  • 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.22를 선택하면 최신 patch 버전의 Go 1.22를 사용할 수 있게 됩니다.

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.22"

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

이전 런타임 버전

Go 버전 1.15 이하의 경우 app.yaml 구성 파일의 go1.x 형식을 사용하여 버전을 runtime: go1.x로 지정합니다.

예시

  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 패키지를 사용하여 메타 데이터 서버에 액세스합니다.