CircuitBreaker는 왜 필요한가?도메인 별로 서비스(서버)가 나뉘어지는 MSA 아키텍처에서는 특정 유저의 주문 리스트를 조회하는 경우에 다음과 같은 순서로 이루어 집니다. 1. user-service 호출 user-service / controller @GetMapping("/users/{userId}") public ResponseEntity getUser(@PathVariable String userId){ UserDto userDto = userService.getUserByUserId(userId); return ResponseEntity.status(HttpStatus.OK) .body(new ModelMapper().map(us..
개요https://anythingis.tistory.com/193 [MSA] Apache Kafka & Kafka ConnectKafkaKafka 개요현재 하나의 서비스는 다양한 서비스와 연동됩니다. 이때 end-to-end 방식으로 연결되어 있으면 속도상 빠르다는 장점이 있을 수 있지만 아래와 같은 단점이 있습니다. 데이터 연동의anythingis.tistory.com이전 포스팅에서 Zookeeper, Kafka, Kafka Connect를 활용해봤습니다. 그중에서도 단일 DB를 활용하고, 서비스가 DB에 INSERT를 직접 하는게 아닌 카프카에 위임하는 방법을 알아보겠습니다. 장점 : 서비스가 DB Lock, Connection에 대해 자유로움, 동시성 처리를 Kafka가, 비즈니스 로직을 서비스..
KafkaKafka 개요현재 하나의 서비스는 다양한 서비스와 연동됩니다. 이때 end-to-end 방식으로 연결되어 있으면 속도상 빠르다는 장점이 있을 수 있지만 아래와 같은 단점이 있습니다. 데이터 연동의 복잡성이 증가해 하드웨어, 운영체제에 영향을 많이 받고 장애에 영향을 많이 받음서로 다른 데이터 파이프 라인으로 인한 확장에 어려움이를 해결하고자 중간단계의 추상화를 위해 Apache Kafka가 등장했고, Data를 생성하는 Producer, Data를 소비하는 Cosumer를 통해 end-to-end는 서로 모르지만, 유연한 데이터 파이프라인을 구축할 수 있습니다. kafka 구성kafka Broker실제로 실행되는 Kafka 애플리케이션 서버로 3대 이상의 Broker Cluster를 구성해 브..
Spring Cloud Bus를 활용하는 이유Spring Cloud Config Server - Client로 설정 정보를 변경할 수 있지만, 변경되는 Client의 Spring Boot Actuator Refresh API 호출을 통해 변경된 사항들을 로딩해줘야합니다. 설정 정보가 변경 되었을 때 모든 마이크로 서비스에 정보를 다시 로딩하라고 요구하는 것은 어떤 서비스가 어떤 설정 정보를 갖고 있는지 체크하는 것이 번거롭기도하고 실수로 중요한 설정을 변경하지 않으면 오류의 확률도 생깁니다. 이럴때 Spring Cloud Bus를 활용하면 변경 내용을 감지하고 자동으로 Cloud Config Client의 Refresh API를 호출할 수 있습니다. 동적으로 설정 정보를 변경하기 위한 Message Qu..
Eureka Server Service 생성 Eureka Client Service 생성 server.port: 0으로 지정시 실행시킬 때마다 포트 랜덤 지정됩니다.동일한 서비스의 인스턴스를 따로 관리하기 위해 랜덤값 지정 Eureka Server - Client 순으로 기동참고https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의 | Dowon Lee - 인프런Dowon Lee |..