뱅크샐러드의 Go 코딩 컨벤션, 지금 바로 확인하세요!

by DD
2년 전
조회수 12

뱅크샐러드에서 지난 4년간 Go와 gRPC를 활용하며 쌓아온 코딩 컨벤션을 공개함

Panic safe goroutine, 에러 핸들링 등 더 나은 코드 작성을 위한 프랙티스를 소개함

HTTP client 설정, Slice 선언 등 성능 개선을 위한 팁과 프로젝트 구조를 제시함

Panic 안전성 확보

프로덕션 환경에서 panic 발생을 최소화하기 위해, 뱅크샐러드는 recovery 체인을 추가하고, `must` 접두사를 붙인 함수를 사용한다. 구체적으로, PanicSafeGroup을 활용하여 고루틴 내에서 발생할 수 있는 panic을 안전하게 처리하고, 에러를 수집한다.

효율적인 에러 핸들링

뱅크샐러드는 에러 스택트레이스를 로깅하고, sentinel 에러를 적절히 활용하여 에러를 관리한다. errors.Wraperrors.WithStack을 사용하여 에러를 감싸고, 에러 네이밍 컨벤션을 준수한다. 따라서, 디버깅문제 해결에 필요한 정보를 효과적으로 제공한다.

성능 향상을 위한 팁

뱅크샐러드는 HTTP client 설정을 최적화하고, slice 선언 시 `len`과 `cap`을 설정하여 성능을 개선한다. HTTP connection 재사용을 위해 response body를 drain하고 닫는 것을 권장한다. 결과적으로, 메모리 사용량 감소응답 속도 향상을 기대할 수 있다.

뱅크샐러드 Go 코딩 컨벤션