지난 포스팅에서 Spring Cloud Config 를 통해 설정 외부화를 하는 과정을 알아보았다. 설정 외부화의 수단은 Github이었고 public repository에 있는 설정 파일에 대해 알아보았다. 이번에는 Github의 private repository에 접근하여 설정값을 가져오는 방법에 대해 알아보겠다. Github에 private repository를 하나 생성했다. 그리고 branch는 master를 하나 생성했다. 또한 설정을 가지고 올 oingdaddy.properties 파일을 생성을 해 두었다. private repository에 있는 값을 가지고 오는 방법은 크게 두가지가 있다. 첫번째는 ConfigServer application의 application.yml에서 직접 git..
MSA로 구성을 하면 어려워지는 기능 중 로그추적 기능이 있다. 기존의 Monolithic 구조에서는 로그 추적을 쉽게 할수 있었는데 app이 분산됨에 따라 어려워졌다. 하지만 훌륭한 로그 추적 솔루션들이 생기기 시작했고 우리는 그것을 잘 이용만 하면 된다. 이번에 다루려고 하는 훌륭한 솔루션은 바로 Spring Cloud Sleuth와 Zipkin이다. 아주 간단하게 이것들에 대해서 설명을 하자면 Spring Cloud Sleuth는 각 어플리케이션에서 발생하는 로그들에 대해 trace id 를 부과하는 역할을 한다. trace id라 함은 서비스의 고유한 추적 ID라고 이해하면 된다. 이렇게 trace id가 생성이 되면 Zipkin은 trace id를 토대로 UI를 통해 추적을 용이하게 해주는 역할..
Hystrix가 무엇인가? 에 대한 내용은 지난 시간에 다루었다. 열심히 이 method, 저 method에 @HystirxCommand를 달아 놓고 이게 잘 동작하고 있는지 직접 확인을 하는건 작은 프로젝트에서는 가능할지 몰라도 서비스의 개수가 늘어나면 늘어날수록 어려움에 처하게 된다. 이럴때 유용하게 사용하라고 Hystrix에서는 모니터링을 할 수 있는 Dashboard를 제공을 한다. Hystrix Dashboard는 single instance에 대해 @HystirxCommand가 정의된 method에 대한 모니터링을 수행할수도 있게 해주고 Turbine을 이용해 multi instance에 대해 @HystirxCommand가 정의된 method에 대한 모니터링을 수행할수도 있게도 해준다. 즉 실..
현재까지 Service Discovery, API Gateway, Configuration Externalization 등을 통해 MSA 수박 겉을 핥아보고 있다. 간단하게 현재까지 이런저런 기능을 구현했었는데 장애가 발생하는 경우에 대해서는 다룬적이 없다. 이렇게 서로 API 통신으로 모든것을 하는데 문제가 발생하면 그걸 어떻게 감지하고 어떻게 처리할까? 이번에도 역시 Neflix에서 제공하는 OSS인 Hystrix를 이용해서 MSA환경에서 어떻게 장애에 대처하는지 알아보도록 하겠다. Hystrix가 제공하는 핵심 기능은 Circuit Breaker 이다. 이건 회로차단기 라는 뜻인데 회로차단기는 전기 시스템에서 과전류가 발생하면 회로를 차단하여 시스템을 보호하는 기능을 말한다. MSA에서는 API 서..
MSA를 하면 당연히 어플리케이션 개수가 많아지고 그에 따라 어플리케이션마다 있는 설정 파일도 많아진다. 이렇게 되면 관리의 어려움이 생기고 이번에도 이런 관리의 어려움을 해결해주기 위해 Spring Cloud 형님들이 힘을 써주셨다. 사방에 나뉘어 있는 설정파일들을 모두 모아서 외부에서 한번에 관리할 수 있게 해주는, 또 변경이 되면 서버의 중단 없이 바로 반영까지 하게 해주는 Spring Cloud Config 라는 것을 통해서 말이다. 지금껏 구성했던 환경에 추가적으로 Config Server를 추가하였다. 모든 설정파일을 가지고 있는 Git에서 변경사항이 발생하면 이 변경된 Configuration properties가 Config Server를 거쳐 각각의 API Server에서 사용할 수 있도..
하는김에 Eureka application.properties Configuration 번역에 이어 Zuul도 해놓으려고 한다. 번역의 정확도는 구글 번역에 문의를 해보길.. Name default Desc zuul.add-host-header false 프록시가 호스트 헤더를 전달하는지 여부를 결정하는 플래그입니다. zuul.add-proxy-headers true 프록시가 X-Forwarded-* 헤더를 추가하는지 여부를 결정하는 플래그입니다. zuul.host.max-per-route-connections 20 단일 경로에서 사용할 수있는 최대 연결 수입니다. zuul.host.max-total-connections 200 프록시가 백엔드에 대해 열린 상태로 유지할 수있는 최대 총 연결 수입니다. ..
Eureka를 사용하면서 application.properties (application.yml) 에서 설정값에 대한 공부를 자세히 하고싶은데 자료를 찾는것이 쉽지 않다. 대부분의 포스팅은 매번 사용하는 비슷한 설정만 사용하고 그 외의 자료는 spring 공홈밖에 나타나있지 않다. 다들 영어를 잘해서 spring 공홈으로 들어가서 직접 설정값들을 보고 적용을 하는걸까? 내가 직접 번역은 못하고.. 번역기 돌려서 번역해 놓고 나중에 두고두고 써먹어야겠다.. NameDefaultDesceureka.client.allow-redirectsfalse서버가 클라이언트 요청을 백업 서버 / 클러스터로 리디렉션 할 수 있는지 여부를 나타냅니다. false로 설정하면 서버가 요청을 직접 처리하고 true로 설정하면 H..
지난 시간에 Eureka Server와 Eureka Client를 구성해 봄으로써 Service Registry, Discovery에 대해서 알아보았다. MSA처럼 여러개의 API Service 들을 생성하고 그것을 Eureka에 regist까지 해봤다. 이제 이 Eureka에 등록된 서비스들에 대해서 어떻게 접근하고 사용하는지 그 방법인 Spring Cloud Netflix Zuul을 이용해 API Gateway 구성을 해보려고 한다. API Gateway는 Service Routing 기능과 고가용성을 적용할 수 있으며 가볍게 설계된 디자인 패턴이다. 일단 설명에 앞서 지난번에 구성해봤던 Eureka와 API 서버에 API Gateway를 붙인 구성도이다. 요청이 들어오면 API Gateway가 Eu..