Slide 1

Slide 1 text

Unless otherwise indicated, these slides are © 2013-2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cloud Native Apps with
 Spring Cloud Stéphane Nicoll, Spring Boot committer, Pivotal Software inc. @snicoll

Slide 2

Slide 2 text

https://github.com/snicoll @snicoll Stéphane Nicoll [email protected]

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

“Innovate and deliver faster
 than your competition

Slide 8

Slide 8 text

Microservices?

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

! Distributed systems? ! Microservices? ! Cloud Native Apps?

Slide 11

Slide 11 text

Monolith?

Slide 12

Slide 12 text

“A global entity that handles state/ failure scenarios “A smart application server, everything included “Easy to turn into a mess…

Slide 13

Slide 13 text

! Complex system ! Easy to work with ! Modularity comes from language / framework ! Inefficient scaling

Slide 14

Slide 14 text

! Long term commitment to technology ! intimidating to new developers ! obstacles to frequent releases

Slide 15

Slide 15 text

Cloud native apps?

Slide 16

Slide 16 text

“Smart agents that should know how to handle failures “Smart services, dumb pipes “Harder to do right…

Slide 17

Slide 17 text

! Simple system ! Harder to work with ! Modularity based on component services ! Scaling efficiently

Slide 18

Slide 18 text

! Easy to try new things ! Less intimidating ! Frequent deploys

Slide 19

Slide 19 text

Spring Cloud

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

SPRING CLOUD

Slide 22

Slide 22 text

Example/Demo:
 Coffee app.

Slide 23

Slide 23 text

Breaking
 the
 Monolith Store Customer Profile

Slide 24

Slide 24 text

Customer
 name and
 location Customer

Slide 25

Slide 25 text

List of stores
 with
 geo search Store

Slide 26

Slide 26 text

Customer
 info and
 nearest stores Profile

Slide 27

Slide 27 text

Now Separate apps Customer Profile Store

Slide 28

Slide 28 text

Configuration
 management

Slide 29

Slide 29 text

Config
 Server Config Server Git repository

Slide 30

Slide 30 text

Finding Services ? ?

Slide 31

Slide 31 text

Profile Eureka Customer Store Service Discovery
 Eureka

Slide 32

Slide 32 text

Profile Customer #3 Tied to
 single
 instance? Customer #2 Customer #1

Slide 33

Slide 33 text

Profile Eureka customer ? customer:
 - instance #1 - instance #2 - …

Slide 34

Slide 34 text

Instance #3 Client load balancing
 Ribbon Instance #2 Instance #1 Round robin, AWS zone affinity Ribbon

Slide 35

Slide 35 text

service B Cascading Faults service A

Slide 36

Slide 36 text

service B service A Circuit breaker
 Hystrix Fallback

Slide 37

Slide 37 text

To the 
 cloud!

Slide 38

Slide 38 text

! Spring Cloud Bus w/ Config Server: push configuration changes automatically ! Turbine: gathers all relevant hystrix.stream in a unified turbine.stream ! Feign: declarative REST client ! Zuul: routing and filtering (e.g. for UI applications that want to proxy calls to one or more back end services) ! … If we had more time…

Slide 39

Slide 39 text

! Spring Cloud Sleuth: distributed tracing (HTrace, Zipkin) ! Spring Cloud Consul: Service discovery and configuration management using Hashicorp’s Consul ! Spring Cloud Zookeeper: Ditto using Apache Zookeeper If we had more time… (cont’d)

Slide 40

Slide 40 text

Links ! https://cloud.spring.io ! https://start.spring.io ! https://spring.io/guides ! http://stackoverflow.com/tags/spring-cloud ! https://run.pivotal.io/ ! https://pivotal.lanyrd.com/

Slide 41

Slide 41 text

No content