<스프링 마이크로서비스 코딩 공작소>(길벗)을 학습하고 개인 학습용으로 정리한 내용입니다
클라이언트 회복성 패턴
클라이언트 회복성 패턴이란 원격 자원을 호출했을 때 에러가 발생하거나 제대로 동작하지 않을 때 문제를 해결하기 위한 소프트웨어 패턴이다.
대표적으로 클라이언트 측 부하 분산, 회로 차단기, 풀백, 벌크헤드 4가지가 존재한다.
원격 자원을 소비하는 클라이언트와 자원 사이에서 구현한다.
클라이언트 부하 분산
클라이언트 부하 분산은 넷플릭스 유레카 같은 서비스 디스커버리 에이전트를 이용해 서비스의 모든 인스턴스를 검색한 후 해당 서비스 인스턴스의 실제 위치를 캐싱하는 것이다.
클라이언트들이 서비스 디스커버리 엔진에 전적으로 의존하지 않아 안정성이 증가된다.
클라이언트 측 로드 밸런서가 지속적으로 서비스 인스턴스의 상태를 확인하여 문제가 감지될 시 해당 서비스 인스턴스를 서비스 풀에서 제거하여 서비스 호출이 해당 인스턴스로 전달되는 것을 막는다.
회로 차단기
문제가 발생한 것으로 판단되는 서비스를 호출하지 못하게 회로를 차단하는 역할을 한다.
폴백 처리
원격 자원에 대한 호출이 실패했을 경우 예외를 발생시키지 않고 다른 대체 코드 경로를 실행하여 다른 작업을 수행할 수 있도록 하게 해준다.
벌크헤드 패턴
마이크로서비스 기반의 애플리케이션에서 종종 특정 작업을 완료하기 위해 여러 마이크로서비스를 호출해야 한다. 벌크헤드 패턴은 서비스 호출하나의 오작동이 애플리케이션 전체에 악영향을 주지 않도록 방지해준다.
벌크헤드 패턴을 적용하지 않는다면 기본적인 호출 행위는 전체 자바 컨테이너에 대한 요청을 처리하는 스레드에서 수행된다. 이러한 상황에서 한 서비스에서 발생한 성능 문제로 자바 컨테이너의 모든 스레드가 최대치에 도달하여 자바 컨테이너가 비정상 종료되는 경우가 발생할 수 있다.
벌크헤드 패턴은 원격 자원에 대한 호출을 자원별 스레드 풀로 분리하여 특정 원격 자원의 호출이 느려져도 전체 애플리케이션이 다운되는 위험을 줄여준다.
참고자료
스프링 마이크로 서비스 코딩 공작소
'MSA' 카테고리의 다른 글
[MSA] 서비스 디스커버리 (0) | 2021.01.14 |
---|---|
[MSA] 스프링 클라우드 컨피그 서버를 통한 구성 관리 (0) | 2021.01.13 |
[MSA] 마이크로서비스 (0) | 2021.01.13 |
댓글