Project IDX와 Gemini API를 사용한 Go 애플리케이션 개발

12월 18, 2024
Suzy Mueller Software Engineer
Nooras Saba Engineering Manager

2024년 6월에 출시된 Project IDX는 클라우드에서의 풀 스택 앱 개발을 위한 AI 지원 작업공간입니다. Project IDX는 다양한 프레임워크, 언어, 서비스를 지원하는 한편, Google 제품에 대한 통합을 통해 개발 워크플로를 간소화합니다.

Project IDX를 활용하여 단 몇 분 만에 Go로 애플리케이션을 개발하는 방법을 보여드리겠습니다. Project IDX에서 Go 개발 환경을 설정하고 첫 번째 서버 애플리케이션을 만들어 보겠습니다. IDX에서 Go 개발 환경을 설정하고 간단한 hello world 서버를 만드는 방법을 살펴보겠습니다.

IDX에서 작업공간을 만드는 방법에는 몇 가지가 있습니다. GitHub 저장소를 가져오거나, 처음부터 빈 작업공간을 새로 만들거나, 혹은 미리 구성된 템플릿을 사용할 수 있습니다. 먼저 처음부터 시작하는 방법을 보여드린 다음 템플릿을 살펴보겠습니다.


시작하기

이 섹션에서는 IDX를 사용하여 환경을 설정하고 기본적인 Hello, World 서버를 작성하는 과정을 살펴보겠습니다.

idx.google.com/new/blank에서 IDX에 빈 프로젝트를 새로 생성하는 과정부터 시작해 보겠습니다. 이 프로젝트에는 리드미와 기본 dev.nix가 포함되어 있습니다.


환경 맞춤설정

환경 구성은 nix 환경 구성으로 맞춤설정할 수 있습니다. IDX의 Go 작업공간에 대한 최소 구성에서는 Go nix 패키지를 추가하고 Go 확장 프로그램을 설치합니다.

Go nix 패키지와 Go 확장 프로그램을 포함하도록 .idx/dev.nix를 업데이트합니다.

{ pkgs, ... }: {
  packages = [
    pkgs.go
  ];
 
  idx = {
    extensions = [
      "golang.go"
    ];
  };
}

이러한 변경 사항을 적용할 수 있도록 환경을 재구성하세요.


Go 코드 작성

이제 작업공간이 Go 코드 개발을 할 수 있게 설정되었으므로 Go 서버 작성을 시작할 수 있습니다.

먼저 Go 코드를 포함할 모듈을 초기화해 보겠습니다. Command Palette에서 Go 확장 프로그램이 제공하는 > Go: Initialize go.mod를 실행하거나 명령줄에서 go mod init을 실행하여 이 작업을 수행할 수 있습니다.

$ go mod init github.com/myorg/helloWorld

“Hello, World!"를 반환하는 간단한 서버로 main.go를 만들어보겠습니다.

package main
 
import (
	"fmt"
	"log"
	"net/http"
	"os"
)
 
func main() {
	log.Print("starting server...")
	http.HandleFunc("/", handler)
 
	// HTTP 서비스용 포트를 결정합니다.
	port := os.Getenv("PORT")
	if port == "" {
		port = "3000"
		log.Printf("defaulting to port %s", port)
	}
 
	// HTTP 서버를 시작합니다.
	log.Printf("listening on port %s", port)
	if err := http.ListenAndServe(":"+port, nil); err != nil {
		log.Fatal(err)
	}
}
 
func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "<!DOCTYPE html>\n")
	fmt.Fprint(w, "Hello, World!\n")
}

IDX에서 미리보기

이제 요청을 수신 대기할 수 있는 서버가 있으므로 미리보기를 만들어 테스트해 보겠습니다.

웹 미리보기 구성을 .idx/dev.nix에 추가합니다.

idx = {
      previews = {
      enable = true;
      previews = {
          web = {
          command = ["go" "run" "main.go"];
          manager = "web";
          env = {
            # 서버에 설정할 환경 변수
            PORT = "$PORT";
          };
        };
      };
    };
  };

웹 미리보기를 보려면 환경을 다시 구성하세요. > Project IDX: Show Web Preview를 사용하여 Command Palette에서 미리보기를 열 수도 있습니다.

Show Web Preview in Project IDX

IDX에서 Go 템플릿 살펴보기

신속하게 시작할 수 있도록 필요한 모든 도구와 라이브러리로 사전 구성된 환경이 포함되어 있어 바로 사용할 수 있는 템플릿을 제공합니다.

Go 백엔드 서버 템플릿 중 하나로 시작하거나 Go 및 Gemini 템플릿으로 LLM 애플리케이션 개발을 시작해 보세요.

AI의 힘을 활용할 수 있도록 Gemini with Go 템플릿은 Gemini API와 통합됩니다. Gemini API 키를 연결하여 시작하세요.

Code editor displays project files and a web page titled "Baking with Gemini"  with images of baked goods and a prompt to provide a recipe in IDX