Spring/Spring Cloud

    Spring Cloud 마이크로서비스들은 어떻게 서로 통신 할 수 있을까? - Discovery Client

    어떻게 마이크로서비스(MS)들은 서로 위치를 알고 호출하는 걸까? Eureka(유레카)를 이용하여 서로 물리적 위치를 검색하여 찾기 때문이다. 서비스 디스커버리를 위해 MS들이 Spring Cloud Load Balancer(로드밸런서)와 상호 작용할 수 있는 3가지 방법을 찾아보자. 스프링 Discovery Client REST 템플릿을 사용한 스프링 Discovery Client 넷플릭스 Feign Client 🚀 스프링 Discovery Client Discovery Client와 표준 스프링 RestTemplate 클래스를 사용하여 호출 로드 밸런서와 그 안에 등록된 서비스에 대해 가장 낮은 수준 접근 가능 즉, Discovery Client를 사용하면 로드밸런서에 등록된 모든 서비스와 URL을 ..

    Spring Cloud 마이크로서비스들이 직접 Vault에서 값을 읽도록 만들어야 할까? - 보안과 유연성의 고민

    Spring Cloud 마이크로서비스들이 직접 Vault에서 값을 읽도록 만들어야 할까? - 보안과 유연성의 고민

    🚀 현재 상황 Spring Cloud Config Server (구성서버)는 가장 중요한 정보를 Vault에서 가져옴 (id, pw ...) 덜 중요한 정보는 Github를 통해 가져옴 (application.yml ...) application.yml에는 `${vault.gitId}`로 vault값을 사용하고 있음 application.yml 또는 application.properties에 굳이 ${vault.gitId}를 사용하지 않고, Vault에서 "spring.cloud.config.server.git.username" 키에 값을 넣으면 자동으로 적용되게 된다. 따라서 소스코드에서 Vault를 통해 값을 주입받는다는 기록을 남기지 않을 수 있다. 나는 왜 Vault에서 값을 가져온다고 명시했냐면..

    Spring Cloud Config Server - Vault 적용

    Spring Cloud Config Server - Vault 적용

    🚀 Spring Cloud Config 란? 분산 시스템에서 애플리케이션 구성 데이터를 하나의 중앙화 된 저장소에서 관리 가능 각 서비스를 다시 build(빌드)하지 않고 최신 구성 정보 적용 가능 스프링 및 스프링이 아닌 서비스와 긴밀한 통합 애플리케이션 환경에 맞는 구성 정보 사용 가능(dev, local. prod ...) 속성 값 암호화 및 해독(대칭 or 비대칭) MSA 인스턴스를 많이 실행하더라도 항상 동일한 구성 보장 가능 자체 프로퍼티(property) 관리 저장소가 있지만, 오픈 소스 프로젝트와도 통합 가능 Git(깃) Eureka(유레카) Vault(볼트) .... 그림처럼 Config Server는 외부 저장소에서 최신 구성 정보를 가져오고, 그것을 애플리케이션에게 줄 수 있습니다...