인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
BEST
개발 · 프로그래밍

/

백엔드

장애 없는 서비스를 만들기 위한 Resilience4j - CircuitBreaker

장애 없는 서비스를 만들기 위한 CircuitBreaker를 도입하기 위한 방법에 대해 쉽고 빠르게 알려드립니다.

(4.8) 수강평 20개

수강생 376명

Thumbnail

중급자를 위해 준비한
[백엔드, 데브옵스 · 인프라] 강의입니다.

이런 걸
배워요!

  • 장애 없는 서비스를 만들기 위한 CircuitBreaker의 개념

  • Resilience4j를 통해 CircuitBreaker를 빠르게 적용

장애가 나도 안정적인 서비스 만들기!
쉽게 배우는 서킷브레이커의 A to Z 💡

안정적인 서비스를 만드는 CircuitBreaker

IT 서비스 기업에선 어떻게 장애 상황에도 느끼지 못할 만큼 안정적으로 서비스를 운영할까요? Resilience4j를 통해 서킷 브레이커를 쉽고 빠르게 프로젝트에 적용하는 방법에 대해 알아봅니다.

빠르고 간단한 서킷브레이커 도입

특정 서버에 트래픽이 집중될 때 전체 서비스에 영향이 가지 않게 구성하는 법을 고민하고 계신 분

MSA(Micro-Service Architecture)로 서비스를 구성했는데 일부 서비스의 장애만으로도 전체 서비스가 죽어버리는 상황을 해결하고 싶은 분

서킷 브레이커라는 개념이 뭔지 대략 알고는 있지만, 어떻게 시작해야 할지 모르겠는 분

장애에 강한 서비스를 만들기 위한 기본기인 서킷 브레이커(Circuit Breaker)의 개념을 익힐 수 있는 강의입니다. ‘우리 서비스에 트래픽이 집중되는 서버가 종종 너무 느려지는데, 이런 상황에서 전체 서비스에 영향을 주지 않게 구성하려면 어떻게 해야 하지?’ 하는 고민해보신 적이 있진 않으신가요?

여러분의 서비스에 서킷 브레이커를 도입하면 이런 문제를 쉽게 해결할 수 있습니다. 트래픽이 집중되는 서비스에 서킷 브레이커를 걸어 트래픽을 효과적으로 제어하고, 서비스를 안정적으로 유지하는 방법에 대해 알려드립니다!


알기 쉬운 학습을 위해 
꼼꼼하게 구성하였습니다.

서킷 브레이커를 처음 들어보는 사람이라면 복잡하게 느껴질 수 있는 서킷 브레이커의 상태 변화 과정을 쉽게 이해할 수 있도록 단계별로 그림과 함께 설명했습니다.

Resilience4j라는 라이브러리에 익숙해지기 쉽도록, 훨씬 간단한 Retry를 적용하는 방법부터 시작해 CircuitBreaker로 넘어가도록 점진적으로 구성하였습니다.

Resilience4j 공식 문서 및 데모 프로젝트는 매우 불친절해서 내 프로젝트에 적용하기 어렵습니다. 이 강의에서는 서비스에 당장 서킷 브레이커를 적용할 수 있도록 핵심적인 내용만 간추렸습니다.

이론 6 : 실습 4의 비중으로 실무에서의 서킷브레이커 도입에 초점을 맞췄습니다. 웹 애플리케이션을 몇 개 만들어 본 경험만 있다면 어렵지 않게 학습하실 수 있습니다.


강의에서 배우는 내용

서비스를 운영하다 보면 서비스 내부에서 호출하고 있는 다른 서비스나 데이터베이스 같은 요소에 문제가 생기거나 너무 큰 부하를 받아 일시적으로 사용이 불가능한 상태가 되곤 합니다. 백엔드 개발자라면 이런 일부 서비스에 대한 실패가 서비스 전체의 실패로 이어지는 상황을 피하고 싶겠죠? 이런 문제를 서킷 브레이커를 통해 해결할 수 있습니다.

서비스 운영에서 트래픽이 문제가 될 때는 평소보다 짧은 시간에 폭발적인 트래픽이 몰릴 경우입니다. 이벤트를 진행해서 트래픽이 집중될 수도 있고, 누군가 공격을 해서 트래픽이 치솟을 수도 있습니다. 이렇게 트래픽이 몰리면 서비스가 종종 죽어버리곤 합니다. 그렇다고 이런 트래픽이 집중되는 시점에 맞춰 인프라를 갖춰두는 건 평소에는 불필요하게 많은 비용을 쓰게 만들겠죠.

그러나 이런 트래픽에도 서킷 브레이커를 활용하면 낮은 자원만 사용하면서도 트래픽에 서비스가 죽지 않고 개발자에게 대응할 시간을 줄 수 있습니다. 트래픽으로 인한 문제가 서비스 전체로 퍼지는 것도 막을 수 있죠.

서킷 브레이커는 이 3가지 상태를 오고 가며 트래픽을 제어합니다. CLOSE, OPEN, HALF_OPEN 이렇게 3가지 상태가 각각 무엇을 의미하는지 설명을 적어두었지만, 아직은 잘 모르겠죠? 강의를 듣고 나면 각각의 상태가 어떤 상태이고, 서킷 브레이커가 이 3가지 상태를 어떻게 오고 가며 서비스를 안정적으로 운영하도록 도와주는지 알 수 있게 될 겁니다.

서킷 브레이커에 대한 개념적인 설명뿐만 아니라 어떤 설정을 지정할 수 있는지도 알려드립니다. Resilience4j를 통해 서킷 브레이커에 어떤 설정을 할 수 있는지 알아보고 여러분의 서비스에 적절한 설정을 찾아보세요. 아래 그림은 서킷 브레이커에서 중요한 개념 중 하나인 '슬라이딩 윈도우'에 대한 내용입니다.

Resilience4j 도입의 시행착오를 덜 수 있도록!

안녕하세요. 강의와 멘토링을 하고 있는 푸(Foo) 라고 합니다.

약 2년 전 우연한 계기로 Resilience4j를 사용하게 됐습니다. 당시 Resilience4j를 통해 서킷 브레이커를 적용하려고 했는데, 서킷 브레이커라는 개념 자체도 처음이었고 공식 문서와 데모 프로젝트가 친절하지 않아 프로젝트에 적용하는 데 큰 어려움을 겪었던 기억이 있는데요. 그때 겪었던 어려움을 어떻게 하면 다른 사람들이 겪지 않도록 할 수 있을까 하는 생각으로 이번 강의를 만들었습니다. 많은 분들이 Resilience4j를 도입하시는 데 도움이 될 수 있기를 바랍니다 😄


Q&A 💬

Q. 왜 Resilience4j와 서킷 브레이커를 알아야 하나요?

Resilience4j와 서킷 브레이커를 알아야 하는 이유는 시스템의 안정성과 가용성을 확보하는 데 중요한 역할을 한다는 점입니다. 현재 서비스 되고 있는 많은 애플리케이션은 다양한 외부 서비스와의 연동을 필요로 하며, 외부 서비스의 장애나 지연으로 인해 전체 시스템의 성능이 저하될 수 있습니다. Resilience4j와 서킷 브레이커는 이러한 상황을 대비하여 애플리케이션을 견고하게 만들고, 애플리케이션이 장애 상황에서 복구되는데 도움을 줍니다.

Q. Resilience4j와 서킷 브레이커에 대해 어느 정도 수준까지 다루나요?

강의에서는 Resilience4j라는 라이브러리를 통해 서킷 브레이커를 빠르게 적용할 수 있는 방법에 대해 다룹니다. 서킷 브레이커의 개념에서부터 의존성 추가와 코드에 적용, 어떤 상황에 서킷 브레이커가 효과적으로 적용될 수 있는지에 대해 다룹니다. 또한 서킷 브레이커를 제대로 활용하기 위해 서킷 브레이커의 주요 설정들과 Actuator를 활용한 서킷 브레이커 제어 방법까지 다루고 있습니다.

Q. 어느 정도 수준의 학습자가 들을 수 있는 강의인가요?

이 강의는 Resilience4j와 서킷 브레이커에 대한 기본 개념부터 시작합니다. 따라서 프로그래밍 경험이나 백엔드 개발 지식을 갖고 있지만 Resilience4j에 대한 사전 지식이 없는 초보자들도 수강할 수 있습니다. 또한 서킷 브레이커의 개념은 간단히 알고 있지만, 내 서비스에 빠르게 코드로 적용시켜보고 싶은 분들도 수강하기에 적절합니다.

💾 수강 전 확인해주세요

  • 강의는 Windows OS, IntelliJ IDEA Community를 기준으로 녹화되었습니다.
  • 실습에 쓰이는 예제 코드는 깃허브를 통해 제공합니다.
  • 하나의 API 서버에서 데이터베이스뿐만 아니라, 또다른 API 서버를 호출 할 수도 있다는걸 알고 있는 분이라면 적절한 수준으로 수강하실 수 있을 거라 생각합니다.
  • PPT를 통한 개념 설명을 확인한 다음 인텔리제이에서 실습 진행으로 따라하면 내용을 이해하기 좋습니다. (개념 자체를 이해하는 게 더 중요하기 때문에 수업 영상만 쭉 보셔도 무방합니다.)
  • 추후 올라오는 질문 중 필요하다고 여겨지는 내용은 [부록] 섹션에 영상을 추가할 예정입니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 일부 서비스에 장애가 발생했을 때도 사용자가 장애를 느끼지 못하는 안정적인 서비스를 구현하고 싶은 분들

  • CircuitBreaker를 적용하는게 좋을 것 같다는 이야기는 들었는데 어떻게 시작해야할지 감을 못잡겠는 분들

안녕하세요
이준형(Foo)입니다.

수강생 수

2,572

수강평 수

111

강의 평점

4.9

강의 수

7

안녕하세요.

멘토링을 하면서 주니어 개발자들이 어려워 하는 개념들에 대해 어떻게 하면 쉽게 전달할 수 있을지에 대해서 많은 고민을 하고 있는 푸(Foo)라고 합니다.

잘 부탁 드리겠습니다.


이력

  • 2019. 08 ~ 현재 : 카카오 자바 백엔드 개발자

  • 2021. 08 ~ 현재 : programmers 백엔드 데브코스 멘토

  • 2021. 12 ~ 현재 : F-Lab 자바 백엔드 멘토

 

  • 이것이 취업을 위한 백엔드 개발이다 with 자바(링크)

 

기타 이력 및 타 플랫폼 강의들은 아래 GitHub 링크에서 확인할 수 있습니다.

GitHub - https://github.com/lleellee0

커리큘럼

전체

19개 ∙ (2시간 36분)

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!