[Spring Cloud] Eureka를 적용하여 Dynamic Client Load balancing 시작 1. Eureka? load balancing과 failover를 위해 만들어진 REST 서비스 load balancing을 위해 Eureka Client 목록을 제공하고, Failover를 위해 Eureka Client의 상태를 체크한다(Ping) 2. background Ribbon 만을 사용하여 load balancing을 진행할 때 server list를 static하게 작성해야만 했다. 이를 극복하기 위해 server list를 동적으로 받아오기 위한 Server(Eureka Server)를 만들었다. 해당 서버에 등록된(register) Client들끼리는 서로 정보(registry)를 얻을 수 있다. 또한 Server는 Client들의 상태를 점검할 수 있다. 2. 예제 구조 아래 구조에서 .. [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 다음