Go (Golang) 사용하기
개요
Go(종종 Golang으로도 불림)는 Google에서 설계·오픈소스화한 정적 타입의 컴파일형 프로그래밍 언어입니다. 간결한 문법, 매우 빠른 컴파일 속도, 강력한 동시성 처리(goroutine과 channel을 통한 통신), 효율적인 내장 가비지 컬렉터로 인해 개발자들에게 큰 사랑을 받고 있습니다. Go 언어는 고성능 네트워크 서비스, 분산 시스템, 마이크로서비스, CLI 도구 구축에 특히 적합하며 현대 클라우드 네이티브와 백엔드 개발 분야에서 주류 선택지로 자리매김했습니다.
ServBay의 Go 지원
ServBay는 macOS 환경에 최적화된 통합 로컬 웹 개발 플랫폼으로, Go 개발자를 위한 강력하고 매끄러운 지원을 제공합니다. 복잡한 환경 변수(GOROOT
, GOPATH
등) 수동 설정 없이도, ServBay를 통해 여러 Go 버전을 손쉽게 설치, 관리, 전환할 수 있어 Go 개발 환경의 초기 세팅과 유지 관리가 획기적으로 간소화됩니다.
ServBay는 완전한 Go 툴체인을 내장하고 있고, 구버전부터 최신 안정 버전까지 폭넓게 지원하여 프로젝트마다 다른 요구에 유연하게 대처할 수 있습니다:
- Go 1.11
- Go 1.12
- Go 1.13
- Go 1.14
- Go 1.15
- Go 1.16
- Go 1.17
- Go 1.18
- Go 1.19
- Go 1.20
- Go 1.21
- Go 1.22
- Go 1.23
- Go 1.24 (향후 ServBay 업데이트 시 추가 지원 가능)
Go Modules 지원
ServBay 환경은 기본적으로 Go Modules 기반 의존성 관리를 활성화하며 권장합니다. 이는 Go 공식에서 1.11 이후 채택한 표준의존성 솔루션입니다. ServBay 터미널에서는 go mod init
, go get
, go mod tidy
와 같은 go mod
명령어를 바로 사용할 수 있고, 전통적 $GOPATH
설정 문제로부터 자유롭습니다.
사전 준비 사항
- macOS에서 ServBay가 정상적으로 설치 및 실행 중이어야 합니다.
- Go 언어의 기초적인 코드 작성법을 알고 있어야 합니다.
- 터미널(Terminal)에서 기본 명령어 사용법을 숙지하고 있어야 합니다.
Go 설치하기
ServBay의 직관적인 GUI(그래픽 인터페이스)를 통해 Go 환경 설치는 매우 쉽습니다:
- ServBay 앱을 실행하세요.
- 왼쪽 내비게이션에서
소프트웨어 패키지
를 클릭하세요. - 펼쳐진 패키지 목록에서
Go
카테고리를 찾으세요. Go
를 클릭하여 지원되는 Go 버전 리스트를 확인하세요.- 원하는 Go 버전(일반적으로 최신 안정 버전, 예: Go 1.24의 선택을 권장합니다)을 골라 오른쪽의
설치
버튼을 누르세요. - ServBay가 자동으로 해당 Go 버전을 다운로드 및 설치합니다. 소요 시간은 네트워크 환경에 따라 달라집니다.
설치가 끝나면 상태가 “설치됨”으로 바뀌고, 여러 버전을 추가 설치하거나 설치된 버전 간 쉽게 전환할 수 있습니다.
Go 사용하기
Go 설치가 완료되면, OS 터미널에서 바로 go
명령어를 쓸 수 있습니다.
Go가 정상 설치되었고 현재 활성화된 버전을 확인하려면 다음을 실행하세요:
bash
go version
1
아래와 비슷한 안내가 나오며, ServBay가 관리 중인 현재 Go 버전을 보여줍니다:
go version go1.24.1 darwin/arm64
1
간단한 Go 웹 애플리케이션 빌드 및 실행
Go의 HTTP 서버 예제를 만들어 보고, ServBay 환경에서 컴파일 및 실행해보겠습니다.
프로젝트 디렉토리 생성:
ServBay의 기본 웹사이트 루트인/Applications/ServBay/www
경로 아래에 Go 프로젝트 폴더를 생성하는 것을 권장합니다. 예로go-servbay-demo
라는 폴더를 만듭니다.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo
1
2
3Go Modules 초기화:
프로젝트 루트(go-servbay-demo
폴더)에서go mod init
으로 Go Modules를 초기화합니다. 모듈 경로는 보통 코드 저장소나 프로젝트와 관련된 고유 식별자를 쓰는 것이 좋으나 여기서는 폴더명을 사용합니다.bashgo mod init go-servbay-demo
1이 명령은 현재 폴더에 프로젝트 의존성을 기록할
go.mod
파일을 생성합니다.Go 코드 작성:
main.go
파일을 만들고 다음 코드를 붙여넣으세요:gopackage main import ( "fmt" "log" "net/http" "os" ) func handler(w http.ResponseWriter, r *http.Request) { hostname, _ := os.Hostname() fmt.Fprintf(w, "Hello from Go on ServBay!\nHostname: %s\nPath: %s\n", hostname, r.URL.Path) } func main() { http.HandleFunc("/", handler) port := "8080" // 서비스가 리슨할 포트 정의 log.Printf("Go web server starting on port %s...", port) log.Printf("Access it at http://localhost:%s", port) // HTTP 서버 시작 err := http.ListenAndServe(":"+port, nil) if err != nil { log.Fatalf("Error starting server: %s\n", err) } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27위 코드는 로컬 8080 포트를 리슨하는 간단한 HTTP 서버입니다. 임의의 요청에 대해 "Hello from Go on ServBay!"와 호스트이름, 요청 경로를 포함해 반환합니다.
Go 앱 실행하기:
ServBay 터미널에서 프로젝트 폴더(/Applications/ServBay/www/go-servbay-demo
)에 위치한 채로 다음 명령어로 컴파일 및 실행하세요:bashgo run main.go
1실행에 성공하면 터미널에 다음과 비슷한 로그가 표시됩니다:
2024/05/20 15:00:00 Go web server starting on port 8080... 2024/05/20 15:00:00 Access it at http://localhost:8080
1
2앱 접속 확인:
웹 브라우저에서http://localhost:8080
을 열면 "Hello from Go on ServBay! Hostname: your-mac-hostname Path: /"와 같은 메시지가 보일 것입니다.
ServBay 사이트 설정으로 리버스 프록시 구성하기 (강력 추천)
단순히 localhost:8080
로 직접 접근도 가능하지만, 개발 편의성과 실제 서비스 환경 모방을 위해 더 기억하기 쉬운 도메인(go-app.servbay.demo
등)에 ServBay의 웹 서버(Caddy, Apache, Nginx) 리버스 프록시를 두는 것이 좋습니다. 이를 통해 표준 HTTP/HTTPS 포트로 Go 앱을 서비스하고, ServBay의 자동 HTTPS 및 다양한 통합기능도 함께 누릴 수 있습니다.
- ServBay에서 사이트 생성:
- ServBay GUI에서
사이트
로 이동합니다. 사이트 추가
버튼을 클릭하세요.- 도메인: 예:
go-app.servbay.demo
(원하는 도메인 입력) - 사이트 유형: 리버스 프록시 선택
- IP 주소:
127.0.0.1
입력 - 포트:
8080
입력
- ServBay GUI에서
설정 저장 및 적용:
ServBay GUI에서 사이트 설정을 저장하고, Caddy 또는 Nginx 웹 서버를 재시작 또는 재로드하여 변경 사항을 반영합니다.도메인으로 Go 앱 접속:
이제 브라우저에서https://go-app.servbay.demo
를 접속하면, ServBay의 웹 서버가 트래픽을 Go 앱으로 자동 프록시해 동작합니다.
Go 버전 관리
ServBay를 이용하면 다양한 Go 버전을 아주 쉽게 관리·전환할 수 있습니다.
- 버전 전환: ServBay GUI의
소프트웨어 패키지
->Go
에서 설치된 Go 버전을 모두 볼 수 있습니다. 왼쪽의설정
메뉴 오픈 후, 원하는 버전을 기본으로 지정 가능합니다. - 버전 확인: 전환 후 새로 터미널을 열어
go version
을 실행해 선택한 버전이 적용되었는지 확인하세요.
프로젝트별 Go 버전 관리: .servbay.config
사용
전역 수준 Go 버전 전환 외에도 ServBay는 각 프로젝트 폴더마다 버전을 맞춤 지정할 수 있는 .servbay.config
파일 기반 관리 기능을 제공합니다.
동작 방식
ServBay 통합 터미널에서 .servbay.config
파일이 있는 폴더로 이동(cd
)하면, ServBay가 자동으로 파일을 읽습니다. 파일 내(GO_VERSION
등) 설정에 따라 현재 터미널 세션의 메인 Go 버전이 임시로 바로 변경됩니다.
설정 파일 포맷
.servbay.config
는 단순한 텍스트(key-value) 파일이며, 원하는 Go 버전을 다음과 같이 지정할 수 있습니다:
ini
# .servbay.config 예시
# 이 프로젝트에 Go 1.22를 사용함을 명시
GO_VERSION=1.22
# 동시에 다른 개발툴 버전도 지정할 수 있음
# PHP_VERSION=8.3
# NODE_VERSION=20
# PYTHON_VERSION=3.11
# ... 기타 추가 설정 ...
# GOPROXY=https://goproxy.cn,direct
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
장점
- 자동 버전 전환: 전역 설정 변경 없이, 프로젝트 폴더 진입만으로 자동으로 해당 Go 버전을 활성화
- 프로젝트 간 격리: 각 프로젝트의 빌드·실행 환경을 분리, 버전 충돌 방지
- 협업 최적화:
.servbay.config
파일을 Git 등에 포함하면, 팀원도 동일한 Go 환경을 쉽게 재현
활용 예시
프로젝트 a는 Go 1.12, 프로젝트 b는 Go 1.22가 필요하다면, 각 루트에 다음처럼 세팅하면 됩니다:
/Applications/ServBay/www/project-a/.servbay.config
:iniGO_VERSION=1.12
1/Applications/ServBay/www/project-b/.servbay.config
:iniGO_VERSION=1.22
1
ServBay 터미널에서 각각의 폴더로 이동(cd /Applications/ServBay/www/project-a
등) 후 go version
을 실행하면 각기 다른 버전이 반영됩니다.
참고: .servbay.config
는 ServBay 환경의 기본 Go 버전을 제어합니다. 실제 프로젝트의 패키지 의존성 관리는 Go Modules(go.mod
파일)로 계속 권장됩니다.
자주 묻는 질문 (FAQ)
Q: ServBay 터미널에서
go
명령어가 'command not found' 에러를 뱉어요.A: 먼저, 터미널 환경이 ServBay의 PATH로 올바르게 세팅되어 있는지 확인하세요. 기본 패키지 설치(ServBay GUI의
소프트웨어 패키지
->Go
)와 기본 활성화도 완료되어야 합니다.Q: ServBay에서 Go를 최신으로 업데이트하려면 어떻게 하죠?
A: ServBay의
소프트웨어 패키지
->Go
에서 종종 최신 버전을 확인하세요. 새 버전이 추가되면 바로 클릭해 설치 후, GUI로 버전 전환하면 바로 사용 가능합니다.Q: Go Modules로 의존성 설치가 느리거나 네트워크 문제가 있어요.
A: Go Modules는 기본적으로
proxy.golang.org
를 사용합니다. 중국 본토 등 네트워크가 제한된 지역에서는 접근이 느릴 수 있습니다. GOPROXY 환경변수 설정을 참고하여https://goproxy.cn
또는https://goproxy.io
등 빠른 미러 주소를 써 보세요. ServBay 전역 설정이나 프로젝트별.servbay.config
에서GOPROXY=https://goproxy.cn,direct
같이 넣을 수 있습니다.Q: Go 웹 앱 실행 시 이미 포트가 사용중이란 에러(address already in use)가 뜹니다.
A: 해당 포트(예: 8080)가 이미 시스템 내 다른 프로세스에서 사용 중입니다. Go 코드에서 다른 미사용 포트(예: 8081, 9000 등)로 바꾸거나, 차지 중인 프로세스를 찾아 종료해야 합니다. macOS에서는
lsof -i :<포트번호>
(예:lsof -i :8080
)로 프로세스 ID(PID)를 찾고,kill <PID>
로 종료하세요.Q:
.servbay.config
와 전역 Go 버전 전환의 차이는? 무엇을 써야 할까요?A: 전역 설정(ServBay GUI)은 전체 시스템 기본 Go 버전을 변경합니다.
.servbay.config
는 특정 폴더 진입 시에만 임시로 해당 세션의 Go 버전을 전환합니다. 여러 프로젝트를 병행하거나, 프로젝트 별로 각기 다른 환경 격리를 원한다면.servbay.config
활용을 강력히 추천합니다. 전역 전환은 주로 가장 자주 쓰는 기본 버전 지정에 적합합니다.
요약
ServBay는 macOS에서 Go(Golang) 개발을 하는 엔지니어에게 매우 효율적이고 사용자 친화적인 로컬 개발환경을 제공합니다. 직관적인 GUI로 원하는 Go 버전의 설치·관리·전환이 손쉽고, 프로젝트별 버전 제어(.servbay.config)도 지원합니다. Go Modules 의존성 관리, 내장 웹서버의 리버스 프록시 사이트 연동까지 더해지면 Go 애플리케이션의 구축·운영·테스트가 빠르고 간단해집니다. ServBay를 통해 환경 세팅의 복잡함은 줄이고, Go 코딩과 혁신에 집중하세요.