MSA/Spring (4) 썸네일형 리스트형 [Spring Cloud] Ribbon을 활용한 Client Side Loadbalancing 1. Ribbon? Netflix가 만든 Software Load Balancer를 내장한 Library 2. Background 기존 L4, L7 장비를 통해 Server side Load balancing을 해주고 있다. H/W가 Load balancing을 해주기 때문에 WAS에서 처리해야 하는 SSL 등의 일을 대신 처리해주기도 하지만 다음과 같은 단점들이 있다. Switch 자체가 처리할 수 있는 요청에 한계가 있음 Switch 증설 및 세팅 어려움, 고비용 Switch 이중화 시, Active와 Stand-by 중 Stand-by는 사용되지 않으며 비싼 장비를 유휴장비로 방치 이러한 상황들을 극복하고자 나온것이 Client Side Load balancing이다. 그중 Spring Cloud .. [Spring Cloud] Hystrix를 사용하여 Resilience한 시스템 구성하기 지난번 구성했던 POST 예제에 Hystrix를 적용하여 Resilience한 시스템을 구성해 봄 1. Hystrix? MSA에서 분산된 서비스간 통신이 원할하지 않을 경우에 대비해 Netflix가 만든 Fault Tolerance Library 2. Background Monolithic한 구조에서는 모듈사이의 메서드 호출이 실패하는 것을 고려하지 않음 ->시스템 자체가 죽지 않는 이상 그럴일이 없음 MSA에서 서로다른 서비스의 API 호출 시, 다양한 이유로 실패할 수 있는 가능성이 있음 API서버가 죽으면 Client 서버 역시 해당 서비스에 대해 장애가 생김 -> 장애가 전파됨 장애 전파를 막기 위해 API 호출 실패 시 대안을 적용해주어야 함 Hystrix를 활용하여 위 문제를 해결할 수 있다... [Spring Boot]WebClient를 이용한 POST 통신 1. WebClient 란? Web request를 수행하기 위한 entry point를 표현하기 위한 인터페이스. Spring Web Reactive 모듈의 한 파트로 생겨났음. RestTemplate이 곧 deprecated 되기 때문에 WebClient 사용에 익숙해지길 권고함 2. Dependency in Maven org.springframework.boot spring-boot-starter-webflux 3. 예제 구조 WebMain에서 API 서버에 GetUserInfo라는 메서드에 EmpInfo라는 Body를 포함하 POST 요청을 보내면 보낸 EmpInfo를 그대로 Response해주는 간단한 구조 4. Client Side(WebMain) @RestController public cl.. [Spring Boot] 개발환경 세팅(visual studio code ver.) visual studio code에서 개발환경 세팅 하는 방법을 간단히 소개합니다. 1. visual studio code 설치(https://code.visualstudio.com/Download) 2. JDK 1.8 ver. 설치 $ sudo apt install openjdk-8-jdk 3. Apache Maven 설치 (3.0 ver. 이상) $ sudo apt install maven 4. Java Extention Pack 설치 5. Spring 관련 세 가지 Extension 추가 (Spring Boot Tool, Spring Initializr, Spring boot Dashboard) 6. 프로젝트 생성 6-1. Spring Initializr 실행(Maven 기반 프로젝트 생성) 6-2.. 이전 1 다음