Skip to content

Commit 0f0f7fb

Browse files
committed
Update Tech Post "Spring Boot, Kotlin 함수형으로 안전하게 서킷 브레이커 구현하기"
1 parent 671a09e commit 0f0f7fb

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

_posts/2025-12-06-spring-boot-kotlin-circuit-breaker.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,11 @@ class CircuitAnnotationController() {
281281
- 같은 클래스의 내부 메서드 호출 불가능
282282
- Spring AOP는 프록시 패턴으로 동작하므로, 같은 클래스 내부의 메서드를 호출(this.method)할 때는 서킷 브레이커가 동작하지 않습니다.
283283

284-
### 해결 방안: 함수형 스타일로 개선하기
284+
## 해결 방안: 함수형 스타일로 개선하기
285285

286286
위의 문제들을 해결하기 위해, Kotlin의 함수형 프로그래밍 스타일을 도입하여 구조를 개선해보겠습니다.
287287

288-
#### 핵심 인터페이스 및 구현체
288+
### 핵심 인터페이스 및 구현체
289289

290290
> CircuitBreaker.kt
291291

@@ -381,7 +381,7 @@ public value class Result<out T> @PublishedApi internal constructor(
381381
- 컴파일러가 가능한 경우 래퍼 객체를 생성하지 않고 내부의 값을 직접 사용하도록 최적화합니다.
382382
- 덕분에 서킷 브레이커처럼 빈번하게 호출되는 로직에서도 GC 부담을 줄이고 높은 성능을 유지할 수 있습니다.
383383

384-
#### 유틸리티 확장 함수로 정의하기
384+
### 유틸리티 확장 함수로 정의하기
385385

386386
이제 Result 타입을 더욱 유용하게 다루기 위한 확장 함수를 정의합니다.
387387

@@ -418,7 +418,7 @@ class CircuitOpenException(message: String = "Circuit breaker is open") : Runtim
418418

419419
- CircuitOpenException: 라이브러리 종속적인 예외(CallNotPermittedException)를 대신할 커스텀 예외입니다.
420420

421-
#### 개선된 Controller
421+
### 개선된 Controller
422422

423423
최종적으로 아래와 같이 Controller 클래스를 개선할 수 있습니다.
424424

@@ -458,7 +458,7 @@ class CircuitUtilController(
458458
- 함수의 마지막 매개변수가 람다인 경우, 해당 람다식을 소괄호 바깥으로 뺄 수 있습니다.
459459
- 즉, circuitBreaker.run("name", { ... }) 라고 써야 할 것을, 후행 람다 덕분에 더 직관적으로 표현한 것입니다.
460460

461-
### 테스트로 검증해보기
461+
## 테스트로 검증해보기
462462

463463
마지막으로, 제가 만든 구조가 의도대로 동작하는지 검증해보겠습니다.
464464

0 commit comments

Comments
 (0)