AI Briefing

뱅크샐러드, Go 코딩 컨벤션 공개… panic 방지와 에러 처리 원칙 제시

·2023.09.06 09:00

핵심 내용

뱅크샐러드가 Go 서비스 개발 경험을 바탕으로 panic 방지, 에러 처리, slice/map 사용 등 코딩 컨벤션을 공개했다.

자세히 보기

뱅크샐러드 코어 백엔드 팀은 지난 4년간 Go와 gRPC를 활용한 서비스 개발 경험을 바탕으로 조직 차원의 코딩 컨벤션을 정의했다. Go는 진입 장벽이 낮지만 오용을 방지하기 위해 golangci-lint 등 린트 도구를 활용해 개념적 일관성을 유지하는 것이 핵심이다.

Panic과 에러 처리 원칙

프로덕션 런타임에서는 panic을 예외 처리 용도로 사용하지 않고, 초기화 시점의 fail-fast 용도로만 제한한다. 의도치 않은 panic을 대비해 서버 인터셉터나 미들웨어에 recovery 체인을 추가하며, 핸들러 내부에서 생성된 고루틴의 안전성을 위해 PanicSafeGroup 구조체를 구현해 사용한다. 에러 처리 시에는 errors.WithStack 등을 활용해 스택 트레이스를 보존하고, defer 구문 내 에러는 무시하지 않고 로깅하도록 권장한다.

데이터 구조 및 문자열 처리

Slice와 Map 사용 시 nil slice를 권장하며, 빈 값 판단은 len() 함수를 사용한다. Map 순회 시 Go가 순서를 보장하지 않으므로, 결과의 안정성을 위해 sort를 적용하거나 순회 자체를 피하는 방식을 택한다. 문자열 순회 시 바이트 단위 접근으로 인한 오류를 방지하기 위해 for i, rune := range s 방식을 사용하며, 글자 수 확인에는 utf8.RuneCountInString을 활용한다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.