Spring Cloud(MSA) 20

도커

하이퍼 바이저 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼 Type1: Native나 Bare-metal이라고 함 = 하드웨어에 하이퍼바이저를 설치 해줌으로써 가상화를 운영 할 수있다. Type2: Hosted = 하드웨어에 OS를 설치하고 그 위에 하이퍼바이저 기능을 할 수있는 소프트웨어를 설치해서 가상화를 운영할 수 있다. 도커 컨테이너 이미지 이미지란 우분투를 예를들면 우분투를 실행하기 위해 필요한 파일들을 가지고 있는것 즉 이미지만 가지고 있으면 설치하거나 할 필요 없이 이미지만 가지고 있으면 소프트웨어나 운영체제를 바로 실행할수 있는 상태. 소프트웨어 자체가 이미지로 되어있다고 생각하면 된다. 새로운 서버가 추가 되면 미리 만들어 놓은 이미지를 다운을 받고 해당하는 이미지를 통해서 컨테..

Spring Cloud(MSA) 2022.09.30

docker 명령어

mvn clean compile package 빌드하고 싶은 어플리케이션에 가서 이 명령어를 적고 doker build -t "도커 아이디"/"컨테이너 이미지로 지정할 이름":"TAG명" . 을 해주면 도커 Repository에 올라간다. 꼭 끝에 띄어쓰기 하고 . 찍어줘야함. docker images 도커에 저장되어 있는 이미지 조회 docker pull mariadb 마리아 데이터베이스를 도커 LocalRepository에 다운로드 docker container ps나 docker container ls 도커 컨테이너에 있는 이미지 조회 docker container ls -a 현재 종료된 이미지 조회 docker container rm 아이디 값. 도커 컨테이너에서 아이디값으로 삭제 docker r..

Spring Cloud(MSA) 2022.09.30

그라파나 프로메테우스 연동

spring cloud application에서 설정한 management: endpoints: web: exposure: include: prometheus actuator/prometheus를 가지고 이 정보를 자신이 도식화 시키기 위해서 수집을한다. 그리고 그걸 시계열 DB에 Metrics를 저장한다. 그라파나 라는 모니터링 및 분석을 위한 오픈소스애플리케이션이 프로메테우스와 연동을 해서 프로메테우스에 저장된 시계열 DB를 읽어서 정보를 시각화 해서 보여준다. 프로메테우스 yml파일에 설정할 수 있다. 난 세개만 등록했지만 이것보다 더 많은 마이크로 서비스들을 설정할 수도 있다. - job_name: 'user-service' scrape_interval: 15s metrics_path: '/use..

Spring Cloud(MSA) 2022.09.30

Zipkin

분산처리 환경에서 병목현상을 파악하는 기능이다. 이런 분산추적을 하기 위해서 spring cloud sleuth라는걸 zipkin과 연동해서 사용한다. 이걸 사용하면 요청값에 따라 ID가 부여된다. span과 trace가 있고 각각의 ID가 발급된다. span은 하나의 요청에 사용되는 작업 단위로 마이크로 서비스들이 A->B->C 로 호출을 한다면 span ID는 A->B 에 AA라는 아이디가 발급되고 B->C에 BB라는 아이디가 발급된다. 반면 Trace ID는 A->B->C 전체가 하나의 Trace ID가 된다. 밑에서 결과값으로 설명하겠다. 아무튼 그 누적된 정보들을 sleuth가 zipkin서버로 전달하고 zipkin서버는 그 정보를 바탕으로 시각화를 해준다. 사용할 마이크로서비스에 주입 org...

Spring Cloud(MSA) 2022.09.29

아파치 카프카

카프카란 분산 환경에서 사용하는 데이터 스트리밍 플랫폼이고 실시간 스트림의 처리등에 활용되는 솔루션이라고 구글에 나와있다. 카프카의 기본 구조를 살펴보면 카프카 클러스터라는 메세지를 저장하는 저장소가 있고 하나의 카프카 클러스터는 여러개의 브로커로 구성이 되는데 그 브로커라는건 각각의 서버라고 보면 된다. 이 브로커들이 메세지를 나눠서 저장하기도 하고 장애가 나면 대처도 하는 등의 역할을 한다. 그리고 카프카클러스터를 관리하는 용도로 주키퍼가 필요한데 주키퍼안에서 카프카클러스터에 관련된 정보가 기록이 되고 관리가된다. 카프카는 메세지 큐의 종류중에 하나인데 메세지 큐에 데이터를 전달하고 그 데이터를 빼서 사용하는 방식인데 카프카 클러스터에 메세지를 보내는걸 프로듀서라고 하고 카프카에서 메세지를 꺼내오는걸..

Spring Cloud(MSA) 2022.09.28

Resilience4J = CircuirtBreaker

Feign Client를 이용해 user-service에서 order-service에 있는 getOrders()를 호출하는데 order-service에 있는 메소드임에도 불구하고 user-service에서 에러가 발생한다. 굳이 user-service에서 잘못된게 아니니 오류를 발생 시키고 싶지않다. 위 로직처럼 order-service를 호출하는 과정에 오류발생 시점에서 폴백시키고 정상처리 시키며 대신 order-service에서 값을 가져오지 못한것만 보여주면 된다. 이런식으로. 이 상황을 만족시키기 위해서 Resilience4J를 쓴다. user-service에 주입 org.springframework.cloud spring-cloud-starter-circuitbreaker-resilience4j..

Spring Cloud(MSA) 2022.09.28

kafka 테스트할때 명령어 메모

./bin/kafka-topics.sh --list --boostrap-server localhost:9092 카프카 토픽에 있는 리스트 조회 ./bin/kafka-console-producer.sh —broker-list localhost:9092 —topic my_topic_users. my_topic_users라는 토픽에 저장된 리스트 조회 ./bin/kafka-console-consumer.sh —bootstrap-server localhost:9092 —topic quickstart-events —from-beginning quickstart-events라는 토픽 만들기 ./bin/kafka-server-start.sh ./config/server.properties 카프카 서버 스타트 ./bi..

Spring Cloud(MSA) 2022.09.27

Spring Cloud Bus(with RabbitMq)

마이크로 서비스들이 변경사항이 일어났을때 매번 서버를 재부팅을 해줘야 변경사항이 전체에 적용되는 불편함이 있어서 actuator라는 기능을 썻었다. 간단히 설정정보로만 보면 management: endpoints: web: exposure: include: refresh, health, beans, httptrace, busrefresh actuator는 상태를 볼 수있는(?) 여러가지 엔드포인트를 제공한다. yml에 설정한 내용이다. include는 actuator의 endPoint 들이다. 예를 들면 http://127.0.0.1:8888/actuator/httptrace를 입력한 정보이다. 이렇게 actuator에서 제공하는 엔드포인트들로 상태를 확인할 수 있고 변경사항이 일어났을때 refresh를..

Spring Cloud(MSA) 2022.09.24