Go HTTP 서버의 Graceful Shutdown
signal.NotifyContext와 http.Server.Shutdown으로 Go HTTP 서버를 안전하게 종료하고, 타임아웃·WebSocket·부수 리소스·Kubernetes 처리
signal.NotifyContext와 http.Server.Shutdown으로 Go HTTP 서버를 안전하게 종료하고, 타임아웃·WebSocket·부수 리소스·Kubernetes 처리
encoding/json 패키지의 Marshal/Unmarshal, struct tag, Encoder/Decoder부터 커스텀 타입, 테스트, 그리고 일반적인 오류까지 완벽하게 다루는 가이드입니다.
Go에서 channel, sync.WaitGroup, context, errgroup을 사용하여 제한된 동시성, 취소, 테스트가 가능한 worker pool을 구축하는 방법
Go는 상속을 지원하지 않습니다. 이 글은 struct embedding, method가 승격되는 방식, method 오버라이딩의 함정, 그리고 embedding을 interface와 결합하는 방법을 설명합니다.
Go의 defer, panic, recover 메커니즘을 이해하고, 자주 마주치는 함정과 언제 error를 반환해야 하는지 알아봅시다.
Go 애플리케이션에서 pprof를 사용하여 CPU, heap, goroutine, block, mutex 프로필을 수집하고 읽는 방법을 설명합니다. HTTP 서비스부터 벤치마크까지 다룹니다.
Go의 Map이 어떻게 작동하는지, "concurrent map writes" 오류로 프로그램이 충돌하는 이유, 그리고 sync.Mutex, sync.RWMutex, sync.Map으로 해결하는 방법을 배워봅시다.
Slice가 underlying array를 공유하는 방식, len과 cap의 역할, 그리고 append 사용 시 발생할 수 있는 데이터 덮어쓰기 오류를 피하는 방법을 이해합니다.
Go modules를 사용하여 프로젝트 초기화, 의존성 추가 및 업그레이드, major version 처리, replace, go.work 및 비공개 모듈을 다루는 가이드.
Go에서 slice struct, t.Run, 에러 확인, 병렬 실행, go-cmp를 사용한 struct 비교를 포함하여 table-driven test를 작성하고 자주 발생하는 오류를 다룹니다.
sync.WaitGroup으로 goroutine 대기, sync.Mutex로 data race 방지, errgroup으로 오류 수집 및 context로 취소하고 goroutine 수 제한
Go 1.22의 ServeMux를 사용해 method를 매칭하고, path 파라미터를 읽으며, JSON을 반환합니다. 제3의 라우터 없이 완전한 REST API를 얻을 수 있습니다.
Order, Customer, Stack, Cache 예제로 Go의 type parameter, constraint, ~ 표기법, generic 타입을 배웁니다.
%w로 에러 래핑, errors.Is로 래핑 체인을 통한 에러 검사, errors.As로 커스텀 에러 추출, errors.Join으로 에러 결합, 그리고 일반적인 실수들
Go의 Interface는 암묵적으로 만족됩니다. 이 글은 interface를 작게 유지하고, 사용하는 쪽에 선언하고, fake로 테스트하며, nil interface 오류를 피하는 방법을 안내합니다.
Goroutine leak은 충돌 없이 조용히 시간이 지나면서 RAM을 소비합니다. 이 글은 일반적인 원인, 발견 방법, 그리고 완벽한 해결책을 제시합니다.
Go의 context.Context를 사용하여 timeout, deadline, goroutine cancel 및 request-scoped 값을 안전하게 전달하는 방법을 알아봅시다.
고루틴과 채널을 통해 Go의 동시성 처리 방식을 배워봅시다. 기초부터 WaitGroup, select, context 같은 실전 패턴까지 다룹니다.