Web(110)
-
Spring - ApplicationContext,ApplicationContextAware, 빈이 아닌 객체에 빈주입할때!
Spring - ApplicationContext,ApplicationContextAware, 빈이 아닌 객체에 빈주입할때! @Autuwired,@Inject 등의 어노테이션으로 의존주입을 하기 위해서는 해당 객체가 빈으로 등록되어 있어야만 가능하다.사실 이런 상황은 웹프로그래밍에서는 거의 없겠지만... 빈으로 등록되지 않은 객체에 빈으로 등록된 객체를 의존주입해야할 상황이 있을 수도 있다. 그럴때 사용할수 있는 하나의 UtilClass 이다. 123456789101112131415@Servicepublic class BeanUtils implements ApplicationContextAware { private static ApplicationContext context; @Override publi..
2019.02.25 -
Spring Cloud - Zuul API gateway & Proxy !(Netflix Zuul)
Spring Cloud - Zuul API gateway & Proxy !(Netflix Zuul)Netflix Zuul 이란 무엇인가?마이크로서비스 아키텍쳐(MSA)에서 Netflix Zuul은 간단히 API gateway 또는 API Service,Edge Service로 정의된다.그래서 하는 일이 무엇이냐? 마이크로서비스 아키텍쳐에서 여러 클라이언트 요청을 적절한 서비스로 프록시하거나 라우팅하기 위한 서비스이다. 위의 이미지에서 보이듯, 모든 마이크로서비스의 종단점은 숨기고 모든 요청을 최앞단에서 Zuul이 받아 적절한 서비스로 분기를 시키게된다. 모든 마이크로서비스의 종단점을 숨겨야하는 이유가 무엇인가? 1) 클라이언트는 일부 마이크로서비스만 필요로한다.2) 클라이언트별로 적용돼야 할 정책이 있다..
2019.02.25 -
Spring Cloud - Spring Cloud Bus
Spring Cloud - Spring Cloud Bus Spring Cloud Bus 는 분산 시스템에 존재하는 노드들을 경량 메시지 브로커(rabbitmq, kafka etc)와 연결하는 역할을 합니다.구성 변경과 같은 상태변경, 기타관리 등을 브로드캐스트하는데 사용이 가능합니다.현재 AMQP 브로커를 전송으로 사용하지만 Kafka, Redis도 사용 할 수 있습니다. 그 외의 전송은 아직 지원되지 않습니다. 1. 개요 Spring Cloud Config Server를 구축하게 되면 각 어플리케이션에 대한 설정정보(ex: applicatoin.yml)를 한 곳에서 관리 할 수 있습니다.하지만 해당 정보가 수정 될 경우 클라이언트 어플리케이션을 재기동해야 하는 것은 변함이 없습니다.이러한 방식은 이상적..
2019.02.24 -
Spring Cloud - Eureka를 이용한 마이크로서비스 동적등록&탐색&부하분산처리
Spring Cloud - Eureka를 이용한 마이크로서비스 동적등록&탐색&부하분산처리스프링 클라우드 유레카는 넷플릭스 OSS에서 유래됐다. 자가 등록, 동적 탐색 및 부하 분산에 주로 사용되며, 부하 분산을 위해 내부적으로 리본을 사용한다.마이크로서비스의 장점 중 하나인 동적인 서비스 증설 및 축소를 유레카를 이용하면아주 쉽게 가능하다. 위의 그림과 같이 사용자의 사용이 급격하게 많아졌다고 가정해보자.그렇다면 위와 같이 서비스 인스턴스를 증설할 것이다. 여기에서 유레카를 사용한다면 마이크로서비스 인스턴스를 하나 추가하면자가 등록을 통해 유레카서버에 자신의 서비스를 등록한다.그러면 동적으로 추가된 인스턴스를 탐색할 수 있게 되고 내부적으로 리본에 의해같은 인스턴스 4개가 부하 분산(로드밸런싱) 처리가 ..
2019.02.24 -
Spring Cloud - Spring Cloud Config(스프링 클라우드 컨피그)
Spring Cloud - Spring Cloud Config(스프링 클라우드 컨피그)Spring cloud Config(스프링 클라우드 컨피그) 서버는 애플리케이션과 서비스의 모든 환경설정 속성 정보를 저장하고, 조회하고 관리할 수 있게 해주는 외부화된 환경설정 서버다. 스프링 컨피그는 환경설정 정보의 버전 관리 기능도 지원한다. 환경설정 속성 정보를 애플리케이션 배포 패키지에서 분리해 외부화하고 외부 소스에서 설정 정보를 읽어노는 방법이다. 위의 그림과 같이 스프링 클라우드 컨피그 서버가 모든 마이크로서비스의 환경설정정보를 가지고 있고,설정 배포의 작업을 진행한다. 하지만 항상 서버에 접근해서 설정정보를 가져오지는 않고,첫 애플리케이션 구동 단계에서 설정정보를 가져와 로컬에 캐시를 해둔다. 그리고 만..
2019.02.23 -
Springboot - CommandLineRunner(커맨드라인러너)
Springboot - CommandLineRunner(커맨드라인러너) Springboot에서 서버 구동 시점에 초기화작업으로 무엇인가를 넣고 싶다면 사용할 수 있는 방법 중 하나가 CommandLineRunner인터페이스를 상속받는 것이다. @SpringBootApplication 어노테이션이 붙어있는 부트구동 클래스에 CommandLineRunner를 implements하고 run(String... strings)를 Override한다.그리고 해당 run()에 애플리케이션의 초기작업(빈등록 과정 등등)이후 실행할 로직을 작성해주면 된다. 예제 코드는 항공편 예약서비스 예제인데, 애플리케이션 구동 시점에 예약가능한비행편을 알아보기위하여 검색 마이크로서비스 애플리케이션에 초기데이터를 삽입하는 코드이다. ..
2019.02.21