Go (Golang) 사용하기
개요
Go(일반적으로 Golang으로도 불림)는 Google에서 설계하고 오픈 소스로 공개한 정적 타입의 컴파일형 프로그래밍 언어입니다. 간결한 문법, 매우 빠른 컴파일 속도, 가벼운 goroutine과 channel 기반의 강력한 동시성 처리, 효율적인 내장형 가비지 컬렉션 등으로 개발자들에게 사랑받고 있습니다. Go는 고성능 네트워크 서비스, 분산 시스템, 마이크로서비스, 명령행 도구 개발에 특히 강점을 보이며, 현대 클라우드 네이티브 및 백엔드 개발에 주요 선택지 중 하나로 자리 잡았습니다.
ServBay의 Go 지원
ServBay는 macOS와 Windows를 모두 지원하는 올인원 로컬 웹 개발 환경으로, Go 개발자에게 매우 강력하고 매끄러운 환경을 제공합니다. ServBay를 사용하면 복잡한 환경 변수(GOROOT, GOPATH) 설정 없이, 다양한 Go 버전을 쉽고 빠르게 설치・관리・전환할 수 있어, Go 개발 환경의 초기화와 유지 관리가 크게 간소화됩니다.
ServBay는 완전한 Go 툴체인과 광범위한 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 Modules 사용을 권장합니다. 이는 Go 공식적으로 1.11부터 도입된 표준 패키지 관리 방안입니다. ServBay 내 터미널에서 go mod 명령(go mod init, go get, go mod tidy 등)을 바로 활용할 수 있으며, 기존 $GOPATH 설정을 신경 쓸 필요는 없습니다.
사전 준비 사항
- macOS에 ServBay를 정상적으로 설치하고 실행 중임
- Go 언어 기본 프로그래밍 지식 보유
- 터미널에서 기본 명령어 사용에 익숙함
Go 설치 방법
ServBay의 직관적인 GUI 패널을 통해 Go 개발 환경을 손쉽게 설치할 수 있습니다:
- ServBay 애플리케이션을 실행합니다.
- 왼쪽 내비게이션 바에서
패키지를 클릭합니다. - 펼쳐진 패키지 목록에서
Go카테고리를 찾습니다. Go를 클릭하여 하위 목록을 펼칩니다. ServBay에서 지원하는 여러 Go 버전을 확인할 수 있습니다.- 원하는 Go 버전을 선택(보통 최신 안정 버전인 Go 1.24를 추천)하고, 해당 버전 옆의
설치버튼을 클릭합니다. - ServBay가 자동으로 선택한 Go 버전을 다운로드하고 설치합니다. 설치 시간은 인터넷 속도에 따라 달라질 수 있습니다.

설치가 완료되면 해당 버전이 '설치됨' 표시로 바뀌며, 필요할 경우 추가 버전 설치 및 버전 전환도 가능합니다.
Go 사용하기
Go 설치 후, 바로 OS 터미널에서 go 명령어를 사용할 수 있습니다.
Go가 정상적으로 설치되었는지 및 현재 활성화된 버전을 확인하려면 아래 명령어를 실행하세요:
bash
go version1
다음과 같은 출력이 나오면, ServBay를 통해 Go가 정상적으로 설치된 것입니다:
go version go1.24.1 darwin/arm641
간단한 Go 웹 애플리케이션 빌드 및 실행
이제 기초적인 Go HTTP 서버를 만들어, ServBay 환경에서 컴파일하고 실행해보겠습니다.
프로젝트 디렉터리 생성: ServBay의 기본 웹 루트 디렉터리인
/Applications/ServBay/www경로 아래에 새로운 Go 프로젝트 폴더를 생성하는 것을 추천합니다. 예시로go-servbay-demo폴더를 생성합니다.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo1
2
3Go Modules 초기화: 프로젝트 루트(
go-servbay-demo)에서go mod init명령으로 Go Modules를 초기화합니다. 일반적으로 모듈 경로는 코드 저장소나 프로젝트를 대표하는 고유 식별자를 씁니다. 여기서는 폴더명을 예시로 사용합니다.bashgo mod init go-servbay-demo1이 명령으로, 프로젝트 폴더에
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.go1실행이 성공하면, 다음과 같은 로그를 확인할 수 있습니다:
2024/05/20 15:00:00 Go web server starting on port 8080... 2024/05/20 15:00:00 Access it at http://localhost:80801
2브라우저로 접속: 웹 브라우저를 열고
http://localhost:8080에 접속하면, "Hello from Go on ServBay! Hostname: your-mac-hostname Path: /"와 같이 응답이 표시됩니다.
ServBay 웹사이트 설정을 통한 리버스 프록시 사용 (강력 추천)
8080 포트를 직접 사용해도 되지만, 실무 환경과 유사하게 ServBay의 웹 서버(Caddy, Apache 또는 Nginx)를 통해 리버스 프록시와 별도의 도메인(go-app.servbay.demo 등)을 사용하는 것이 훨씬 효과적입니다. 이로써 표준 HTTP/HTTPS 포트로 접속이 가능하고, ServBay의 자동 HTTPS/여러 서비스 연동 등 추가 기능을 쉽게 활용할 수 있습니다.
- ServBay에서 사이트 생성:
- ServBay GUI를 열고,
웹사이트섹션으로 이동합니다. 새 웹사이트 추가버튼 클릭- 도메인: 원하는 로컬 개발 도메인 입력, 예시
go-app.servbay.demo - 사이트 유형: 리버스 프록시 선택
- IP 주소:
127.0.0.1입력 - 포트:
8080입력
- ServBay GUI를 열고,

설정 저장 및 서버 재시작: ServBay GUI에서 설정을 저장한 후, 해당 웹 서버(Caddy 또는 Nginx)를 재시작하거나 재로드하여 새 설정을 적용하세요.
도메인으로 앱 접근: 이제 브라우저에서
https://go-app.servbay.demo에 접속하면, Go 서버에 프록시되어 동작하는 웹 애플리케이션을 확인할 수 있습니다.

Go 버전 관리
ServBay에서는 다양한 Go 버전을 매우 손쉽게 전환 및 관리할 수 있습니다.
- 버전 전환: ServBay GUI의
패키지->Go메뉴에서 설치된 Go 버전 목록이 표시됩니다. 왼쪽 메뉴의설정에서 한 버전을 기본값으로 지정할 수 있습니다. - 변경 확인: 버전 전환 후 터미널을 새로 열고
go version을 실행하여, 선택한 버전이 제대로 적용되었는지 확인하세요.
.servbay.config로 프로젝트별 Go 버전 관리
전역 Go 버전 뿐만 아니라, ServBay는 프로젝트 루트에 .servbay.config 파일을 두어, 프로젝트별로 Go 버전을 세밀하게 관리하는 기능을 제공합니다.
동작 방식:
ServBay 통합 터미널에서 cd로 .servbay.config 파일이 위치한 디렉터리로 이동하면, 해당 파일을 자동 인식해 설정을 읽습니다. 이때 GO_VERSION 값에 따라 현재 터미널 세션에서 임시로 해당 Go 버전을 사용하도록 환경을 변경합니다.
설정 파일 형식:
.servbay.config는 매우 간단한 키=값 구조의 텍스트 파일입니다. 프로젝트별 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,direct1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
장점:
- 자동 버전 전환: 전역 설정 변경 없이, 프로젝트 디렉터리 진입만으로 지정 버전 자동 적용
- 프로젝트 격리: 각 프로젝트별로 예측 가능한 환경에서 빌드・실행 가능, 버전 충돌 방지
- 팀 협업:
.servbay.config를 Git 등 버전 관리에 포함하면, 복제 시 팀원이 동일한 Go 베이스 환경을 쉽게 맞출 수 있음
사용 사례:
예를 들어, 두 가지 프로젝트의 요구가 서로 다를 때
project-a→ Go 1.12 필요project-b→ 최신 Go 1.22 필요
각 프로젝트 루트에 각각 아래와 같이 .servbay.config를 만들면 됩니다:
/Applications/ServBay/www/project-a/.servbay.config:iniGO_VERSION=1.121/Applications/ServBay/www/project-b/.servbay.config:iniGO_VERSION=1.221
ServBay 터미널에서 각각의 프로젝트 폴더로 이동 후 go version 실행 시, 해당 프로젝트에 맞는 Go 버전이 자동 활성화됩니다.

참고: .servbay.config는 ServBay 인식용 베이스 Go 버전만 변경합니다. 의존성/패키지 관리에는 항상 Go Modules(go.mod 파일) 사용을 권장합니다.
자주 묻는 질문 (FAQ)
Q: ServBay 터미널에서
go명령 실행 시 "command not found" 오류가 납니다.A: 먼저 터미널의 PATH 환경변수가 ServBay 기준으로 제대로 설정되어 있는지 확인하세요. 그리고 ServBay GUI의
패키지->Go에서 적어도 하나의 Go 버전이 설치되어 있고, 기본값으로 활성화된 버전이 있는지도 점검해야 합니다.Q: ServBay에서 Go를 최신 버전으로 업데이트하려면 어떻게 해야 하나요?
A: 정기적으로 ServBay의
패키지->Go메뉴를 확인하세요. 새로운 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 웹앱 실행 시 "port already in use" 에러가 발생합니다.
A: 해당 포트(예: 8080)가 이미 다른 프로세스에서 사용 중임을 의미합니다. Go 코드의 리스닝 포트를 변경(예: 8081, 9000 등)하거나, 해당 포트를 점유 중인 프로세스를 찾아서 종료해야 합니다. macOS에서는
lsof -i :<포트번호>(예:lsof -i :8080)로 PID를 찾은 뒤,kill <PID>명령으로 종료할 수 있습니다.Q:
.servbay.config와 전역 Go 버전 전환의 차이점은? 무엇을 언제 써야 하나요?A: GUI에서의 전역 전환은 시스템 전체 디폴트 Go 버전을 바꿉니다. 반면
.servbay.config는 프로젝트 폴더에 들어갈 때만 해당 세션의 Go 버전을 임시로 바꿉니다. 프로젝트별 버전 요구사항이 있을 땐.servbay.config사용을 적극 권장합니다. 특히 여러 프로젝트를 병행하거나, 각기 다른 Go 버전이 필요한 팀 협업 시 환경 통제와 재현성이 최고입니다. 자주 활용하는 기본 버전 지정에는 전역 설정이 효과적입니다.
요약
ServBay는 macOS에서 Go(Golang) 개발을 위한 최고의 로컬 환경을 제공합니다. 직관적인 GUI 덕분에 여러 버전의 Go 설치・관리와 .servbay.config를 통한 프로젝트별 버전 제어가 간단합니다. Go Modules 기반 의존성 관리, 내장 웹서버의 리버스 프록시/앱 호스팅 기능과 결합해, Go 프로젝트를 빠르게 구축・실행・테스트할 수 있습니다. ServBay는 환경 설정의 복잡함을 극적으로 줄여, 개발자가 Go 코드 작성과 혁신에만 집중할 수 있도록 돕습니다.
