LabHub

Go 로 서버 만들기 · 에러를 값으로 다룬다 · 실습

표준 라이브러리만으로 서버를 만든다

LabHub 에서 이어서 보기

목표

표준 라이브러리만으로 HTTP 서버를 만들면서 Go 가 무엇을 강제하는지 봅니다.
프레임워크를 고르기 전에 net/http 가 이미 무엇을 주는지 확인합니다.

왜 중요한가

Go 를 처음 쓰는 사람은 if err != nil 이 지겹다고 말합니다. 그런데 그 길이는
비용이 아니라 명시성의 가격입니다 — 어느 줄이 실패할 수 있는지가 타입에
적혀 있고, 무시하려면 무시한다고 적어야 합니다.

이 실습에서는 그 대가와 이득을 둘 다 만져 봅니다. 그리고 Go 에서 실제로
사고가 나는 자리(고루틴 누수, 취소 미전파)를 직접 만들어 봅니다.

환경

네트워크가 없어 go get 은 동작하지 않습니다. 이 실습은 표준 라이브러리만
쓰므로 상관없습니다 — 오히려 그게 이 코스의 논점입니다.

go mod init <이름>     모듈 시작go build -o srv .      빌드go vet ./...           흔한 실수 찾기gofmt -l .             포맷이 어긋난 파일 나열

단계

1. 모듈 초기화 → /root/work/gosrv/go.mod
2. /health 서버
3. 에러를 값으로 (%w 로 감싸기)
4. errors.Is/As/root/work/gosrv/04-errors.txt
5. JSON 응답 → /root/work/gosrv/05-json.txt
6. context 로 취소 전파 → /root/work/gosrv/06-ctx.txt
7. 고루틴 누수 → /root/work/gosrv/07-leak.txt
8. go vet / gofmt/root/work/gosrv/08-vet.txt

참고

단계 8개

  1. 모듈을 만든다
  2. HTTP 서버 한 개
  3. 에러를 값으로 돌려준다
  4. 원인을 물어본다
  5. JSON 을 돌려준다
  6. 취소를 전파한다
  7. 고루틴이 새는 것을 본다
  8. 도구에게 먼저 물어본다