분류 전체보기 1341

애플리케이션 배포 구성

애플리케이션 배포 방법 IntelliJ IDEA JAR file Docker Create Bridge Network Bridge network docker system prune 사용하지 않는 컨테이너와 네트워크를 지워준다 docker network create --driver bridge [브리지 이름] gateway와 subnet 을 지정하지 않고 만들 수 있지만 수동으로 IPAddress를 지정하여 컨테이너를 동작시킬 때 오류가 발생할 수 있으므로 지정하고 만드는 것이 좋다. IP를 설정하는 이유 : Docker가 서비스를 비어있는 IPAddr를 자동으로 선택하여 할당하기 때문에 각각의 서비스가 다른 IP가 할당되어 있는데, 다른 IP이기 때문에 외부에서 접속하기가 힘들다. 근데 같은 IP를 설정하..

컨테이너 생성과 실행

mySql 설치하기 docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7 -d : 백그라운드 모드로 실행 -p : 포트 포워딩 호스트 PC에서 접근할 포트번호:응답 포트번호 -e : 환경변수를 설정한다(mysql5.7 버전은 반드시 root password 설정이 필요하기 때문에 저 옵션을 켠다) --name : 컨테이너 이름 설정 mysql:5.7 : 설치할 이미지 이름 3306 포트는 window에서 이미 사용 중이므로 에러 발생 -> 13306 변경 실패가 되어도 생성이 되었기 때문에 docker rm으로 제거해주고 다시 실행 컨테이너에 부가적 명령을 실행 docker exec -it mysql bas..

컨테이너 가상화

가상화 : 물리적인 컴퓨터 리소스를 다른 시스템이나 Application에서 사용할 수 있도록 제공 운영체제 가상화 VS 컨테이너 가상화 운영체제 가상화 HostOS 위에 GuestOS 전체를 가상화 VMware, VirtualBox 자유도가 높으나 시스템 부하가 많고 느려진다. 컨테이너 가상화 HostOS가 가진 리소스를 적게 사용하며, 필요한 프로세스 실행 최소한의 라이브러리와 도구만 포함 Container의 생성 속도 빠르다. 컨테이너 가상화 용어 정리 Container Image Container 실행에 필요한 설정 값 Image를 가지고 실체화 -> 컨테이너 DockerFile Docker Image를 생성하기 위한 스크립트 파일 자체 DSL(Domain-specific language) 언어 ..

Prometheus와 Grafana

Prometheus Metrics를 수집하고 모니터링 및 알람에 사용되는 오픈소스 Application pull 방식의 구조와 다양한 Metric Exporter 제공 시계열 DB에 Metrics 저장(조회 가능 = Query) 다운로드 https://prometheus.io/download/ Download | Prometheus An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach. prometheus.io 실행하기 prometheus,. yml 수정 모니터링할 job을 적어준다. prome..

Micrometer

현재 : Hystrix DashBoard / Turbine -> Micrometer + monitoring System(프로메테우스 등) https://micrometer.io/ Micrometer Application Monitoring micrometer.io JVM 기반의 Application의 Metrics 제공 Spring Framework 5, Spring Boot 2부터 Spring의 Metrics 처리 프로메테우스 등의 다양한 모니터링 시스템 지원 Timer 짧은 지연시간, 이벤트의 사용 빈도를 측정 시계열로 이벤트의 시간, 호출비도 등을 제공 @Timed 제공 의존성 추가 application.yml 수정 프로메테우스, metrics 엔트포인트 추가 Microservice 수정 statu..

분산 추적의 개요 Zipkin 서버 설치

ZipKin Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템(오픈소스) 분산 환경에서의 시스템 병목 현상 파악 Collector, Query Service, Database, WebUI로 구성 용어 정리 span : 하나의 요청에 사용되는 작업의 단위 trace : 트리구조로 이루어진 Span Set https://zipkin.io/ OpenZipkin · A distributed tracing system Zipkin Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in service architectures. Features i..

CircuitBreaker와 Resilience4J의 사용

CircuitBreaker 해당 MSA에서의 문제가 아닌 이를 호출하는 곳에서 에러가 난다면 해당 Service에서는 문제가 있는 것이 아니므로 정상적으로 동작하는 것으로 보여주어야 한다. 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행(장애 회피) 2가지 상태가 존재 한다. Closed : 하나의 서비스를 동작하는 동안 문제가 없는 상태 Open : 클라이언트 요청을 더 이상 MicroService에 전송하지 않고 CircuitBreaker가 처리하는 상태(장애가 있는 상태) https://martinfowler.com/bliki/CircuitBreaker.html bliki: CircuitBreaker You use so..

Multi Orders Microservice 사용에 대한 데이터 동기화 문제

각각의 MicroService마다 DataBase가 사용되기 때문에 다른 데이터를 가지고 있는 문제가 있다. Kafka Sink Connect를 사용해 단일 DB에 저장하여 데이터를 동기화할 것이다. DB 변경 H2 -> MariaDB table 생성 OrderService의 Controller 수정 Schema, Field, Payload 형태의 JSON 형태로 전송해야하기 때문에 클래스로 만들 것이다. KafkaOrderDto.class Schema.class Field.class payload.class OrderProducer 생성 @Service @Slf4j @RequiredArgsConstructor public class OrderProducer { private final KafkaTemp..

Kafka Topic의 적용

OrderService에 요청된 주문의 수량정보를 CatalogService에 반영하기 CategoryService(Consumer) 의존성 추가 Bean 설정 파일 등록 kafkaListenerContainerFactory() Topic을 변경사항을 계속 Listening하고 있는 Bean consumerFactory() ConsumerFactory 정보를 등록하는 Bean CatalogService 등록 지정된 Topic이 변경이 감지되었을때 실행될 서비스를 작성한다. catalogRepository를 주입받는다. @KafkaListener를 통해 어떤 Topic에 변경을 감지할지를 작성한다. kafka를 통해 메시지를 받아 category에 넣어준다. OrderService(Producer) 의존성..