Spring Cloud (28) 썸네일형 리스트형 [Spring Cloud] Docker - 서비스 실행 이전 장(링크) 에서는 도커에 대해서 알아보았다. 이번 장에서는 우리의 마이크로서비스들을 도커 이미지로 생성하고 실행시키는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 우리는 IntelliJ 또는 Gradle 커맨드를 통해서 jar 파일을 수동으로 생성할 것이다. 생성된 jar 파일을 도커 이미지로 생성하여 Docker Container를 실행시키는 방법에 대해서 알아본다. 필자의 경우 도커 환경에서의 실행을 위해 설정과 코드를 수정하고 jar파일을 생성하는 과정은 수동으로 진행하고 컨테이너를 실행시키는 단계는 docker-compose를 통해서 진행할 예정이다. docker-compose를 설치하는 방법은 아래서 다루도록 한다. 우리의 마이크로서비스들은 개발자의 P.. [Spring Cloud] Docker - 이미지 생성 이전 장(링크) 에서는 도커란 무엇인가와 도커 설치 방법에 대해서 알아보았다. 이번 장에서는 도커 이미지를 생성하고 실행하는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Docker 실행 우리의 마이크로서비스가 사용하고 있는 MariaDB를 도커 이미지로 실행하는 방법에 대해서 알아본다. 이미지 확인 hub.docker.com에 접속하여 우리가 사용하려는 이미지 파일을 확인한다. 이미지 다운로드(생략 가능) 아래의 커맨드를 입력하여 도커 이미지를 다운로드 한다. 컨테이너를 실행할 때 PC가 없다면 자동으로 다운로드 하지만 이번에는 단계를 나누어 진행한다. $ docker pull mariadb 아래의 커맨드를 입력하여 도커 이미지 목록을 확인한다. $ docker imag.. [Spring Cloud] Docker - 개요 이번 장부터는 우리가 만든 마이크로서비스들을 컨테이너화 하는 방법에 대해서 알아본다. 이번 장에서는 컨테이너화를 하기 위한 기술 중에 대표적으로 사용되는 Docker에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 가상화(Virtualization) 가상화(假像化, virtualization)는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다. 위키백과 간략하게 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공하는 기술을 의미하며 대표적으로 플랫폼 가상화와 리소스 가상화가 있다. 하이퍼.. [Spring Cloud] Prometheus & Grafana 대시보드 이전 장(링크) 에서는 Prometheus와 Grafana를 설치하는 방법에 대해서 알아보았다. 이번 장에서는 Grafana에 Dashboard를 추가하여 이전보다 데이터를 더 편리하게 확인할 수 있도록 수정해본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Grafana Dashboard 우리는 Grafana에 JVM(Micrometer), Prometheus, Spring Cloud Gateway 세 개의 Dashboard를 추가할 것이다. JVM(Micrometer) 부터 하나씩 추가해보도록 한다. JVM(Micrometer) Get this dashboard 확인 아래의 주소로 접속하여 Dashboard를 추가하기 위해 Get this dashboard에 나와있는 코드 번호를 확인하도록 .. [Spring Cloud] Prometheus & Grafana 설치 이번 장에서는 우리의 서비스를 모니터링하기 위한 툴인 Micrometer에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Turbine Server Turbine Server는 마이크로서비스에 설치된 Hystrix 클라이언트의 스트림 메시지를 아래와 같이 통합한다. Turbine Server는 설정 파일에 정의되어 있는 msa-service-order, msa-service-member, msa-service-delivery와 같은 Hystrix 클라이언트들의 스트림 메시지를 수집한다. 이후 Hystrix Dashboard를 통해 클라이언트로 부터 전달받은 스트림을 시각화한다. 하지만 Hystrix와 Turbine Server는 스프링 클라우드 최신 버전에는 더 이상 쓰이지 않다... [Spring Cloud] Zipkin & Sleuth 이전 장(링크) 에서는 장애 처리를 위한 CircuitBreaker와 Resilience4J에 대해서 알아보았다. 이번 장에서는 분산 환경에서의 추적을 위한 Zipkin과 Spring Cloud Sleuth에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 Zipkin은 오픈소스로써 Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적을 위한 시스템이다. Google Drapper에서 발전하였으며 분산 서비스 환경에서 시스템 병목 현상을 파악하기 위해 사용된다. 아래의 그림처럼 Collector, Query Service, Databasem WebUI로 구성되어 있다. Span은 하나의 요청에 사용되는 작업의 단위로 64bit의 고유한 ID다. Trace는 트.. [Spring Cloud] 장애 처리 - CircuitBreaker 이번 장에서는 장애 처리을 위해 CircuitBreaker와 Resilience4J에 대해서 학습한다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 우리의 마이크로서비스들은 HTTP 요청 하나를 처리하기 위해 필요한 다른 서비스의 API를 호출하면서 필요한 데이터를 만든다. 만약 우리가 장애에 대한 처리를 따로 하지 않는다면 아래의 이미지와 같이 하나의 서비스에서 장애가 발생하면 다른 서비스까지 장애가 전파된다. 하지만 우리가 원하는 결과는 이러한 그림이 아닐 것이다. 하나의 서비스가 문제가 있더라도 아래의 이미지와 같이 다른 서비스에서 만든 데이터는 정상적으로 클라이언트에게 전달하고 싶을 것이다. 이렇게 작동하도록 유도해주는 것이 CircuitBreaker다. CircuitBreaker의 .. [Reactive Programming] Rest Template - Async Spring WebFlux Series - 11 우리는 이전 장(링크) 에서 링크드인의 발표자료를 보면서 서비스간의 통신으로 인한 블로킹 현상에 대해서 알아보았다. 이번 장 에서는 이러한 블록킹 문제를 해결하기 위한 방법에 대해서 알아본다. 모든 코드는 깃 허브 (링크)의 테스트 코드에 있으므로 필요하다면 참고하도록 한다. 원격지 서비스 추가 HTTP Client 코드 개선 MvcV2Client 코드는 MvcClient 코드에 CyclicBarrier를 추가하여 스레드 동기화를 구현해두었다. 이번에 추가되는 MyClient는 MvcV2Client의 요청 URL에 index값을 추가하도록 수정하고 리턴값을 출력하도록 수정하였다. MyClient @Slf4j @EnableAsync public class M.. 이전 1 2 3 4 다음