Resiliency4j

날아올라돼지야·2024년 8월 28일
0

이번 섹션부터는 마이크로서비스를 회복력 있게 만드는 방법에 대해 이야기하고자 합니다.

Resiliency은 어려운 상황을 견디고 다시 회복할 수 있는 능력을 의미합니다. 예를 들어, 우리는 코로나19라는 어려움을 겪었지만, 결국 정상적인 삶으로 돌아왔습니다. 이와 마찬가지로, 마이크로서비스도 네트워크 문제나 성능 이슈와 같은 어려운 상황을 견딜 수 있도록 회복력 있게 설계해야 합니다.

우리의 서비스 내에서 장애 관련 질문을 이렇게 할 수 있을거 같습니다.

  1. 연쇄적인 장애를 어떻게 피할 수 있을까?

    • 마이크로서비스 네트워크에서 하나의 서비스가 실패하거나 응답이 지연되면, 다른 서비스에 연쇄적으로 영향을 미칠 수 있습니다. 이를 방지하려면 어떻게 해야 할까요?
  2. 실패를 어떻게 우아하게 처리할 수 있을까?

    • 하나의 서비스가 실패했을 때, 전체 요청을 실패로 처리하지 않고, 가능한 다른 서비스의 데이터를 반환하거나 기본값을 반환하는 방법이 필요합니다.
  3. 서비스를 어떻게 자가 치유(Self-healing) 가능하게 만들 수 있을까?

    • 성능 문제나 네트워크 이슈로 인해 서비스 응답이 느려지거나 실패할 때, 시간 초과 및 재시도와 같은 메커니즘을 통해 서비스가 자가 치유할 수 있도록 만들어야 합니다.

해결책: Resiliency4j

이러한 문제들을 해결하기 위해, 우리는 Resiliency4j라는 라이브러리를 사용합니다. Resiliency4j는 Java 애플리케이션, 특히 함수형 프로그래밍을 위해 설계된 가벼운 내결함성 라이브러리입니다. 이 라이브러리는 회복력을 높이기 위해 다양한 패턴을 제공합니다.

주요 패턴

  • 서킷 브레이커(Circuit Breaker)
  • 폴백(Fallback)
  • 재시도(Retry)
  • 속도 제한기(Rate Limiter)
  • 벌크헤드(Bulkhead)

이 섹션에서는 이 패턴들을 자세히 다루고, 마이크로서비스에서 이를 어떻게 활용할 수 있는지 알아봅니다.

Resiliency4j 공식 웹사이트

Resiliency4j 공식 웹사이트에서 더 많은 정보를 확인할 수 있습니다. 이 웹사이트에는 라이브러리의 사용법과 다양한 패턴에 대한 설명이 포함되어 있습니다. 또한, Spring Boot와 Spring Cloud와 같은 프레임워크와 함께 Resiliency4j를 어떻게 사용할 수 있는지도 안내합니다.

profile
무슨 생각하며 사니

0개의 댓글