Slide 1

Slide 1 text

© 2017 Pivotal !1 The Beginner’s Guide To Spring Cloud Ryan Baxter, Software Engineer, Pivotal @ryanjbaxter

Slide 2

Slide 2 text

!2 Nice To Meet You • Rookie engineer on the Spring Cloud team • Get In Touch • @ryanjbaxter • http://ryanjbaxter.com

Slide 3

Slide 3 text

!3 Agenda ▪ Spring Cloud Background ▪ Key Projects ▪ Getting Down and Dirty With Spring Cloud ▪ Questions

Slide 4

Slide 4 text

!4 Survey Time

Slide 5

Slide 5 text

!5 Anyone Know This Guy? O ur Ultim ate G oal

Slide 6

Slide 6 text

!6 Why Spring Cloud? ▪ In general, cloud native apps are a good thing, just not easy ▪ It was easy for big companies to put forth the resources to succeed with Cloud Native, but what about the little guys? ▪ Why do we have to reinvent the wheel each time someone wants to build a Cloud Native app? ▪ Follow the Spring Boot model of providing useful defaults for Cloud Native apps with the ability to easily configure them ▪ Cloud Agnostic

Slide 7

Slide 7 text

!7 Spring Cloud Components Configuration Service Discovery Routing and Messaging Tracing API Gateway Circuit Breakers CI Pipelines and Testing

Slide 8

Slide 8 text

!8 Yes There Are More • Spring Cloud Bus • Spring Cloud Stream • String Cloud Data and Task • Spring Cloud AWS ….and more

Slide 9

Slide 9 text

!9 Configuration ▪ We want to remove the configuration out of the application to centralized store across all environments ▪ Spring Cloud Config Server can use Git, SVN, filesystem and Vault to store config ▪ Config clients (microservice apps) retrieve the configuration from the server on startup ▪ Can be notified of changes and process changes in a refresh event

Slide 10

Slide 10 text

!10 Service Discovery ▪ With the dynamic nature of any cloud native application depending on things like URLs can be problematic ▪ Service Discovery allows micro services to easily discover the routes to the services is needs to use ▪ Netflix Eureka ▪ Zookeeper ▪ Consul

Slide 11

Slide 11 text

!11 Routing and Messaging ▪ Your cloud native app will be composed of many microservices so communication will be critical ▪ Spring Cloud supports communication via HTTP requests or via messaging ▪ Routing and Load Balancing: ▪ Netflix Ribbon and Feign ▪ Messaging: ▪ RabbitMQ or Kafka

Slide 12

Slide 12 text

!12 API Gateway ▪ API Gateways allow you to route API requests (internal or external) to the correct service ▪ Netflix Zuul ▪ Leverages service discovery and load balancer

Slide 13

Slide 13 text

!13 Circuit Breakers ▪ Failure is inevitable, but your user’s don’t need to know ▪ Circuit breakers can help an application function in the face of failure ▪ Netflix Hystrix

Slide 14

Slide 14 text

!14 Tracing ▪ A single request to get data from your application may result in an exponentially large number of requests to various microservices ▪ Tracing these requests through the application is critical when debugging issues ▪ Spring Cloud Sleuth and Zipkin

Slide 15

Slide 15 text

!15 CI Pipelines and Testing ▪ Building, testing, and deploying the various services is critical to having a successful cloud native application ▪ Spring Cloud Pipelines is an opinionated pipeline for Jenkins or Concourse that will automatically create pipelines for your apps ▪ Spring Cloud Contract allows you to accurately mock dependencies between services using published contracts

Slide 16

Slide 16 text

!16 DEMO

Slide 17

Slide 17 text

!17 Q&A Spring Cloud Homepage: http://projects.spring.io/spring-cloud/ GitHub: https://github.com/spring-cloud Samples: https://github.com/spring-cloud-samples Twitter: https://twitter.com/springcloud Ryan Baxter Homepage: http://ryanjbaxter.com GitHub: http://github.com/ryanjbaxter Twitter: http://twitter.com/ryanjbaxter