서킷브레이커 사용 방식 개선하기 | 당근 SERVER 밋업 2회
당근 밋업 당근 · YouTube
AI 핵심 요약
Spring AOP의 서킷 브레이커 방식은 폴백 메서드 이름을 문자열로 지정해 컴파일 단계에서 오류를 찾기 어렵고, 일반 예외와 서킷 오픈 상황을 구분하기 번거로웠습니다. 이를 개선하기 위해 Spring Cloud CircuitBreaker를 감싼 Kotlin 함수형 API를 만들고, `Result`를 이용해 메인 로직 뒤에 폴백과 서킷 오픈 전용 처리를 체이닝하도록 구성했습니다. 구현 과정에서는 Kotlin 값 클래스가 Java 기반 Spring 응답 처리 경계를 지나며 예상과 다르게 표현되는 문제를 확인했고, 응답을 `Result`로 한 번 더 감싸 해결했습니다. 새 방식은 필요한 곳에 선택적으로 적용하고, 직접 만든 추상화의 유지보수 비용도 함께 고려해야 한다는 점을 공유했습니다.
- 폴백 메서드 이름을 문자열로 지정하면 오타를 컴파일 시점에 잡지 못하므로, 메인 로직과 폴백을 가까이 두는 API를 고려하세요.
- 서킷이 열린 상황과 일반 예외 상황을 구분하면, 장애 시에만 실행할 폴백 동작을 명확히 만들 수 있습니다.
- Kotlin의 `runCatching`과 `Result`를 활용하면 성공·실패 결과를 체이닝 가능한 형태로 다룰 수 있습니다.
- Kotlin 값 클래스는 Java 기반 Spring 경계를 통과할 때 런타임 표현이 달라질 수 있으므로, 프레임워크 연동 시 실제 전달되는 값을 확인하세요.
- 직접 만든 추상화는 유지보수 비용이 따르므로 기존 AOP 방식과 함께 필요한 곳에 선택적으로 적용하는 편이 좋습니다.
소개
당근의 성장과 함께 프로덕트를 만드는 과정에서 겪은 다양한 경험을 공유해요. 🥕 서킷브레이커 사용 방식 개선하기 (김광민/커뮤니티실) #kotlin #spring #circuitbreaker 🥕 당근 공고 살펴보기 : https://about.daangn.com/jobs/ 🥕 발표 자료 : https://daangn.notion.site/SERVER-5599a1755889426bafd4e87a0562e0b6 * 당근 Server 밋업 1회 다시보기 : https://youtube.com/playlist?list=PLaHcMRg2hoBr5s_jn5CzZrpkmHOY0N8w7&si=VRdpYyoT0bjZ3VOW
비슷한 학습 자료
컨퍼런스 당근 밋업
당근의 성장과 함께 프로덕트를 만드는 과정에서 겪은 다양한 경험을 공유해요. 🥕 이벤트 소싱을 활용해 확장 가능한 사내 플랫폼 만들기 (원지혁/UX 시스템실) #nodejs #audit #accesscontrol #webhook #eventsoucing 🥕 당근 공고 살펴보기 : https://about.daangn.com/jobs/ 🥕 발표 자료 : https://daangn.notion.site/SERVER-5599a1755889426bafd4e87a0562e0b6 * 당근 Server 밋업 1회 다시보기 : https://youtube.com/playlist?list=PLaHcMRg2hoBr5s_jn5CzZrpkmHOY0N8w7&si=VRdpYyoT0bjZ3VOW
백엔드
컨퍼런스 당근 밋업
당근의 성장과 함께 프로덕트를 만드는 과정에서 겪은 다양한 경험을 공유해요. 🥕 JavaScript 생태계를 이용해서 신사업 제품의 서버 개발하기 (김경덕/버티컬 사업실) #javascript #nodejs 🥕 당근 공고 살펴보기 : https://about.daangn.com/jobs/ 🥕 발표 자료 : https://daangn.notion.site/SERVER-5599a1755889426bafd4e87a0562e0b6 * 당근 Server 밋업 1회 다시보기 : https://youtube.com/playlist?list=PLaHcMRg2hoBr5s_jn5CzZrpkmHOY0N8w7&si=VRdpYyoT0bjZ3VOW
백엔드 프로그래밍 언어
컨퍼런스 당근 밋업
당근의 성장과 함께 프로덕트를 만드는 과정에서 겪은 다양한 경험을 공유해요. 🥕 한 달 동안 만든 서비스, 일 년 반 만에 전국 오픈하기 (육진혁/커뮤니티실) #kotlin #spring 🥕 당근 공고 살펴보기 : https://about.daangn.com/jobs/ 🥕 발표 자료 : https://daangn.notion.site/SERVER-5599a1755889426bafd4e87a0562e0b6 * 당근 Server 밋업 1회 다시보기 : https://youtube.com/playlist?list=PLaHcMRg2hoBr5s_jn5CzZrpkmHOY0N8w7&si=VRdpYyoT0bjZ3VOW
백엔드 프로그래밍 언어
컨퍼런스 당근 밋업
당근의 성장과 함께 프로덕트를 만드는 과정에서 겪은 다양한 경험을 공유해요. 🥕 모놀로틱 레거시 레포 개발자가 디컴프 과정을 겪으면서 느낀 심경의 변화 (이경원/중고거래실) #rubyonrails #system_decomposition #career 🥕 당근 공고 살펴보기 : https://about.daangn.com/jobs/ 🥕 발표 자료 : https://daangn.notion.site/SERVER-5599a1755889426bafd4e87a0562e0b6 * 당근 Server 밋업 1회 다시보기 : https://youtube.com/playlist?list=PLaHcMRg2hoBr5s_jn5CzZrpkmHOY0N8w7&si=VRdpYyoT0bjZ3VOW
개발 · 프로그래밍 기타
컨퍼런스 당근 밋업
당근페이 금융 거래 통합 테스트 개발 이야기 | 당근 SERVER 밋업 2회
컨퍼런스 당근 밋업
당근의 성장과 함께 프로덕트를 만드는 과정에서 겪은 다양한 경험을 공유해요. 🥕 당근페이 금융 거래 통합 테스트 개발 이야기 (유호성/당근페이) #kotlin #testing 🥕 당근 공고 살펴보기 : https://about.daangn.com/jobs/ 🥕 발표 자료 : https://daangn.notion.site/SERVER-5599a1755889426bafd4e87a0562e0b6 * 당근 Server 밋업 1회 다시보기 : https://youtube.com/playlist?list=PLaHcMRg2hoBr5s_jn5CzZrpkmHOY0N8w7&si=VRdpYyoT0bjZ3VOW
소프트웨어 테스트
컨퍼런스 당근 밋업