본문 바로가기

반응형

개발(합니다)/Java&Spring

(73)
[spring boot 설정하기-25] spring cloud Resilience4j(2)와 prometheus, grafana 연동 설정 및 테스트 1. 개요 circuit breaker가 오픈되었는지 닫혀있는지를 응답코드로 확인해야하는데 fallback이 적용되면 응답코드를 확인할 수 없습니다. Resilience4j에서 모니터닝 툴을 제공하지 않고 Micrometer(https://micrometer.io/)로 metric을 제공합니다. 제공되는 메트릭을 수집하고 표현하는 대시보드는 Prometheus(https://prometheus.io/)와 Grafana(https://grafana.com/)로 모니터링을 할 수 있습니다. Micrometer은 메트릭 수집 클라이언트에게 제공하는 표준 인터페이스입니다. 각 클라이언트에서 metric을 수집해서 원하는 형태의 format으로 변경하여 사용할 수 있어 유연합니다. 1-1. 참고 사이트 그라파나 ..
[spring boot 설정하기-24] spring cloud Resilience4j(1) 설정 및 테스트 소스 1. 개요 https://resilience4j.readme.io/docs/getting-started Hystrix에서 영감을 얻어 만든 라이브러리로 Resilience4j입니다. 가볍고 다른 라이브러리에 의존성이 없고 Circuit Breaker, Rate Limier, Time Limiter, Bulkhead, Retry, Cache 구현체가 있습니다. 2. 설정 설명 아래 사이트를 참고합니다. https://resilience4j.readme.io/docs/circuitbreaker 1. CircuitBreaker Config 요청 실패율이 특정 값 이상일 경우 서킷의 상태를 open/close 여부를 결정하여 에러에 대한 대응을 할 수 있습니다. Config propertyDefault Valu..
[spring boot 설정하기-23] spring cloud loadbalancer 설정 및 테스트 소스 1. 개요 많은 트래픽을 분산해서 처리하기 위해서는 서버를 여러대를 두고 처리량을 나누서 부하를 낮추는 방법을 사용합니다. OSI 7 계층에서 보면 L4, L7 계층에서 Switch라는 비싼 하드웨어 장비를 두고 사용하는 방식으로 서버사이드 로드밸런싱을 합니다. 서버사이드는 서버를 증설하면 되기때문에 간단히 조치할 수 있지만 아래와 같은 문제점을 가지고 있습니다. 1. Switch가 처리할 수 있는 요청수에는 한계가 있습니다. 2. Switch를 증설, 셋팅 설정이 어렵습니다. 3. 하드웨어 비용이 비쌉니다. 4. Switch가 문제가 생길걸 대비해 이중화 해야합니다. 5. 수동으로 등록해주고 사람이 상황에 따라 조치해야 해서 유연성이 떨어집니다. 서버사이드의 단점을 보완하고자 나온 방식으로 클라이언트사..
[spring boot 설정하기-22] spring cloud sleuth와 zipkin 설정 및 테스트 소스 1. 개요 MSA는 잘게 쪼개어 개발되면서 서비스간에 연결이 많아지고 복잡해지게 됩니다. 분산 된 서비스의 상태를 한 곳에서 실시간으로 체크하는 이슈만큼이나 로그를 한 곳에서 실시간으로 체크하는 이슈도 중요합니다. 시스템 내에서 여러 서비스간에 많은 호출이 발생하면서 한번의 트래픽이 어디서부터 어디까지 가는지에 대한 트래킹이 필요합니다. 로그 중앙집중식 외부화가 필요한 이유는 디스크에 기록된 로그는 컨테이너가 재기동되면서 사라지므로 로그 파일을 로컬 장비 디스크에 기록하는 방식을 취해서는 안됩니다. 컴포넌트 로그 스트림 : 로그 생산자가 만들어내는 로그 메시지의 스트림 로그 적재기 : 서로 다른 로그 생산자나 종단점에서 나오는 로그 메시지 수집하여 DB, 대시보드, 스트림 처리기로 보내는 등 다른 종단점..
[spring boot 설정하기-21] spring cloud gateway(2) 설정 및 테스트 소스 지난번 포스팅에서는 이론에 관한 정리를 했고 이번 포스팅에는 구현에 관해 포스팅 하도록 하겠습니다. 1. Cloud Config Server 및 설정 아래 설정은 예시이며 search-path 구성파일 찾을 경로에 gatewayserver를 추가합니다. search-paths: member-service, eurekaserver, gatewayserver # 구성파일 찾을 폴더 경로 bootstrap.yml #bootstrap.yml spring: application: name: configserver cloud: config: server: encrypt: enabled: false # Config Server에서 복호화 비화성화 git: ignore-local-ssh-settings: true ur..
[spring boot 설정하기-20] spring cloud gateway(1) 설정 및 테스트 소스 1. 개요 Spring Cloud Gateway(SCG) spring cloud gateway(scg)는 API Gateway 중 하나로 API 라우팅 및 보안, 모니터링/매트릭 등의 기능을 제공합니다. 유입되는 모든 요청과 응답에 대한 인증과 보안을 적용 URI에 따라 서비스 엔드포인트를 다르게 하는 동적 라우팅이 가능 : 도메인을 유지하고 레거시를 신규 시스템으로 교체 모든 트래픽에 대한 모니터링 시스템 구성 : 로깅 동적 라우팅이 가능하여 신규 스팩을 서비스 일부에만 적용하거나 점진적으로 확장하여 테스트 가능 Spring Cloud LoadBalancer가 포함되어 있다. Spring Cloud Zuul과의 차이점 Zuul은 zuul1과 zuul2로 구분됩니다. zuul1는 서블릿 프레임워크 기반으..
[spring boot 설정하기-19] spring properties(+jasypt) 암호화 설정 및 테스트 소스 개발 환경 정보와 같은 노출되면 안되는 민감한 정보를 암호화하고 OS 환경변수로 등록하는 방법을 포스팅합니다. 관련 정보는 아래 사이트에서 확인할 수 있습니다. github.com/ulisesbocchio/jasypt-spring-boot 1. 의존성 추가 버전을 명시하지 않으면 의존 주입이 안되어서 implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3' 2. JasyptConifg.java spring 구동 시 암복호화 설정 주입을 합니다. package com.otrodevym.dm.config; import org.jasypt.encryption.StringEncryptor; import org.jasypt.encrypt..
[spring boot 설정하기-18] spring cloud eureka(2) 설정 및 테스트 소스 지난번 포스팅에서는 이론에 관한 정리를 했고 이번 포스팅에는 구현에 관해 포스팅 하도록 하겠습니다. 1. Eureka Server 패키지 구조는 아래와 같습니다. 1-1. 의존성 추가 이전에 작성한 cloud config와 연동하기 위해서 추가적으로 의존성을 넣었습니다. dependencies { // cloud config implementation 'org.springframework.boot:spring-boot-starter-amqp' implementation 'org.springframework.cloud:spring-cloud-bus' implementation 'org.springframework.security:spring-security-rsa' implementation 'org.sp..

반응형