본문 바로가기

SpringInAction4

chapter 15. 실패와 지연 처리하기 (책. Spring in Action) 15.1 서킷 브레이커 이해하기 서킷 브레이커 패턴 (circuit breaker pattern) 우리가 작성한 코드가 실행에 실패하는 경우 안전하게 처리되도록 한다. 마이크로 서비스의 실패가 다른 마이크로서비스의 연쇄적인 실패로 확산이 되는 걸 방지할 수 있다 어떤 이유로든 메서드의 실행이 실패하면, 서킷 브레이커가 개방되고 실패한 메서드에 대해 더이상 호출이 수행되지 않음. 이때 풀백을 제공해 자체적으로 실패를 처리한다. 서킷브레이커로 보호되고 있는 메서드가 실행에 성공하면(Success) 서킷은 닫힘 상태를 유지한다. 실패할 시 지금 실행되고 있는 실패한 메서드 대신 풀백 메서드가 호출되고 서킷 상태는 열림으로 바뀐다. 때때로 서킷이 절반-열림 상태(half-open)로 바뀌면서 실패했던 메서드의 .. 2022. 3. 25.
chapter 13. 서비스 탐구하기 (책. Spring in Action) 13.1 마이크로서비스 이해하기 단일 어플리케이션이란? 배포 가능한 하나의 JAR 나 WAR 파일로 개발된 어플리케이션 단일 애플리케이션 문제점 전체를 파악하기 어렵다 : 코드가 점점 더 많아질수록 애플리케이션에 있는 각 컴포넌트의 역할을 알기 어려워진다. 테스트가 더 어렵다 : 애플리케이션이 커지면서 통합과 테스트가 더 복잡해진다. 라이브러리 간의 충돌이 생기기 쉽다 : 애플리케이션의 한 기능에서 필요한 라이브러리 의존성이 다른 기능에서 필요한 라이브러리 의존성과 호환되지 않을 수 있다. 확장 시에 비효율적이다 : 시스템 확장을 목적으로 더 많은 서버에 애플리케이션을 배포해야 할 때는 애플리케이션의 일부가 아닌 전체를 배포해야 한다. 애플리케이션 기능의 일부만 확장하더라도 마찬가지다. 적용할 테크놀로지.. 2022. 3. 12.
chapter 12. 리액티브 데이터 퍼시스턴스 (책. Spring in Action) 12.1 스프링 데이터의 리액티브 개념 이해하기 릴리즈 트레인 kay (2017-10)부터 리액티브 레퍼지터리 지원을 제공하기 시작 리액티브 레퍼지터리는 카산드라, 몽고DB, 카우치베이스, Redis 등을 지원 (RDB나 JPA는 지원하지 않는데, 이는 표준화된 비동기 API를 제공하지 않기 때문이라고.. ) 스프링 데이터 리액티브 개요 리액티브 레퍼지터리는 도메인 타입이나 컬랙션 대신 Mono나 Flux를 인자로 받거나 반환하는 메서드를 갖는다는 것이 핵심 Flux findByType(Ingredient.TYPE type); 위 코드 처럼 findByType() 메서드는 Flux 타입을 반환 간단히 말해, 스프링 데이터의 리액티브 레퍼지터리는 도메인 타입이나 컬렉션 대신 Mono나 Flux를 인자로 받.. 2022. 3. 4.
chapter 8. 비동기 메시지 전송하기 (책. Spring in Action) chapter 8. 비동기 메시지 전송하기 - 비동기 메시지 전송 - JMS(Java Message Service), RabbitMQ, 카프카(kafka)를 사용해서 메시지 전송하기 - 브로커에서 메시지 가져오기 - 메시지 리스닝하기 tip. 비동기 메시지는 애플리케이션 간의 결합도를 낮추고 확장성을 높여준다. JMS(Java Message Service), RabbitMQ, AMQP(Advanced Message Queueing Protocol), 카프카 등이 있음. 1. JMS로 메시지 전송하기 - JMS는 두개 이상의 클라이언트 간에 메시지 통신을 위한 공통 API를 정의하는 자바 표준 - 스프링은 JmsTemplate이라는 템플릿 기반의 클래스를 통해 JMS를 지원 - 프로듀서(producer)가.. 2022. 1. 28.
반응형