목록전체 글 (49)
사붐이개발일기
ISO 다운로드https://rockylinux.org/ko/downloadMinimal : 간편설치 (옵션 선택폭이 좁음) DVD : 전체설치 (옵션 선택이 많음) ISO 부팅 USB 만들기 - Rufushttps://rufus.ie/ko/Rufus 다운로드Rufus로 부팅 USB 만들기 Rocky Linux 설치1. 설치 전 iso파일 무결성 검사하기iso 파일의 무결성을 검사하기 위해 Test this media & install Rocky Linux 선택 2. 설치환경 언어 선택하기 3. 설치요약 언어지원: 한국어 또는 영어시간과날짜: 아시아/서울설치목적지: 사용자정의 인터넷 설정 설치설치가 완료되면 시스템 재시작
Micrometer 와 Actuator Micrometer https://micometer.io/ JVM기반의 애플리케이션 Metrics 제공 Spring Framework 5, Spring Boot 2 부터 Spring의 Metrics 처리 Prometheus등의 다양한 모니터링 시스템 지원 Actuator Actuator란 Actuator는 applications.yml 내 management.endpoints.web.exposure.include 라는 옵션을 통해 /actuator 페이지를 통해 노출할 엔드포인트를 설정할 수 있다. Actuator에 정보들이 등록되어 있어야만 Prometheus가 Metrics를 읽어올 수 있다. Timer 짧은 지연 시간, 이벤트의 사용 빈도를 측정 시계열로 이벤..
Zipkin 이란?https://zipkin.io/Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈소스)Google Drapper에서 발전하였으며, 분산환경에서의 시스템 병목 현상 파악Collector, Query Service, Database, WebUI로 구성 span 하나의 요청에 사용되는 작업의 단위 64 bit unique ID Trace 트리 구조로 이루어진 Span 셋 하나의 요청에 대한 같은 Trace ID 발급 Spring Cloud Sleuth Spring Boot 애플리케이션을 Zipkin과 연동 요청 값에 따른 Trace ID, Span ID 부여 Trace와 Span Ids를 로그에 추가 가능 servlet filter rest template..
CircuitBreaker 사용 이유 userClient에서 FeignClient로 orderClient를 요청 시 실패하면 userClient에서 실패한게 아니지만 500에러가 발생했다. 하지만 Fallback method를 구현시킨다면 결과적으로 userClient는 문제 없는것처럼 200 ok가 뜨도록 구현이 가능하다. Circuit Breaker 란?문제가 생겼던 service, 문제가 생겼던 function을 더이상 사용하지 않도록 막아주고 문제가 생겼던 서비스 상태가 정상적으로 복구되면 이전의 사용했던 흐름처럼 정상적으로 바꿔주는 장치를 CircuitBreaker라 한다.장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수..
Erlang 설치https://www.erlang.org/downloads RabbitMQ 설치https://www.rabbitmq.com/download.html 환경변수 설정 Management Plugin 설치RabbitMQ Server Management Plugin은 RabbitMQ Server를 GUI로 관리하기 위해 사용하는 플러그인이다. 이 플러그인을 사용하지 않으면 rabbitmqctl 툴을 사용하여 명령어를 일일이 입력해야 하는 불편함이 있다. 따라서 명령어 입력에 익숙하지 않다면 플러그인을 설치하는 것이 편하다.// PowerShell rabbitmq-plugins enable rabbitmq_management RabbitMQ 실행 확인 (브라우저)http://127.0.0.1:15..
Git-flow 전략 간단하게 살펴보기 Git-flow를 사용했을 때 작업을 어떻게 하는지 살펴보기 전에 먼저 Git-flow에 대해서 간단히 살펴보겠습니다. Git-flow에는 5가지 종류의 브랜치가 존재합니다. 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)이 있습니다. master : 제품으로 출시될 수 있는 브랜치 develop : 다음 출시 버전을 개발하는 브랜치 feature : 기능을 개발하는 브랜치 release : 이번 출시 버전을 준비하는 브랜치 hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치 위 그림을 일반적인 개발 흐름으로 살펴보겠습니다. 처음에는 master와 deve..
개요 하나의 마이크로서비스를 하나 이상의 인스턴스에서 기동을 시켰을 때 클라이언트 요청이 여러개가 들어왔을 때 그것을 부하분산 처리하기 위해서 우리가 여러개의 인스턴스를 띄울 수 있다. (로드밸런싱) 마이크로서비스를 기동을 할 때, 우리가 서비스 port를 지정하게 되는데, 서비스 port를 0번으로 지정을 하게되면, 랜덤 port가 지정이 되서 여러개의 인스턴스를 실행한다 하더라도 충돌이 발생하지 않는다. order-service 인스턴스가 기동이될 때 H2라는 내장DB가 같이 기동이 된다. 각각의 데이터베이스가 각각의 인스턴스에 사용되고 있다. -> 하나의 주문에 대해서 나눠서 저장되어 있는 주문 데이터 값을 동기화를 어떻게 처리할 것인가? 데이터 동기화를 어떻게 할 것인가? 1.하나의 Databas..
개요 하나의 어플리케이션 내에서 모든 것을 개발하고 서로 메소드 호출로 이루어지는 모놀리식과 방식과 비교하여 마이크로서비스 방식은 물리적으로 분산된 시스템, 서비스 간의 통신이 필수적이다. 이러한 마이크로서비스간의 통신이 어떠한 종류가 있는지 살펴보고 대표적인 Http 통신 방법인 RestTemplate, Spring Cloud에서 사용할 수 있는 Feign Client와 예외가 발생했을 때 처리할 수 있는 방법에 대해서 알아보고자 한다. Communication Type Spring Cloud로 개발된 어플리케이션, 마이크로서비스들 간에는 동기 방식과 비동기 방식으로 통신을 할 수 있다. 동기 방식이라는 것은 기존의 웹 어플리케이션을 만들었을 때 하나의 클라이언트 요청사항이 들어오면 해당하는 요청이 다..