msa

003 Circuit Breaker

December 15, 2023
2023-12-15
msa, reactive, circit breaker

Spring cloud circuit breaker # Circuit breaker # 전기 회로의 차단기와 유사한 역할을 하는 소프트웨어 디자인 패턴 특정 서비스가 과부하 상태가 되었을 때 추가적인 요청을 차단하여 시스템의 안정성을 유지 해당 서비스가 복구될 수 있는 시간 확보 Reactive systems의 Resilient(복원력)를 지원 Spring Cloud Circuit Breaker # Spring에서 circuit breaker를 지원하기 위해 만든 라이브러리 resilience4j와 spring retry를 추상화하여 Circuit breaker를 지원 reactive 환경에서는 resilience4j 만 사용 가능 Resilience4j # java에서 circuit breaker를 지원하는 라이브러리 Circuit breaker, Rate Limiter, Retry, Bulkhead, Time Limiter, Cache 등의 기능을 제공 Circuit breaker 준비 # org. ...

001 Reactive

December 14, 2023
2023-12-14
msa, reactive

1. Reactive Mircroservice의 Reactive # Spring cloud # Reactive systems의 핵심 가치 # Responsive(응답성) # 요구사항 문제를 신속하게 탐지하고 효과적으로 대처 신속하고 일관성 있는 응답 시간 제공 신뢰할 수 있는 상한선을 설정하여 일관된 서비스 품질을 제공 결과 가능한 한 즉각적으로 응답 사용자의 편의성과 유용성의 기초 오류 처리를 단순화 일반 사용자에게 신뢰를 조성하고, 새로운 상호작용 촉진 Resilient(복원력) # 요구사항 복제, 봉쇄, 격리, 위임에 의해 실현 장애는 각각의 구성 요소에 포함 (봉쇄) 구성 요소들은 서로 분리 (격리) 복구 프로세스는 다른(외부의) 구성 요소에 위임 (위임) 필요한 경우 복제를 통해 고가용성이 보장 (복제) 결과 장애에 직면하더라도 응답성을 유지 시스템이 부분적으로 고장이 나더라도, 전체 시스템 을 위험하게 하지 않고 복구 할 수 있도록 보장 구성 요소의 클라이언트는 장애를 처리하는데에 압박을 받지 않습니다 Elastic(유연성) # 요구사항 경쟁하는 지점이나 중앙 집중적인 병목 현상이 존재하지 않도록 설계 구성 요소를 샤딩하거나 복제하여 입력을 분산 실시간 성능을 측정하는 도구를 제공 응답성 있고 예측 가능한 규모 확장 알고리즘을 지원 결과 작업량이 변화하더라도 응답성을 유지 입력 속도의 변화에 따라 이러한 입력에 할당된 자원을 증가시키거나 감소 상품 및 소프트웨어 플랫폼에 비용 효율이 높은 방식으로 유연성을 제공 Message Driven(메시지 기반) # 비동기 통신: 구성 요소는 서로 비동기적으로 메시지를 주고 받으며, 독립적인 실행을 보장한다. ...

002 Reactive Microservice

December 14, 2023
2023-12-14
msa, reactive

2. Reactive Mircroservice의 Microservice # Monolithic 아키텍쳐 # 모든 컴퍼넌트가 하나의 서버 내에 존재 단순성: 코드 저장소가 하나로 존재하는 경우가 많아서 관리 포인트가 줄어든다 일관성: 각각의 서비스는 하나의 기술 스택으로 제공되기 때문에 접근성이 높다 높은 효율: 서비스 사이에 네트워크 통신이 없기 때문에 네트워크 지연이나 데이터 직렬화에 의한 오버헤드가 없다 Monolithic 아키텍쳐의 단점 # 확장성의 한계: 모든 서비스가 하나의 서버로 구성되어 있기 때문에 특정 서비스가 부하를 받더라도 서버 전체를 늘려야 한다 장애의 전파: 서비스 중 한 곳에서 문제가 발생하면 시스템 전체에 영향을 줄 수 있다 배포의 단일화: 하나의 서비스를 변경하더라도 전체 시스템을 다시 배포해야 한다 기술의 정체: 모든 서비스가 하나의 코드베이스에 결합되어 있어서 새로운 기술을 도입하거나 아키텍쳐의 변경이 전체에 큰 영향을 줄 수 있다 유지보수의 어려움: 모든 구성요소가 직접 연결 되어 있기 때문에 작은 부분의 수정이 전체에 영향을 미칠 수 있다 Microservice 아키텍쳐 # 이러한 단점을 극복하기 위해 서비스와 저장 소, 데이터베이스 등을 분리 독립적인 배포: 각 서비스는 독립적으로 배포 유연한 확장: 각 서비스는 각각 탄력적으로 확장 가능. ...