반응형

IT/Spring Cloud 22

Spring Cloud Context

Spring Cloud Context 내용을 정리하였습니다. The Boostrap Application Context Context는 외부 configuration 설정을 가져오는 역할과 로컬 configuration 설정을 가져와 복호화하는 역할을 합니다. Main context과 bootstrap context가 있습니다. 일반적인 applicationl.yaml과 다르게 bootstrap.yaml이라는 파일을 만들어서 사용하며 main context과 분리하여 외부 configuration 설정을 관리할 수 있습니다. spring.application.name : 애플리케이션의 context ID spring.profiles.active : profile 설정 spring.cloud.bootstr..

IT/Spring Cloud 2023.04.03

컨테이너 가상화

컨테이너 가상화 개요입니다. 하이퍼바이저 (Hypervisor) Virtual Machine Manager (VMM) 다수의 운영체제를 동시에 실행하기 위한 논리적인 플랫폼 Native (bare metal) 과 Hosted 타입 가상화 OS Virtualization Container Virtualization Host OS 위에 Guest OS 전체를 가상화 VMWare, VirtualBox 시스템 부하가 많고 느림 Host OS의 리소스를 적게 사용하며, 필요한 프로세스만 실행 최소한의 라이브러리와 도구만 포함 Container의 생성 속도가 빠름 용어 Image : 설정 값들을 모아 놓은 것 Container : Image를 실체화한 것 Dockerfile : Docker Image를 생성하기 위..

IT/Spring Cloud 2022.02.05

모니터링 - Prometheus, Grafana

앞으로 구현할 Prometheus와 Grafana 개요입니다. Prometheus Metrics를 수집하고 모니터링 및 알람에 사용되는 오픈소스 애플리케이션 Pull 방식의 구조와 다양한 Metrics Exporter 제공 시계열 DB에 Metrics 저장 -> 조회 가능 Grafana 데이터 시각화, 모니터링 및 분석을 위한 오픈소스 애플리케이션 시계열 데이터를 시각화하기 위한 대시보드 제공 요약 프로메테우스 & 그라파나 설치 프로메테우스 설정 파일 그라파나에 프로메테우스 연동 다운로드 프로메테우스 (2.33.1) : https://prometheus.io/download/ 그라파나 (8.3.4) : https://grafana.com/grafana/download 소스코드 프로메테우스 promethe..

IT/Spring Cloud 2022.02.04

모니터링 - Micrometer

앞으로 구현할 Micrometer 개요입니다. Micrometer JVM 기반의 애플리케이션의 Metrics를 제공 Prometheus 등의 다양한 모니터링 시스템 지원 Timer 짧은 지연 시간, 이벤트의 사용 빈도를 측정 시계열로 이벤트의 시간, 호출 빈도 등을 제공 @Timed 제공 요약 설정 정보 추가 테스트 소스코드 user-service pom.xml에 dependency를 추가합니다. io.micrometer micrometer-registry-prometheus application.yml에 설정 정보(info, prometheus, metrics)를 추가합니다. # Actuator 설정 management: endpoints: web: exposure: include: refresh, h..

IT/Spring Cloud 2022.02.04

Zipkin - 분산 추적

앞으로 구현할 Zipkin 개요입니다. Zipkin은 마이크로서비스와 같은 분산 환경에서 데이터를 추적하기 위한 시스템 (오픈소스)입니다. 요청이 시작되면 Trace ID가 생성되고 이 ID로 분산 추적을 합니다. Span - 하나의 요청에 사용되는 작업의 단위 - 64 bits unique ID Trace - 트리 구조로 이루어진 Span set - 하나의 요청에 대한 같은 Trace ID 발급 Spring Cloud Sleuth - Spring Boot Application을 Zipkin과 연동 - 요청 값에 따른 Trace ID와 Span ID 부여 요약 Zipkin 설치 Zipkin과 Sleuth 설정 테스트 소스코드 설치 curl -sSL https://zipkin.io/quickstart.sh..

IT/Spring Cloud 2022.01.30

CircuitBreaker

앞으로 구현할 CircuitBreaker 개요입니다. CircuitBreaker는 장애가 발생하는 서비스에 반복적인 호출이 되지 못하도록 차단하는 기능을 합니다. 대신에 다른 기능을 수행하게 하여 장애를 회피합니다. 현상 어떤 현상인지 확인해보겠습니다. 사용자는 자신이 주문한 상품을 조회하려는 상황입니다. 그런데 Order 서비스에 문제가 발생한 상황입니다. Postman에서는 아래와 같이 500이 나타나고 있습니다. 애플리케이션에서 보니, 'UnknownHostException'이 발생했습니다. 요약 Resilliance4J Dependency 추가 CircuitBreaker Config 수정 CircuitBreaker 추가 소스코드 User Service에서 Order Service를 호출하고 있습니..

IT/Spring Cloud 2022.01.30

Apache Kafka 활용 (1)

앞으로 구현할 데이터 동기화를 위한 Kafka 개요입니다. Orders Service에 요청된 주문 수량 정보를 catalogs Service에 반영 Orders Service에서 Kafka Topic으로 메시지 전송 -> Producer Catalogs Service에서 Kafka Topic에 전송된 메시지 취득 -> Comsumer 요약 Catalog Service에 Consumer 추가 Order Servie에 Producer 추가 테스트 소스코드 Catalog Service pom.xml에 dependecy 추가합니다. org.springframework.kafka spring-kafka Kafka 서비스를 다룰 패키지를 만들어 줍니다. Catalog 서비스는 물류를 기록하기 때문에 Consume..

IT/Spring Cloud 2022.01.23

데이터 동기화 - Kafka 설정

앞으로 구현할 데이터 동기화를 위한 Kafka 설정 개요입니다. 운영의 안정성을 위해서 어떤 서비스는 다중화해 놓습니다. 다중화된 서비스에서 데이터베이스는 어떻게 해야할까요. 만약에 아래와 같이 각각의 서비스가 데이터베이스를 가지고 있다면 데이터가 동기화되지 않을 것입니다. 하나의 데이터베이스를 두고 동기화하는 것이 쉬워보입니다. 이럴 때에 Messaging Queuing을 사용합니다. 대표적인 솔루션으로 Kafka가 있습니다. 이번 장에서 데이터 동기화를 위한 Kafka 설정을 설명하겠습니다. Kafka로 데이터를 보내고, Kafka에서 데이터를 받기 위해서 Kafka Connect를 설치하겠습니다. Kafka Connect Source는 Source System의 데이터를 Kafka으로 보냅니다. K..

IT/Spring Cloud 2022.01.08

Microservice간 통신 - FeignClient 방식

앞으로 구현할 Microservice간 통신의 개요입니다. RestTemplate보다 더 직관적입니다. 호출하려는 HTTP endpoint에 대한 Interface를 생성하면 됩니다. 요약 Feign Dependency 추가 client 패키지를 만들어서 Feign Client Interface 생성 호출하는 서비스에 Interface 구현 error 패키지를 만들어서 FeignErrorDecoder 클래스 생성 소스코드 Dependency를 추가합니다. org.springframework.cloud spring-cloud-starter-openfeign Feign Client Interface를 생성합니다. client 패키지를 만들고, OrderServiceClient.java 인터페이스를 만듭니다...

IT/Spring Cloud 2022.01.07

Microservice간 통신 - RestTemplate 방식

앞으로 구현할 Microservice간 통신의 개요입니다. user-service로 요청해서 order-service의 DB 데이터 가져오겠습니다. 기존에는 order service에 직접 접근해서 주문 목록을 받았지만, 이번에는 user service에서 주문 목록을 받아보겠습니다. 마이크로서비스간에 통신을 위해서 Rest Template을 이용하겠습니다. 요약 UserServiceApplciation.java에 RestTemplate 빈 생성 UserController.java에서 원하는 endpoint 선택 endpoint에서 사용하는 서비스(ex. userServiceImpl)에서 RestTemplate 객체 생성 필요한 설정은 config service의 user-service.yml에 저장 소..

IT/Spring Cloud 2022.01.06
반응형