Upload
matt-stine
View
838
Download
3
Embed Size (px)
Citation preview
DEPLOYING MICROSERVICES TO
1
MEMatt Stine @mstine
Principal Software EngineerPivotal
2
I WROTE A LITTLE CLOUD BOOK...
FREE - Compliments of Pivotal
http://bit.ly/cloud-native-book
ATTACK THE PIVOTAL BOOTH TO GET A PRINT
COPY!3
Now that you have Cloud Foundry, what are you going to do with it?
4
IF YOU'RE SMART, START WITH A
MONOLITH.5
MAKE IT 12 FACTOR6
EVENTUALLY THINGS GET BIGGER...
7
...AND IT BECOMES TIME TO DECOMPOSE.8
MICROSERVICES?9
Loosely coupled service oriented architecture with bounded contexts...
— Adrian Cockcroft
10
YOU MUST BE THIS TALL TO USE MICROSERVICES
▸ RAPID PROVISIONING▸ BASIC MONITORING
▸ RAPID APPLICATION DEPLOYMENT▸ DEVOPS CULTURE
http://martinfowler.com/bliki/MicroservicePrerequisites.html
11
A SYMBIOTIC RELATIONSHIP
12
PLATFORM FEATURES▸ Environment Provisioning▸ On-Demand Scaling▸ Failover/Resilience▸ Routing/Load Balancing
▸ Data Service Operations (BOSH)13
NO MICROSERVICEIS AN ISLAND
14
SOME CHALLENGES OF DISTRIBUTED SYSTEMS▸ Configuration Management
▸ Service Registration & Discovery▸ Routing & Load Balancing▸ Fault Tolerance▸ Monitoring
15
We need a representation of the composite system!
16
THE BIG A APP17
---memory: 512Minstances: 1no-route: trueservices: - cloudamqp-autoscaleapplications:- name: worker-process path: worker-process/build/libs/worker-process.jar- name: producer-process path: producer/build/libs/producer.jar- name: autoscaler-process path: autoscaler/build/libs/autoscaler.jar- name: autoscale-monitor no-route: false host: autoscale-monitor-${random-word} path: monitor/build/libs/monitor.jar
18
STATICVS.
DYNAMIC19
Like BOSH, but for microservices?
20
DECENTRALIZEDAUTONOMOUSCAPABILITY
TEAMS / SERVICES21
You write it, you run it!
22
23
SPRING CLOUDDISTRIBUTED SYSTEM PATTERNS FTW!
24
APP/SERVICELEVEL
PATTERNS25
DEPLOYING/RUNNING APPS
VS.COMPOSING FAULT TOLERANT SYSTEMS
26
SPRING CLOUD + NETFLIX OSS▸ Config Server / Cloud Bus▸ Eureka (Service Registry)▸ Ribbon (Load Balancer)▸ Hystrix (Circuit Breakers)▸ Zuul (Intelligent Routing)
27
WORKS ON LATTICE TOO!
https://lattice.cf28
CONFIG SERVER
29
CONFIG SERVER + CLOUD BUS
30
DEMO31
EUREKA (SERVICE REGISTRY)
32
DEMO33
BEFORE CF_RELEASE V204
34
CF_RELEASE V195"CF_INSTANCE_INDEX"=>"0","CF_INSTANCE_IP"=>"1.2.3.4","CF_INSTANCE_PORT"=>"5678","CF_INSTANCE_ADDR"=>"1.2.3.4:5678","CF_INSTANCE_PORTS"=>[{external:80,internal:5678}]
35
CF_RELEASE V204properties: dea_next: allow_host_access: true
36
AFTER CF_RELEASE V204
37
DEMO38
HYSTRIX (CIRCUIT BREAKER)
39
DEMO40
ZUUL (INTELLIGENT ROUTING)
41
DEMO42
SPRING CLOUD FUTURES▸ Alternative Stacks (Consul, Zookeeper, etcd, JRugged, ...)▸ Distributed Request Tracing/Correlation (i.e. Dapper/Zipkin)▸ Stateful Patterns (Leader Election, Locks, State Machine)
▸ Developer Workflow Improvements▸ Switches (Canaries, Feature Toggles, Surgical Routing, ...)
43
LEARN MOAR▸ http://cloud.spring.io
▸ http://spring.io/blog/2015/04/06/lattice-and-spring-cloud-resilient-sub-structure-for-your-cloud-native-spring-applications
▸ http://lattice.cf▸ http://netflix.github.io
44
THANK YOU▸ THIS TALK: https://github.com/mstine/2015-cfsummit-deploying-
ms-to-cf▸ DEMOS: https://github.com/mstine/intro-spring-cloud-workshop/
tree/lattice
45