뱅
뱅크샐러드
February 27, 20201회
프로덕션 환경에서 사용하는 golang과 gRPC

간단 소개
뱅크샐러드의 gRPC 도입 및 활용 경험 공유: protobuf 기반 API 관리, 기존 서비스 호환성 확보, 옵저버빌리티 구축 노하우.
AI Summary
- gRPC 도입 배경 및 장점
- 뱅크샐러드는 마이크로서비스 환경에서 REST API의 한계를 느끼고 gRPC를 도입, protobuf를 API 정의의 source of truth로 활용하고자 했습니다.
- API 문서 노후화 문제를 해결하고 API 명세의 정합성을 확보하여 개발 효율성을 높였습니다.
- gRPC 활용을 위한 주요 고려 사항
- protobuf 명세 관리: 중앙 집중식 IDL 리포지토리를 구축하여 관리 효율성을 높이고, 다양한 언어 지원을 위한 코드 생성 파이프라인을 구축했습니다.
- 기존 서비스와의 호환성: grpc-gateway를 활용하여 JSON 통신을 지원, 기존 REST API 기반 서비스와의 호환성을 확보했습니다.
- 옵저버빌리티 확보: logrus를 이용한 구조화된 로깅, statsd를 이용한 메트릭 수집을 통해 서비스 운영의 안정성을 높였습니다.
- gRPC 서비스 운영 노하우
- golang client를 제공하여 기존 서비스에서 gRPC 서비스를 쉽게 호출할 수 있도록 지원하고, httptest를 활용하여 client 코드의 테스트 용이성을 확보했습니다.
- go-banksalad 리포지토리에 유용한 middleware를 정의하여 서비스 간 호출을 간편하게 하고, 커스텀 헤더를 효율적으로 관리했습니다.
- stacktrace 로깅을 통해 장애 발생 시 문제 해결에 필요한 맥락 정보를 제공하고, telegraf를 이용한 statsd 메트릭 수집으로 서비스 성능을 모니터링했습니다.
Next Feeds

잘못 작성된 람다 코드를 삭제하기까지의 여정
가독성이 떨어지는 람다 코드를 리팩토링하여 가독성을 높이고 유지보수성을 개선한 경험 공유.
람다식리팩토링가독성Optional레거시 코드
2020. 2. 26.
컬리

폐쇄망 환경의 배포 시스템 개발기
뱅크샐러드가 폐쇄망 환경에서 안정적인 서비스 운영을 위해 자체 배포 시스템 'Alice'를 개발한 과정과 기술적 고민을 담고 있습니다.
폐쇄망배포 시스템DockerCanary 배포drone.io
2020. 2. 25.
뱅크샐러드

BDD로 테스트에 중독되어 보자
컬리 기술팀이 BDD를 도입하여 적립금 만료일 계산기 기능을 구현하고, BDD의 장점을 경험하며 지속적인 실험을 계획하는 과정을 소개한다.
BDD테스트컬리페어 프로그래밍몹 프로그래밍
2020. 2. 23.
컬리

테스트 코드, 안드로이드에서는 어떻게 작성해야 할까?
뱅크샐러드 안드로이드 팀의 테스트 코드 작성 전략과 사각지대 극복 방안을 소개하고, 테스트 코드 작성 문화의 중요성을 강조합니다.
테스트 코드안드로이드MVP 패턴Clean ArchitectureInstrumented Test
2020. 2. 20.
뱅크샐러드

들어는 보았나 몹 프로그래밍!
컬리 개발팀의 몹 프로그래밍 경험 공유: 몹 프로그래밍 정의, 적용 사례, 효과, 장단점 분석 및 컬리 채용 안내.
몹 프로그래밍컬리애자일코드 품질팀 협업
2020. 2. 17.
컬리

기술 블로그를 다시 디자인하며
컬리 기술 블로그 재정비를 통해 개발 문화 활성화 및 개발자 채용을 도모하고, 톱니바퀴가 아닌 축구 선수 같은 스타트업 문화를 강조한다.
기술 블로그코드 리뷰개발 문화채용스타트업
2020. 2. 10.
컬리