Thumbnail
BEST
개발 · 프로그래밍 백엔드

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

(4.8)
16개의 수강평 ∙  283명의 수강생

39,600원

지식공유자: 이준형(Foo)
총 19개 수업 (2시간 36분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

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

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

✍️
이런 걸
배워요!
장애 없는 서비스를 만들기 위한 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) 입니다.
이준형(Foo)의 썸네일

안녕하세요.

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

잘 부탁 드리겠습니다.


이력

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

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

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

 

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

 

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

GitHub - https://github.com/lleellee0

커리큘럼 총 19 개 ˙ 2시간 36분의 수업
이 강의는 영상, 수업 노트가 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 1. Resilience4j 시작하기
Resilience4j 데모 프로젝트로 시작하기 07:52
Retry를 통해 Resilience4j 맛보기 16:13
Retry하는 코드 직접 만들어보기 08:58
섹션 2. Resilience4j로 CircuitBreaker 시작하기
CircuitBreaker 알아보기 12:13
프로젝트에 CircuitBreaker 적용하기 05:05
CircuitBreaker 동작 테스트 해보기 11:15
섹션 3. CircuitBreaker 주요 설정 알아보기
CircuitBreaker 상태 변화 관련 주요 설정 18:34
CircuitBreaker 이벤트 활용하기 10:21
어떤 예외를 recordExceptions로 지정할까? 05:23
fallback 활용하기 08:32
섹션 4. Actuator와 함께 사용하기
Spring Boot Actuator 간단 소개 03:28
Actuator에서 제공해주는 Resilience4j 관련 정보 05:24
API 호출로 Circuit 상태 변경하기 04:46
섹션 5. 부록
왜 Resilience4j 최신 버전이 아니라 1.7.0 버전을 사용하나요? 01:53
프록시 패턴, AOP, Self Invocation 미리보기 15:29
강의 게시일 : 2023년 08월 21일 (마지막 업데이트일 : 2024년 04월 13일)
수강평 총 16개
수강생분들이 직접 작성하신 수강평입니다.
4.8
16개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
김민수 thumbnail
5
알찬내용 감사합니다! 빠른 시간내에 개념과 구현을 학습할 수 있어 좋았습니다. 다른 강의들도 출시가 된다면, 구매하여 학습할 의향이 있을정도로 좋았습니다.
2024-02-28
지식공유자 이준형(Foo)
김민수님 수강평 남겨주셔서 감사합니다~ 나중에 다른 강의도 기대해주세요~!
2024-03-14
daonplace thumbnail
5
foo님 안녕하세요 현재 진행하는 프로젝트에서 서킷 브레이커를 적용해야하는데 처음에는 팀에서 Hystrix를 도입하자는 얘기가 나왔습니다. 강의 영상에서와 같이 Hystrix의 유지보수만 되고 있는 프로젝트여서 팀에게 이러한 내용을 공유하고 Resilience4j를 도입할려는데 마침 관련 강의가 나와서 바로 수강하게되었습니다! 이전에 foo님의 다른 강의를 수강한적이 있었는데 정말 많은 도움이되었는데 이번에도 많은 도움이되었습니다. 정말 감사드리고 앞으로도 좋은 강의 많이 부탁드립니다! 감사합니다!
2023-08-29
지식공유자 이준형(Foo)
daonplace님 안녕하세요! 업무에 도움이 되셨다니 다행이네요. ㅎㅎ 제 다른 강의도 수강해주셔서 대단히 감사합니다. (_ _) 앞으로도 강의 열심히 만들어 보겠습니다!
2023-08-29
yosongsong thumbnail
5
우연한 계기로 resilience4j에 관한 정보를 알게 되었습니다. 덕분에 회복탄력성에 관해 알게 됐습니다. 난이도는 중급이상이라고 되어있지만, 기초적인 개념부터 설명해주셔서 하나도 어렵지 않고 바로 적용할 수 있다는 생각이 들었습니다. 아직 취준생이지만 추후 커리어에 도움이 될거 같습니다~ 잘들었습니다!
2023-10-24
지식공유자 이준형(Foo)
yosongsong님 소중한 수강평 감사합니다. 취업 준비로 힘드시겠지만 힘내셔서 취업 꼭 성공하셨으면 좋겠네요! 혹시라도 질문 있으시면 나중에라도 질문 남겨주세요.
2023-10-24
김찬 thumbnail
5
- 줄 수 있는 별점 최대 개수가 5개인게 너무 아쉬울 따름. - 강사님이 말하는 문장들의 구조가 대부분 완벽함. 많은 인강들을 들어본 결과, 주어 동사 목적어 등의 문장 구조가 난잡하여서 설명하는 문장들을 이해하기 위해 추가적인 에너지가 필요한 강의가 많음. 하지만 이 강의는 그냥 듣는대로 바로바로 이해가 됨. - 설명하는 호흡이 짧고 간결하고 담백하여 술술 들리고 술술 이해됨. - 수강생 친화적인 강의. 수강생들이 학습하면서 헷갈릴 만한 부분을 미리 예측하여 언급함. 더욱 신경써서 이해해야 하는 부분을 미리 점지해주는 효과. ex) circuit breaker의 OPEN이라는 개념이 긍정적인 의미가 아닌 부정적인 의미로 사용된다는 것을 강조해줌. *총평* Foo님의 새로운 강의가 빨리 나왔으면 좋겠다.
2023-11-26
지식공유자 이준형(Foo)
헛 김찬님 디테일한 칭찬 감사합니다. 감동이네요 ㅎㅎㅎㅎ 긍정적인 측면에서 좋은 피드백 많이 남겨주셔서 큰 힘이 됐습니다~ 잘 수강해주셔서 정말 감사드리고, 강의 내용이 김찬님께 도움이 됐으면 좋겠네요! 강의는 12월중으로 성능 테스트 강의가 업로드될 예정입니다. 이 강의나 다른 강의도 수강하시고 긍정적인 피드백도 좋고, 이런건 개선됐으면 좋겠다고 생각하는 점도 이야기 해주시면 강의에 반영해보겠습니다. (_ _) 그리고 이런 부분은 보충 설명이 필요하다고 생각하시는 부분도 있으면 이야기 해주세요! 앞으로도 좋은 강의로 찾아뵙겠습니다. 감사합니다.
2023-11-26
Birdie thumbnail
5
좋은 강의 덕분에 resilience4J에 대해서 학습하고 프로젝트에 적용할 수 있었습니다. 외부 API에 의존적인 서비스의 모습을 개선하고 싶었는데 이번 기회를 통해 개선할 수 있었습니다 :)
2024-02-28
지식공유자 이준형(Foo)
Birdie님 수강평 남겨주셔서 감사합니다! 강의가 도움이 됐으면 좋겠네요!
2024-03-14