Devin.KR

심화 · 전체 목차 공개

동시성과 서버 설계로 깊어지는 Go

제네릭·인터페이스 설계·오류 분류·파이프라인과 워커 풀·context 취소·race 검출·테스트와 퍼징·벤치마크와 pprof·net/http 서버 설계·JSON·slog 를 익히고 배달 주문 중계 API 를 만든다.

이 책을 읽기 전에

《작고 명확한 Go 프로그램》 수준의 Go 기본

공개 12/12장 · 목차 구성 2026-09-12

CONTENTS

목차

읽음 표시는 직접 선택하며 자동 완료되지 않습니다.

  1. 01
    제네릭 - 타입 매개변수와 제약

    타입 매개변수, any·comparable, 제약 인터페이스와 ~ 근사 타입, 제네릭 자료구조(큐), 제네릭을 쓰지 말아야 할 때

  2. 02
    인터페이스 설계 - 작게 받고 구체적으로 돌려주기

    소비자 쪽 인터페이스 정의, io.Reader·io.Writer 조합, 인터페이스 임베딩, nil 인터페이스와 nil 포인터 함정, 테스트 대역

  3. 03
    오류 설계 - 감싸고 분류하기

    fmt.Errorf %w, errors.Is·As·Join, 센티널 오류와 오류 타입 선택, panic·recover 를 쓰는 경계, 오류 메시지 작성 관례

  4. 04
    동시성 패턴 - 파이프라인·팬아웃·워커 풀

    채널 소유권 규칙, 파이프라인 단계 연결, 팬아웃·팬인, 크기 제한 워커 풀, 고루틴 누수 막기

  5. 05
    context 로 취소 전파하기

    WithCancel·WithTimeout·WithDeadline, 취소 신호를 받는 select, context 를 첫 인자로 넘기는 관례, 요청 범위 값의 올바른 쓰임

  6. 06
    경쟁 상태 잡기 - race 검출기와 동기화 도구

    go run -race, sync.Mutex·RWMutex, sync/atomic, sync.Once, 맵 동시 접근 오류, 잠금 범위 줄이기

  7. 07
    테스트 심화 - 표 주도·서브테스트·퍼징

    표 주도 테스트, t.Run 서브테스트·t.Parallel, httptest, t.Cleanup·t.TempDir, 퍼징(go test -fuzz) 입문. 완성 코드는 main.go 로 테스트 대상을 실행해 보이고 테스트 파일은 h3 로 따로 보여 준다

  8. 08
    벤치마크와 pprof - 측정하고 할당 줄이기

    testing.B 벤치마크, -benchmem 읽기, pprof CPU·메모리 프로파일, strings.Builder·사전 용량 할당, 탈출 분석(-gcflags=-m)

  9. 09
    net/http 서버 설계 - 라우팅·미들웨어·종료

    ServeMux 메서드·경로 패턴(Go 1.22+), 핸들러 함수와 미들웨어 체인, JSON 요청·응답 검증, 시간 제한 설정, http.Server.Shutdown 을 이용한 정상 종료

  10. 10
    encoding/json 깊이 보기 - 태그·사용자 정의 변환·스트리밍

    구조체 태그(omitempty·string), MarshalJSON·UnmarshalJSON 구현, json.Decoder 스트리밍과 DisallowUnknownFields, 숫자 정밀도(UseNumber), time.Time 직렬화

  11. 11
    운영 준비 - 구조화 로그와 설정

    log/slog 핸들러·속성·레벨, 요청 ID 를 로그에 싣기, 환경 변수·플래그 설정, 빌드 정보(debug.ReadBuildInfo), 헬스 체크 엔드포인트

  12. 12
    종합 실습 - 배달 주문 중계 API

    주문 접수·배차·상태 조회 API, 워커 풀 배차, context 시간 제한, 구조화 로그, httptest 로 시나리오 전체 실행

이 책은 Devin.KR 원고를 참조합니다. 원고의 원래 주소와 저작자 표기를 유지하며 같은 글을 다시 등록하지 않습니다. 수정된 원고는 읽기 화면에서 재검수 상태를 확인할 수 있습니다.

이 책·표지의 저작권 및 출처 관련 요청