기본 콘텐츠로 건너뛰기

라벨이 Spring-Cloud인 게시물 표시

Spring Cloud GCP가 1.0 정식버전을 릴리즈 했습니다.

얼마 전에 Knavtive 에 Spring이 협업하고 있다는 소식을 전해드린 적이 있습니다. 그동안 Google의 GCE 서비스와 GCP의 Google Cloud SQL 서비스, Firebase 등을 이용하면서 Spring이 Google 서비스와의 Integration Project를 진행해주면 좋겠다는 아쉬움이 컸었는데요. 이번에 Spring Cloud Project에서 Google Cloud 팀과 협업을 진행해 Spring Cloud GCP를 정식 Release 했다는 반가운 소식을 접하게 되었습니다. Spring에서 발표한 정식 Release 소식은 여기 서 확인이 가능하고, 전반적인 Project 내용은 여기 서 확인 가능합니다. 언제나 그렇듯이 통합되는 내용을 아주 간단하게 정리하면 다음과 같습니다. Messaging 모든 Spring Messaging 지원은 spring-cloud-gcp-pubsub 및 spring-cloud-gcp-pubsub-stream-binder 모듈과 Spring Integration 및 Spring Cloud Stream을 기반으로 한다네요. 여기에는 Google Cloud Pub/Sub 기반의 PubSubTemplate이 있고, PubSubTemplate 기반으로 작업된 PubSubInboundChannelAdapter와 PubSubMessageHandler가 Spring Integration Channel Adapters의 역할을 하게 됩니다. 그리고, 이번 릴리즈에는 메시지 변환을 위한 PubSubMessageConverter와 헤더 맵핑을 위한 PubSubHeaderMapper도 포함되어있다고 합니다. Spring Boot도 당연히 지원되는데 spring-cloud-gcp-autoconfigure 모듈을 이용해서 PubSubMessageChannelBinder를 통한 Spring Cloud Stream Integration 바인딩을 ...

Pivotal이 Knative에서 구글과 힘을 합쳤다고 합니다.

며칠 된 소식으로 보이는군요. Pivotal이 Knative에서 구글과 힘을 합쳤다고 합니다. Knative는 구글이 Google Cloud Service에서 Kubernetes + Istio를 발전시켜서 Serverless 생태계에 좀 더 나은 솔루션을 제공하려고 만든 프로젝트라고 합니다. ( Knative 프로젝트 메인 페이지 , Knative Github ) Kubernetes와 Istio는 Cloud Service에 관심 있으신 분들은 잘 아시는 내용일 텐데요. 전 Istio는 이번에 처음 봤습니다. 찾아보니 Google, IBM, Lyft가 기여하고 있는 오픈소스 Service Mesh 구현체라고 합니다. 즉, 서비스 간의 통신을 추상화하고 거기에 Service discovery, Load balancing, Dynamic Request Routing, Circuit breaking, Retry and timeout, Distributed tracing 등등을 지원하는 서비스를 Service Mesh Service라고 하는데, 이것의 구현체 중 하나가 Istio라고 보시면 될 것 같습니다. (자세한 내용은 Cloud Labs Tech의 글을 참고 ) Spring Cloud에는 이미 Spring Cloud Neflix 프로젝트에 의해서 대부분 포함이 되어있는 기능이 아니냐고 생각하실 텐데요. 이 기능을 스프링 프로젝트에 설정하지 않고 Kubernetes + Istio 에서 지원을 한다는 뭐 그런 내용이지요. 아무튼 이 프로젝트에 그동안 Pivotal의 엔지니어들이 풀타임으로 지원을 했다고 하네요. 결국 Pivotal이 서비스하고 있는  Pivotal Container Service (PKS) 에  Knative가 통합이 되었다고 합니다. 현재 저는 그냥 앞서 말씀드렸던 Spring Cloud의 일부 모듈을 설정해서 사용하고 그 위에 docker-compose의 내부 통신 추상화 기능...

[포스트 공유] Top Five Books to Learn Spring Boot and Spring Cloud for Java Developers

오늘도 다른 이의 포스트를 공유해 드립니다. 몇 년 전부터 매우 핫한 아이템이죠. 스프링부트와 클라우드서비스! 지금은 철 지난 포스트가 되었지만 몇 년 전에 저도 여러 포스트를 올린 적이 있습니다. 버전을 업해서 포스트를 꾸준히 관리해놔야 하는데, 최근 보다 보니 제 포스트보다는 다른 분들의 포스트가 훨씬 훌륭해서 그냥 과거의 산물로 놔두기로 했습니다. (핑계는 그만~~ ^^) 오늘은 그와 관련된 책을 소개한 포스트 하나를 공유하려고 합니다. Top Five Books to Learn Spring Boot and Spring Cloud for Java Developers Infotech 의 Lead Programmer 시고, 제가 자주 가는 DZone 에서도 활발히 활동하시면서 많은 글을 올리시는  Javin Paul 이라는 분의 시각에서 바라본 Top 5 입니다. Top XX 라는 글들을 그리 좋아하지는 않지만 보다 보면 몰랐던 새로운 것을 발견하게 되는 즐거움이 있기도 하죠. 이 글도 최근에 발표된 책들 위주로 정리가 되어있어서 관심 있게 본 글입니다. 참고로 아래는 글에서 언급된 책에 대한 국내 정보와 간단한 정리입니다. 언제나 그렇듯이 원문에는 더 많은 정보가 있으니 꼭 원문을 봐주시길 바랍니다. 1. Spring Boot in Action Walls, Craig가 쓴 책입니다. 국내에서는 스프링부트 코딩 공작소라는 이름으로 번역되어 발매되어 있습니다. 번역본은 2016년 7월 31일에 발매되었다고 합니다. 저도 이 책을 봤습니다만, 스프링부트에 대해서 개괄적인 이해와 동작을 확인하기에 딱 좋은 책이라고 생각합니다. 스프링부트를 사용하고도 한 1년쯤 지나서 이 책을 봤던 거 같은데, 그냥 무작정 검색하고 레퍼런스를 참고해서 쓸 때의 약간의 답답한 부분들을 해소해줬던 책이었던 기억이 있습니다. 다시 보면서 좀 더 정확한 감상을 적고 싶지만, 서울집에 책이 있어서... 2. Cloud Native Jav...

Hystrix, Hystrix dashboard, Turbine 의 구성

서론 Hystrix 는 Netflix 에서 제공하는 Circuit breaker 모듈이다. Circuit breaker는 차단기를 의미하는데, 전자회로에서 이상 전류의 발생을 중간에서 차단하는 장치이다. 비슷한 의미로 소프트웨어 애플리케이션에서도 사용되는데, 이상 현상이 있는 서비스에 대한 요청을 일시적으로 차단하여 이상 동작을 최소화하도록 처리하는 것을 말한다. 소프트웨어 애플리케이션의 Circuit breaker에 대한 내용은  http://martinfowler.com/bliki/CircuitBreaker.html 에서 확인이 가능하다. 마이크로서비스 아키텍처에서는 Circuit breaker의 역할이 중요하다. 아키텍처 구조상 다양한 통신채널(Rest API 또는 Message bus 등)로 서로 통신을 하게 되는데, 이 과정에서 네트워크 문제 등으로 서로 간의 통신할 수 없는 경우가 많이 있다. 이럴 경우 연쇄적인 오류를 방지한다거나, 문제가 있는 서비스에 계속해서 요청하고 대기하는 등의 작업을 최소화할 필요가 있다. Spring cloud에서는 Ribbon Loadbalancer와 함께 Hystrix를 이용한 Circuit breaker 를 사용하여 이러한 문제를 최대한 단순하게 처리할 수 있도록 제공하고 있다. 이번 포스트는 이 내용을 정리해보고자 한다. 이번 포스트에서 참고한 내용은 아래와 같다. Calistaenterprise 블로그 :  http://callistaenterprise.se/blogg/teknik/2015/04/15/building-microservices-with-spring-cloud-and-netflix-oss-part-2/ Josh Long의 Devoxx 2015 :  https://www.youtube.com/watch?v=SFDYdslOvu8&list=WL&index=3 이번 포스트를 준비하면서 테스트한 환경은 아래와 같다. Configurati...

Edge server와 Ribbon, 그리고 API 구성

서론 여기서 말하는 Edge Server는 다양한 API 서버들을 연결하는 Gatekeeper와 비슷한 역할을 그 주요 기능으로 한다. 이 외에 구성에 따라서는 외부 클라이언트와의 연결에서 Security의 진입점 같은 역할도 하기는 하지만, 그 부분은 다른 포스트에서 정리해볼까 한다. 이번 포스트를 정리할 때 사용한 예제는 대부분을 Calista 블로그의  Building microservices with Spring Cloud and Netflix OSS, part 1 에서 참고하였다. 사실 위 블로그의 내용을 거의 똑같이 따라 하면서 정리했다고 보는 것이 맞을 것 같다. 이 포스트보다 정리가 잘 되어있는 만큼 영어에 어려움이 없는 개발자라면 Calista 블로그의 내용을 보는 것이 더 나을지도 모르겠다. 한가지 참고할 수 있는 자료가 더 있는데 다른 포스트에서도 소개했던 적이 있는 Devoxx 2015 의 동영상 자료가 있다. 제목은  Getting started with Spring Cloud by Josh Long 으로 1시간 정도 라이브 코딩으로 Josh Long이 열정적으로 설명해준다. 영어를 못하는 나도 어느 정도 따라갈 수 있었던 동영상으로 강추하고 싶은 동영상이다. 시작하기에 앞서서 좋은 블로그 자료를 공개해줘서 샘플을 만들고 정리하는 데 도움을 준 Calista 블로그에 감사의 마음을 전하며, 자료를 함부로 가져다 쓰게 된 점에 대해 매우 미안한 마음을 전한다. 이번 포스트를 정리하기 위해 사용한 샘플은 아래와 같은 조건으로 작업이 되었다. Configuration Server 와 Discover Server : 이전 포스트 참고 JDK 8 : 1.8.0_65 Intellij 15.0.3 Gradle build : 2.10 Spring IO : 2.0.1  Spring Boot : 1.3.2 (이전 포스트 작성후에 버전이 1.3.1에서 1.3.2로 업그레이드됐다) Spring ...

Service Discovery Server와 Git을 이용한 Configuration Server

서론 이제 실제로 Spring-cloud 를 이용해서 마이크로서비스 아키텍처 스타일의 애플리케이션을 만드는 방법에 대해서 정리를 할까 한다. 우선은 전체 구조에서 가장 근간이 될 Service Discovery Server와 Cofiguration Server 로 시작해 보자. Configuration Server 는 이전 포스트 에서 한 번 정리를 한 적이 있으니 이번에는 Git을 이용해서 설정하는 법에 대해서만 정리할 예정이다. 이 포스트에서 사용된 소스를 실행하기 위한 부분이나 필요사항은 아래와 같다. gradle에 대한 기본 사용법 (버전 2.9와 2.10에서 확인했다) IDEA 15(이클립스에서도 될 것으로 보이나 테스트는 못해봤다) spring-io dependency-management-plugin : 0.5.4.RELEASE spring-io : 2.0.1.RELEASE spring-boot : 1.3.1.RELEASE git(local git, github) 에 대한 기본 지식 git repository :  https://github.com/roadkh/blog-cloud-sample.git Gradle 과 Git은 나도 능숙하게 쓰는 편은 아니므로 혹시 문제가 있으면 알려주시기를... 전체 소스는 아래와 같이 확인이 가능하다. git clone https://github.com/roadkh/blog-cloud-sample.git git checkout blog_01 프로젝트 Gradle 구성 설정하는 부분에 대한 설명은 이전 포스트 를 참고하기 바란다. 해당 포스트와 전체적으로 같다. 다만 settings.gradle 파일만 아래와 같이 변경되었다. rootProject.name = 'blog-cloud' ['client', 'server', 'api'].each { def projectDir = ...