본문 바로가기

Spring cloud

(7)
Spring cloud stream kafka - concurrency spring.cloud.stream.bindings..consumer.concurrency 옵션과 관련해 설명한다. 아래 상황이 있다고 가정하자. 토픽 이름 : A-topic 파티션 개수 : 4 앱 인스턴스 개수 : 1(concurrency == 2) 보통은 위와 같이 설정을 하게 되면, 당연히 하나의 앱에서 2개는 동시 처리 하겠구나 생각을 하기 마련이지만 실제로는 그렇게 동작하지 않을 수 있다. 아래와 같이 컨슈머 그룹이 구성 되어 있다고 생각해보자 ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group a-topic-group --describe GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFF..
Spring Cloud - Eureka Client 안전한 종료 방법(Discovery Client Shutdown, Spring boot graceful shutdown) 2019/02/24 - [Web/Spring Cloud] - Spring Cloud - Eureka를 이용한 마이크로서비스 동적등록&탐색&부하분산처리 Spring Cloud - Eureka를 이용한 마이크로서비스 동적등록&탐색&부하분산처리 Spring Cloud - Eureka를 이용한 마이크로서비스 동적등록&탐색&부하분산처리 스프링 클라우드 유레카는 넷플릭스 OSS에서 유래됐다. 자가 등록, 동적 탐색 및 부하 분산에 주로 사용되며, 부하 분산을 위해 내부.. coding-start.tistory.com 우리는 이전 포스팅들에서 Spring Cloud를 다루어보면서 동적인 서비스 등록과 서버사이드 로드밸런싱에 중대한 역할을 하게 되는 Eureka에 대해 다루어 봤었다. 이러한 유레카를 이용하여 우리는 ..
The Twelve-Factor App 최근 소프트웨어를 서비스 형태로 제공하는게 일반화 되면서, 웹앱 혹은 SaaS(Software As A Service)라고 부르게 되었다. Twelve-Factor app은 아래 특징을 가진 SaaS 앱을 만들기 위한 방법론이다. 설정 자동화를 위한 절차를 체계화하여 새로운 개발자가 프로젝트에 참여하는데 드는 시간과 비용을 최소화한다. OS에 따라 달라지는 부분을 명확히하고, 실행 환경 사이의 이식성을 극대화한다.(OS에 종속되지 않는 애플리케이션) 클라우드 플랫폼에 적합하고, 서버와 시스템의 관리가 필요없게 된다. 개발 환경과 운영 환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능하다. 툴, 아키텍쳐, 개발방식을 크게 바꾸지 않고 확장(scale up)할 수 있다. Twelve-F..
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) 클라이언트별로 적용돼야 할 정책이 있다..
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)를 한 곳에서 관리 할 수 있습니다.하지만 해당 정보가 수정 될 경우 클라이언트 어플리케이션을 재기동해야 하는 것은 변함이 없습니다.이러한 방식은 이상적..
Spring Cloud - Eureka를 이용한 마이크로서비스 동적등록&탐색&부하분산처리 Spring Cloud - Eureka를 이용한 마이크로서비스 동적등록&탐색&부하분산처리스프링 클라우드 유레카는 넷플릭스 OSS에서 유래됐다. 자가 등록, 동적 탐색 및 부하 분산에 주로 사용되며, 부하 분산을 위해 내부적으로 리본을 사용한다.마이크로서비스의 장점 중 하나인 동적인 서비스 증설 및 축소를 유레카를 이용하면아주 쉽게 가능하다. 위의 그림과 같이 사용자의 사용이 급격하게 많아졌다고 가정해보자.그렇다면 위와 같이 서비스 인스턴스를 증설할 것이다. 여기에서 유레카를 사용한다면 마이크로서비스 인스턴스를 하나 추가하면자가 등록을 통해 유레카서버에 자신의 서비스를 등록한다.그러면 동적으로 추가된 인스턴스를 탐색할 수 있게 되고 내부적으로 리본에 의해같은 인스턴스 4개가 부하 분산(로드밸런싱) 처리가 ..
Spring Cloud - Spring Cloud Config(스프링 클라우드 컨피그) Spring Cloud - Spring Cloud Config(스프링 클라우드 컨피그)Spring cloud Config(스프링 클라우드 컨피그) 서버는 애플리케이션과 서비스의 모든 환경설정 속성 정보를 저장하고, 조회하고 관리할 수 있게 해주는 외부화된 환경설정 서버다. 스프링 컨피그는 환경설정 정보의 버전 관리 기능도 지원한다. 환경설정 속성 정보를 애플리케이션 배포 패키지에서 분리해 외부화하고 외부 소스에서 설정 정보를 읽어노는 방법이다. 위의 그림과 같이 스프링 클라우드 컨피그 서버가 모든 마이크로서비스의 환경설정정보를 가지고 있고,설정 배포의 작업을 진행한다. 하지만 항상 서버에 접근해서 설정정보를 가져오지는 않고,첫 애플리케이션 구동 단계에서 설정정보를 가져와 로컬에 캐시를 해둔다. 그리고 만..