Spring/Cloud (33) 썸네일형 리스트형 [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의 .. [Spring Cloud] 다중 마이크로서비스 데이터 동기화 이전 장(링크) 에서는 마이크로서비스 간의 데이터 동기화 문제를 해결하기 위하여 Kafka Connect를 사용해보았다. 이번 장에서는 동일한 역할을 하는 여러 서비스와 하나의 DB가 있을 때 Kafka를 사용하여 데이터를 동기화하는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Service Flow 전체적인 서비스 흐름을 살펴보면 아래의 이미지와 같다. 여러 클라이언트가 유저 서비스에게 유저 정보 API를 호출한다. 유저 서비스는 주문 정보를 만들기 위해서 주문 서비스의 API를 호출해야하고 FeignClient 또는 RestTemplate을 통해 분산되어있는 주문 서비스를 호출하게 된다. 주문 서비스는 DB에 데이터를 넣기 위해 직접 SQL을 실행하는 것이 아니라 Ka.. [Spring Cloud] Kafka를 사용한 서비스간 데이터 동기화 이번 장에서는 우리 서비스에서 발생하는 데이터 동기화 문제를 해결하기 위해 Kafka를 적용시켜본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 개요 우리는 지금까지 주문 서비스를 분산하게 되면서 DB 또한 동시에 분산되어 데이터의 동기화에 문제가 발생하는 것을 확인하였다. 이러한 문제를 해결하기 위해 Kafka와 추가 기능인 Source Connect, Sink Connect에 대해서 알아보았다. 이번 장에서는 우리가 학습한 Kafka를 활용하여 마이크로서비스 간에 발생하는 문제를 하나씩 해결해본다. 사용자는 주문 서비스를 통해 상품을 주문한다. 사용자는 자신의 주문 목록을 확인하기 위해 유저 서비스에 사용자 조회와 주문 확인 기능을 요청한다. 개선되는 구조를 확인해보면 주문 서비스는 주문을 .. [Spring Cloud] Connect - 활용 이전 장(링크) 에서는 Kafka의 Connect를 설치하는 방법에 대해서 알아보았다. 이번 장에서는 Source Connect와 Sink Connect를 사용하는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. 우리는 MariaDB의 Connect Source와 Connect Sink를 사용하여 아래와 같은 구조를 구축할 것이다. Connect Source는 데이터를 제공하는 쪽으로부터 데이터를 전달받아 Kafka Cluster로 전달하는 역할을 하고 Connect Sink는 Kafka Cluster를 대상 저장소에 전달하는 역할을 한다. 이전에 Producer와 Consumer를 사용하여 Kafka Cluster를 통해서 데이터를 제공하고 소비하는 작업을 진행했었다. 이번.. [Spring Cloud] Connect - 설치 이전 장(링크) 에서는 Kafka의 Producer와 Consumer를 활용하여 데이터를 전송하는 방법에 대해서 알아보았다. 이번 장에서는 Kafka의 Connect를 사용하기 위해 설정하는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Kafka Connect 우리는 일반적으로 데이터를 어느 한 쪽에서 다른 쪽으로 이동시키기 위해 코드를 작성해서 하나씩 전달한다. 하지만 Kafka Connect를 사용하면 코드 작성없이 Configuration 정보를 통해서 데이터의 Import와 Export가 가능해진다. 단일 클러스터를 위한 Standalone mode와 다중 클러스터를 위한 Distribution mode를 지원한다. RESTful API를 통해 이러한 기능들을 지원.. [Spring Cloud] Kafka - Producer & Consumer 이전 장(링크) 에서는 Kafka를 소개하고 설치해보는 시간을 가졌다. 이번 장에서는 Kafka의 Producer와 Consumer를 사용하여 통신하는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Producer & Consumer Zoopeeker 실행 Kafka를 설치하기 위해 다운받은 압축파일의 압축이 풀린 경로로 이동하여 아래의 커맨드를 입력한다. $ ./bin/zookeeper-server-start.sh ./config/zookeeper.properties 아래의 이미지와 같이 출력된다면 정상적으로 Zookeeper가 실행된 것이다. Kafka 실행 Zookeeper를 실행시킨 경로에서 아래의 커맨드를 입력한다. ./bin/kafka-server-start.sh.. [Spring Cloud] Kafka - 소개 및 설치 이전 장(링크) 에서는 마이크로서비스 간의 통신을 다루면서 데이터 동기화의 한계에 대해서 알아보았다. 이번 장에서는 이런 한계를 돌파하기 위해 사용할 기술인 Apache Kafka가 무엇인지 알아보고 설치하는 방법에 대해서 알아본다. 모든 소스 코드는 깃 허브 (링크) 에 올려두었다. Intro Kafka는 Apache Software Foundation에서 Scalar 언어로 된 오픈 소스 메시지 브로커 프로젝트다. 링크드인에서 개발하였으며 2011년 오픈 소스화 하였으며 이후 Kafka를 개발하던 엔지니어들이 2014년 11월 Confluent라는 회사를 창립하였다. Kafka는 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼을 제공하는 장점이 인정되어 많은 글.. 이전 1 2 3 4 5 다음