Spring Microservice(101)
-
ThreadLocal and Resilience4j
🚦 Resilience4j로 Rate Limiter 패턴 완벽히 구현하기 (with Spring Cloud)마이크로서비스 환경에서 서비스의 안정성과 가용성을 유지하는 핵심 전략 중 하나가 바로 속도 제한(Rate Limiting)입니다. 속도 제한은 일정 시간 내 처리 가능한 요청의 수를 제한해, 서비스가 과부하되는 것을 막습니다.오늘은 Resilience4j 라이브러리를 이용한 Rate Limiter 패턴의 구현 방법을 소개합니다. 🔍🚀 ✅ 1. Rate Limiter 패턴이란?Rate Limiter 패턴은 지정된 시간 동안 서비스에 들어오는 요청 수를 제한하여, 과부하를 방지하는 설계 기법입니다.📌 AtomicRateLimiter (디폴트) 별도의 백그라운드 스레드를 추가하지 않고, 해당 요..
2025.03.16 -
Implementing the rate limiter pattern
🚀 [Spring Cloud + Resilience4j] Rate Limiter(속도 제한) 패턴 가이드 (서비스 과부하 방지하기)지난 포스팅에서 우리는 Resilience4j의 Circuit Breaker, Retry, Bulkhead, Fallback 패턴을 깊이 있게 다뤘습니다. 이번 포스팅에서는 서비스의 호출 속도를 제한하여 과부하를 방지할 수 있는 Rate Limiter(속도 제한) 패턴에 대해 자세히 알아보겠습니다! 📌✨ ⏱️ Rate Limiter 패턴이란 무엇인가?Rate Limiter 패턴은 지정된 시간 내 서비스가 처리할 수 있는 요청 수를 제한하는 방식입니다. 이를 통해 API가 갑작스러운 트래픽 증가로 인해 과부하 상태가 되거나 서비스 장애가 발생하지 않도록 보호할 수 있습니다...
2025.03.16 -
Implementing the retry pattern
🚀 [Spring Cloud + Resilience4j] Retry 패턴 완벽 가이드 (실패한 호출을 다시 시도하기)지난 포스팅에서는 Resilience4j의 Circuit Breaker, Bulkhead, Fallback 패턴을 깊이 있게 다뤘습니다. 이번에는 네트워크 문제나 일시적인 장애 시 서비스 호출을 다시 시도하는 Retry(재시도) 패턴에 대해 명확히 알아보겠습니다. 🔄 Retry(재시도) 패턴이란?Retry 패턴은 이름 그대로, 원격 서비스 호출에 실패했을 때 일정한 간격을 두고 여러 번 다시 시도하도록 설정하여 일시적인 장애(예: 네트워크 문제)를 극복하는 방식입니다.Retry 패턴의 핵심은 다음과 같습니다.💡 서비스 호출이 실패했을 때, 즉시 에러를 반환하지 않고 지정한 횟수만큼 재..
2025.03.16 -
99 퍼센타일(percentile)
🔍 99 퍼센타일(percentile)이란 무엇인가요?"99 퍼센타일"은 통계학에서 자주 사용되는 개념으로,측정된 전체 값 중에서 하위 99%에 해당하는 값 이하를 의미합니다.다시 말해, 전체 요청 중 99%는 이 시간 이하로 응답이 완료된다는 것을 의미합니다.예를 들어:웹 서비스 요청의 99 퍼센타일 지연 시간이 200ms라면,👉 전체 요청의 99%는 200ms 이하로 처리되고, 오직 상위 1%만 200ms보다 더 오래 걸렸다는 뜻입니다. 📌 위 공식에서 사용된 의미는?앞서 제공된 공식:(서비스가 정상일 때 피크 시간당 초당 요청 수 * 초당 99번째 percentile 지연 시간) + 오버헤드를 위한 소량의 추가 스레드여기서 "99퍼센트 타일 지연시간"이 의미하는 바는,👉 "최악의 상황(가장 ..
2025.03.16 -
Implementing the bulkhead pattern
🚀 [Spring Cloud + Resilience4j] Bulkhead 패턴 가이드 (Semaphore vs Thread Pool)지난번 포스팅에서는 Resilience4j의 서킷 브레이커와 폴백 패턴을 다뤘습니다. 이번에는 시스템의 자원을 안전하게 보호하고 효율적으로 관리할 수 있는 Bulkhead(격벽) 패턴을 심층적으로 알아보겠습니다. 📌 Bulkhead 패턴이란 무엇인가요?Bulkhead(격벽) 패턴은 배의 선체가 여러 격실로 나뉘어 침수가 배 전체로 퍼지지 않도록 막는 원리에서 착안되었습니다.소프트웨어에서도 비슷한 원리를 적용하여, 하나의 서비스가 장애를 일으킬 때 해당 장애가 다른 서비스 호출까지 영향을 미치지 않도록 요청을 격리하는 방식입니다. 🔑 Bulkhead 패턴의 두 가지 방식..
2025.03.16 -
Fallback processing
🚩[Resilience4j] 폴백(Fallback) 메커니즘 제대로 이해하고 활용하기 (feat. @CircuitBreaker와 fallbackMethod 속성 활용하기)지난 포스팅에서는 Resilience4j의 서킷 브레이커 패턴을 구현하고 설정하는 방법을 알아보았습니다. 이번에는 Resilience4j의 또 다른 강력한 기능인 폴백(Fallback) 처리에 대해 깊이 있게 살펴보겠습니다. 🔄 Fallback 패턴이란?Fallback(폴백) 은 원격 서비스 호출이 실패하거나 예외 상황이 발생했을 때, 즉시 에러를 사용자에게 전달하는 것이 아니라 대체할 수 있는 다른 작업을 수행하여 서비스가 우아하게(gracefully) 실패하게 만드는 패턴입니다.일반적으로 원격 서비스가 일시적으로 장애가 발생할 때..
2025.03.16