[go] Go 언어를 이용한 클라우드 환경에 웹 애플리케이션 배포하기

이번 블로그 포스트에서는 Go 언어로 작성된 웹 애플리케이션을 클라우드 환경에 배포하는 방법을 살펴보겠습니다. Go 언어는 간결하고 빠른 실행 속도를 가지고 있어 웹 애플리케이션 개발에 널리 사용되고 있습니다. 우리는 이를 Google Cloud Platform (GCP)을 예시로 들어 설명을 진행할 것입니다.

1. Go 웹 애플리케이션 작성하기

Go로 간단한 웹 애플리케이션을 작성해보겠습니다. 다음은 간단한 “Hello, World!” 웹 애플리케이션을 작성한 예시입니다.

package main

import (
	"fmt"
	"log"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "Hello, World!")
}

func main() {
	http.HandleFunc("/", handler)
	log.Fatal(http.ListenAndServe(":8080", nil))
}

2. Docker 이미지 빌드하기

이제 작성한 Go 웹 애플리케이션을 Docker 이미지로 만들어보겠습니다. Docker를 사용하면 애플리케이션을 독립적으로 실행할 수 있으며, 클라우드 환경에서 쉽게 배포할 수 있습니다.

# Dockerfile
FROM golang:1.16

WORKDIR /app
COPY . .

RUN go build -o main .

CMD ["./main"]

이후 터미널에서 다음 명령어를 실행하여 Docker 이미지를 빌드합니다.

docker build -t my-go-app .

3. Google Cloud Platform에 배포하기

먼저, Google Cloud Console에서 새로운 프로젝트를 생성하고, Cloud Shell을 열어보겠습니다. 이후 Docker 이미지를 Google Container Registry에 업로드하고, Google Kubernetes Engine을 사용하여 클러스터를 생성하고 애플리케이션을 배포할 수 있습니다.

gcloud builds submit --tag gcr.io/[PROJECT-ID]/my-go-app
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-go-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-go-app
  template:
    metadata:
      labels:
        app: my-go-app
    spec:
      containers:
      - name: my-go-app
        image: gcr.io/[PROJECT-ID]/my-go-app
        ports:
        - containerPort: 8080
kubectl apply -f deployment.yaml

이제, Go 언어로 작성한 웹 애플리케이션이 Google Cloud Platform에서 성공적으로 배포되었습니다.

이처럼, Go 언어를 사용하여 작성한 웹 애플리케이션은 Docker를 통해 쉽게 이미지로 만들고, Google Cloud Platform과 같은 클라우드 환경에 배포할 수 있습니다. Go 언어와 클라우드 기술을 함께 사용하여 안정적이고 확장 가능한 웹 애플리케이션을 개발하는 것을 기대해 봅니다.

참고 자료