목록인프런 (19)
사붐이개발일기

Micrometer 와 Actuator Micrometer https://micometer.io/ JVM기반의 애플리케이션 Metrics 제공 Spring Framework 5, Spring Boot 2 부터 Spring의 Metrics 처리 Prometheus등의 다양한 모니터링 시스템 지원 Actuator Actuator란 Actuator는 applications.yml 내 management.endpoints.web.exposure.include 라는 옵션을 통해 /actuator 페이지를 통해 노출할 엔드포인트를 설정할 수 있다. Actuator에 정보들이 등록되어 있어야만 Prometheus가 Metrics를 읽어올 수 있다. Timer 짧은 지연 시간, 이벤트의 사용 빈도를 측정 시계열로 이벤..

Zipkin 이란?https://zipkin.io/Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈소스)Google Drapper에서 발전하였으며, 분산환경에서의 시스템 병목 현상 파악Collector, Query Service, Database, WebUI로 구성 span 하나의 요청에 사용되는 작업의 단위 64 bit unique ID Trace 트리 구조로 이루어진 Span 셋 하나의 요청에 대한 같은 Trace ID 발급 Spring Cloud Sleuth Spring Boot 애플리케이션을 Zipkin과 연동 요청 값에 따른 Trace ID, Span ID 부여 Trace와 Span Ids를 로그에 추가 가능 servlet filter rest template..

CircuitBreaker 사용 이유 userClient에서 FeignClient로 orderClient를 요청 시 실패하면 userClient에서 실패한게 아니지만 500에러가 발생했다. 하지만 Fallback method를 구현시킨다면 결과적으로 userClient는 문제 없는것처럼 200 ok가 뜨도록 구현이 가능하다. Circuit Breaker 란?문제가 생겼던 service, 문제가 생겼던 function을 더이상 사용하지 않도록 막아주고 문제가 생겼던 서비스 상태가 정상적으로 복구되면 이전의 사용했던 흐름처럼 정상적으로 바꿔주는 장치를 CircuitBreaker라 한다.장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수..

Erlang 설치https://www.erlang.org/downloads RabbitMQ 설치https://www.rabbitmq.com/download.html 환경변수 설정 Management Plugin 설치RabbitMQ Server Management Plugin은 RabbitMQ Server를 GUI로 관리하기 위해 사용하는 플러그인이다. 이 플러그인을 사용하지 않으면 rabbitmqctl 툴을 사용하여 명령어를 일일이 입력해야 하는 불편함이 있다. 따라서 명령어 입력에 익숙하지 않다면 플러그인을 설치하는 것이 편하다.// PowerShell rabbitmq-plugins enable rabbitmq_management RabbitMQ 실행 확인 (브라우저)http://127.0.0.1:15..

개요 하나의 마이크로서비스를 하나 이상의 인스턴스에서 기동을 시켰을 때 클라이언트 요청이 여러개가 들어왔을 때 그것을 부하분산 처리하기 위해서 우리가 여러개의 인스턴스를 띄울 수 있다. (로드밸런싱) 마이크로서비스를 기동을 할 때, 우리가 서비스 port를 지정하게 되는데, 서비스 port를 0번으로 지정을 하게되면, 랜덤 port가 지정이 되서 여러개의 인스턴스를 실행한다 하더라도 충돌이 발생하지 않는다. order-service 인스턴스가 기동이될 때 H2라는 내장DB가 같이 기동이 된다. 각각의 데이터베이스가 각각의 인스턴스에 사용되고 있다. -> 하나의 주문에 대해서 나눠서 저장되어 있는 주문 데이터 값을 동기화를 어떻게 처리할 것인가? 데이터 동기화를 어떻게 할 것인가? 1.하나의 Databas..

개요 하나의 어플리케이션 내에서 모든 것을 개발하고 서로 메소드 호출로 이루어지는 모놀리식과 방식과 비교하여 마이크로서비스 방식은 물리적으로 분산된 시스템, 서비스 간의 통신이 필수적이다. 이러한 마이크로서비스간의 통신이 어떠한 종류가 있는지 살펴보고 대표적인 Http 통신 방법인 RestTemplate, Spring Cloud에서 사용할 수 있는 Feign Client와 예외가 발생했을 때 처리할 수 있는 방법에 대해서 알아보고자 한다. Communication Type Spring Cloud로 개발된 어플리케이션, 마이크로서비스들 간에는 동기 방식과 비동기 방식으로 통신을 할 수 있다. 동기 방식이라는 것은 기존의 웹 어플리케이션을 만들었을 때 하나의 클라이언트 요청사항이 들어오면 해당하는 요청이 다..
개요 Spring Framework은 다양한 HTTP 요청 방식을 지원하여 웹 서비스와의 통신을 할 수 있습니다. 이 포스팅에서는 Spring에서 사용하는 주요 HTTP 요청 방식인 RestTemplate, WebClient, 그리고 OpenFeign에 대해 알아보겠습니다. 각각의 특징, 사용법, 그리고 장단점을 살펴보면서 Spring에서의 HTTP 통신을 깊이 이해할 수 있습니다. 1. RestTemplate RestTemplate은 Spring Framework에서 제공하는 동기식 HTTP 통신을 위한 클라이언트입니다. RestTemplate은 주로 Spring MVC 기반의 애플리케이션에서 사용되며, 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원하고 JSON, XML ..
Spring Cloud Bus란? MSA구조에서 마이크로서비스를 메세지 브로커와 연결해주는 역할과 상태 및 구성에 대한 변경사항을 연결된 모든 마이크로서비스에게 전달해주는 프레임워크이다. 어플리케이션 설정파일 변경 시 Spring Cloud Config를 이용하면 어플리케이션 별도 빌드-배포 없이 적용 가능할 수 있다. 그러나 MSA 구조에서 Micro Service가 많아질 경우 서버 한개 한개 각각 개별적으로 actuator/refresh를 호출하여 적용하는 것은 실용적이지 못하고 누락의 가능성이 있다. 이러한 복잡하고 번거로운 점을 개선하고자 Spring Cloud Bus에선 손쉽게 적용할 수 있도록 도와준다. Spring Cloud Bus는 분산 시스템의 노드(Micro Service)를 경량 메..