리전 ID
REGION_ID
는 앱을 만들 때 선택한 리전을 기준으로 Google에서 할당하는 축약된 코드입니다. 일부 리전 ID는 일반적으로 사용되는 국가 및 주/도 코드와 비슷하게 표시될 수 있지만 코드는 국가 또는 주/도와 일치하지 않습니다. 2020년 2월 이후에 생성된 앱의 경우 REGION_ID.r
이 App Engine URL에 포함됩니다. 이 날짜 이전에 만든 기존 앱의 경우 URL에서 리전 ID는 선택사항입니다.
리전 ID에 대해 자세히 알아보세요.
이 가이드를 활용하면 App Engine을 시작하고 Go 앱 개발, 배포, 관리에 익숙해질 수 있습니다.
앱을 빌드한 후에는 다른 가이드를 읽어 다른 Google Cloud 서비스와 통합하고 앱에 기능을 추가하는 방법을 알아볼 수 있습니다.
비용
이 가이드의 실행에는 비용이 발생하지 않습니다. 이 샘플 앱을 실행하는 것만으로는 무료 할당량이 초과되지 않습니다.
개발 환경 설정
로컬 머신과 이미 친숙한 도구나 Cloud Shell을 사용할 수 있습니다. Cloud Shell에는 Google Cloud CLI가 이미 설치되어 있고 환경이 이미 설정되어 있으며 그 밖의 많은 기능이 있습니다.
Go를 설치하고 개발 환경 설정의 설명대로 gcloud CLI를 설정합니다.
필요한 모든 도구가 사전 설치되어 있는 Cloud Shell을 실행합니다.
Google Cloud 프로젝트 만들기
프로젝트는 Google Cloud를 사용하는 데 필요하며 모든Google Cloud 서비스를 사용하기 위한 기반이 됩니다.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- App Engine 앱과 관련 리소스를 만듭니다. 위치를 선택해야 합니다. 이후에 위치를 변경할 수 없습니다.
gcloud app create
App Engine을 위한 기본 웹 서비스 작성
웹 서비스를 작성하고 런타임 설정을 선언하는 방법을 알아봅니다.
파일 구조화
서비스의 파일 구조는 다음과 같습니다.
go-app/
: Go 서비스용 디렉터리app.yaml
: 서비스의 구성 설정main.go
: 애플리케이션 코드
app.yaml
파일 만들기
모든 App Engine 프로젝트에는 서비스의 런타임 환경 설정을 지정하는 app.yaml
구성 파일이 있습니다. 이 파일이 없으면 서비스가 배포되지 않습니다.
Go 서비스용으로
go-app
이라는 새 폴더를 만듭니다.mkdir go-app
go-app/
폴더에서app.yaml
이라는 파일을 만들고 다음 콘텐츠를 추가합니다.runtime: go123 # or another supported version
이는 App Engine 앱의 가장 단순한 구성으로, Go를 사용하고 있음을 App Engine에 알립니다.
app.yaml
파일은 다른 Go 버전, 네트워크 설정, 확장 설정 등을 지정할 수 있습니다. 자세한 내용은app.yaml
참조를 확인하세요.
main.go
파일 만들기
이 샘플에서는 net/http
패키지를 사용하여 'Hello World'를 출력하는 HTTP 서버를 만듭니다.
main.go
파일을 설정하려면 다음 안내를 따르세요.
go-app/
폴더에서main.go
파일을 만듭니다.package main
문을 추가하여 코드를 실행 가능한 프로그램으로 취급합니다.package main
서비스를 성공적으로 배포하려면 최소한 Go 소스 파일 한 개 이상의 시작 부분에
package main
문을 정의해야 합니다.다음 패키지를 가져옵니다.
HTTP 핸들러를 정의합니다.
http.ResponseWriter
객체는 HTTP 서버 응답을 어셈블합니다. 이 객체에 데이터를 기록하여 브라우저로 전송합니다.http.Request
객체는 수신 HTTP 요청을 나타내는 데이터 구조입니다.HTTP 핸들러를 등록합니다.
main
함수는 실행 가능한 프로그램의 진입점으로, 애플리케이션을 시작합니다.indexHandler
함수로http
패키지에 웹 루트("/"
)에 대한 모든 요청을 처리하라고 지시하는http.HandleFunc
함수 호출로 시작됩니다.PORT
환경 변수가 설정되지 않으면 포트8080
이 기본값으로 사용됩니다. App Engine에서 앱이 실행되고 있으면PORT
환경 변수가 자동으로 설정되지만 로컬에서 앱을 테스트할 때PORT
를 원하는 값으로 설정할 수 있습니다.
App Engine에 웹 서비스 배포
app.yaml
파일이 있는go-app
디렉터리에서 다음 명령어를 사용하여 웹 서비스를 App Engine에 배포합니다.gcloud app deploy
브라우저를 시작하고
https://PROJECT_ID.REGION_ID.r.appspot.com
에서 웹 서비스를 보려면 다음 명령어를 실행합니다.gcloud app browse
수고하셨습니다 서비스를 만들고 App Engine에 배포해 보았습니다.
서비스 및 버전
애플리케이션용으로 배포하는 첫 번째 서비스가 기본 서비스가 됩니다.
app.yaml
파일에서 서비스 이름을 지정할 수 있지만 이름을 생략하면 default
로 처리됩니다. 기본 서비스 이외의 여러 서비스를 배포할 수 있습니다.
gcloud app deploy
명령어를 실행하여 언제든지 서비스를 업데이트할 수 있습니다. 배포할 때마다 새로운 버전이 생성되고 트래픽이 최신 버전으로 자동 라우팅됩니다.
서비스 생성 및 버전 배포를 확인하려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 App Engine 서비스를 확인합니다.
default
라고 하는 서비스 하나가 나열되어야 합니다. 기본 서비스는 다음 URL에서 공개적으로 액세스할 수 있습니다.https://PROJECT_ID.REGION_ID.r.appspot.com
버전을 확인합니다.
배포에 해당되는 타임스탬프 처리된 버전이 하나 나열되어야 합니다.
특정 서비스와 버전으로 요청을 보내는 방법을 알아보려면 요청 라우팅 방법을 참조하세요.
다음 단계
수고하셨습니다 웹 애플리케이션을 설정하여 App Engine에 배포했습니다.
다음 페이지를 탐색하여 애플리케이션에 다른 기능을 추가하는 방법을 알아보세요.
- 애플리케이션 로그 읽기 및 쓰기에서 애플리케이션 로그를 쓰고 시스템 로그를 해석하는 방법에 대해 자세히 알아보세요.
- App Engine의 작동 방식에 대한 자세한 내용은 Go 런타임 환경을 참조하세요.
- 요청 처리 및 요청 라우팅에 대해 알아보기