dipping your toes into cloud native application development
Post on 16-Jan-2017
1.180 Views
Preview:
TRANSCRIPT
Dipping Your Toes Into Cloud Native Application Development
Who is this guy?
– mattfarina.com, @mattfarina– Principal Engineer, Advanced Technology
Group, Hewlett Packard Enterprise– Go, Node.js, PHP, Ruby, Python, .NET… in
just past 5 years– Recently wrote book, “Go in Practice”– Co-lead Kubernetes SIG Apps– Likes to build things in the cloud– Doesn’t like bullet lists
2
3By Swaminathan https://www.flickr.com/photos/araswami/2284451064/
Been doing cloud for 6 years and cloud native for 4 years. Yes, there is a difference
4By Ted Silveira https://www.flickr.com/photos/cafebongo/14062452417/
Went from a large monolithic pet app to a cloud native application through a practical process
5By Dubwise Version https://www.flickr.com/photos/dubwise_version/4718137117
1.Why care about cloud native development?
2.What is cloud native?3.What tools can be used?4.How can you get from here to there?
6
Why care about cloud native?
7
8By: Fernando Frazão/Agência Brasil
Speed and Flexibility
9Almost No Downtime
By: Marcin Wichary
What does cloud native really mean?
10
“container packaged, dynamically scheduled, and microservices based application development and operations.”– Cloud Native Computing Foundation (CNCF)
11
“container packaged”
12By Sergio Morchon https://www.flickr.com/photos/smorchon/2431349077/
Containers isn’t just Docker…
13
Does this mean I can’t do cloud native with VMs?
14
“dynamically scheduled”
15
Method 1: You Manage It
16
Object Storage
Chef, Ansible, or Puppet
Network
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
But, what way do most desktop applications work?
Choice 1 Choice B
17
App Laptop
Desktop
Pro Desktop
App CPU(s)
RAM
Drives
NIC(s)
Method 2: Datacenter/Cluster as a Computer
18
Computer
• Could be a datacenter, rack, or single computer
• Manages the needed infra and changes for your apps for you
• Think of it as one computer rather than managed collection
REST API
What’s Happening Inside The Computer?
19
Computer
REST APIRouter
Scheduler
App 1 App 2
App 3 App 4
Storage
Config
20
Combined Truth
21
ComputerREST API
Server
Server
Server Server
Server
ServerRouter
Router
Router
Chef, Ansible, or
Puppet
As app devs and operators see it What infra devs and operators do
Managing Apps and a Datacenter as a Computer
22
What You Can Use Today
23
“microservices based”
What is a microservice?–Small–Focused on doing one thing well (single responsibility principle)–Independently deployable–Clearly defined API for interaction–Potentially reusable in other systems
24
25
Monolithic App
Monolithic App
Monolithic App
Monolithic App
…
Micro Micro Micro Micro Micro
Micro
Micro
Micro
Micro
Micro
Micro
Micro
Micro
Potential Network ProblemDon’t let the network be your bottleneck
26
What makes a good REST API?
– Versioned, typically in the URL
– Use proper HTTP methods
– Behind Authentication and Authorization
– HTTP/2 if possible (for pipelines and connection reuse)
– TLS/HTTPS (encrypted transport)
– Proper HTTP response codes
– JSON
– Open API Initiative (Swagger)
27
Reuse connections
28
HTTP/2 and Pipelining
29
12 Factor++ (12factor.net)
1. One codebase tracked in revision control, many deploys
2. Explicitly declare and isolate dependencies
3. Store config in the environment4. Treat backing services as attached
resources5. Strictly separate build and run
stages6. Execute the app as one or more
typically stateless processes containers
7. Export services via port binding8. Scale out via the process model
containers9. Maximize robustness with fast
startup and graceful shutdown10.Keep development, staging, and
production as similar as possible11.Treat logs as event streams12.Run admin/management tasks as
one-off processes containers
30
Store config in the environment
31
Treat backing services as attached resources
32
µ
Execute the app as one or more stateless processes
33
Treat logs as event streams (stdout)
34
Pets vs cattle
35
Updating Applications
36
37
App(online)
App(online)
App(online)
App(offline)
App(offline)
App(offline)
App(update)
App(update)
App(update)
App(online)
App(online)
App(online)
Blue / Green DeploymentsStart with Green
38
RouterUsers
AppAppAppApp
AppAppAppApp
Blue / Green DeploymentsSwitch to Blue
39
RouterUsers
AppAppAppApp
AppAppAppApp
Canary Release
40
Rolling Updates
41
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
Rolling Updates
42
v2 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
Rolling Updates
43
v2 v2
v1 v1
v2 v2
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v2 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
v1 v1
Rolling Updates
44
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
v2 v2
3 Paths To Cloud Native:
1. Migration2. Greenfield3. Additive
45
Path 1: Migrating
46
My Web App Before The Cloud
47
This may look familiar
Webserver
Webserver
Webserver
Webserver
Load BalancersLoad BalancersUsersSharedfilesystemVia Gluster
memcached
memcached
memcached
memcached
MySQL
MySQL
MySQL
MySQL
MySQL had master and slave with fail over
Setup split between two physical locations
Individual servers managed by Chef in Prod, Test, and Dev environments
3x Web Apps+ more coming
48
… at the same time... Experiments in the cloud
49
Object Storage
VMVM VM
VM VM VM
Network
Users
Cloud resources managed by scripts and toolchains (like Chef)
Block Storage
50
51
52
aPaaS
53
Development Platform
54
Stackato Cluster(s)
Stackato ClustersProduction, QA, and Development Clusters
55
App 1
Load BalancersLoad BalancersUsersmemcachedmemcachedmemcached
MySQLMySQLMySQL
MySQL shifted over life of cluster. In Stackato and SaaS were used
Automation and scripts managed the clusters running on a IaaS (backed by VMs, Networking, Block Storage, and Object Storage).
App 1App 1
App 1App 1App 2
App 1App 1App N
…Detected top level problems and handled some failover
Ops Managed Platform
Filesystem Service
Stackato ClustersDev Process
56
Production Stackato
QAStackato
DevStackato
PersonalEnvironment(s)
CI/CDGitDev
Branch to environment:master → productionQA → QAdevel → Dev
Production and QA used blue/green deployments with zero downtime
Features work on via feature branches
Continuous Integration is about trust
57https://commons.wikimedia.org/wiki/File:CISV_trust_game.JPG
Continuous Integration brings reproducibility
58
https://en.wikipedia.org/wiki/Assembly_line#/media/File:Ford_assembly_line_-_1913.jpg https://en.wikipedia.org/wiki/KUKA_Systems#/media/File:Application_field_automotive.jpg
What is CD in CI/CD?
Continuous Delivery
Continuous Deployment
59
Code change pushed
Test code
BuildImage
Store build
...New build detected /
chosenDeploy to
environment
Started With A Mono App
60
Stackato
memcached
MySQL
Filesystem Service
App 1Big Mono App
Started With A Mono App
61
Stackato
memcached
MySQL
Filesystem Service
App 1Slightly SmallerBig App
App 1Microservice(App 2)
Path 2: Greenfield
62
Start With Your Setup
63
Computer
REST API
Setup CI
64
Environment 1 Stackato
Environment 2 Stackato
Environment 3 Stackato
PersonalEnvironment(s)
CI/CD(Code Engine /
Jenkins)GitDev
Built a Cloud Native Application
65
Stackato
DB DB DB
User InterfaceSe
rvic
e 1
Serv
ice
2
Serv
ice
3
Serv
ice
4
Serv
ice
N
… SaaS
Built a Cloud Native Application
66
Docker
DB DB DB
User InterfaceSe
rvic
e 1
Serv
ice
2
Serv
ice
3
Serv
ice
4
Serv
ice
N
… SaaS
Automation and ChatOps FTW
67
Path 3: Additive
68
We had a traditional application
69
These were physical but could have been VM
Webserver
Webserver
WebserverLoad BalancersLoad BalancersUsers
MongoDB
MongoDB
MongoDB
MongoDB
Setup split between multiple physical locations
Individual servers managed by Chef in Prod, Test, and Dev environments
Webserver
Added Cloud Native Environment
70
The legacy environment was not retired
Webserver
Webserver
Webserver MongoDB
MongoDB
MongoDB
MongoDB
Legacy App called to cloud native app over REST API
Webserver
Stackato
Service 1
Service 2
Service 3
Service 4
Load BalancersLoad BalancersUsers
Monitor Everything
71
Webserver
Webserver
WebserverMongoDB
MongoDB
MongoDB
MongoDBWebserver
Stackato
Service 1 Service 2
Load BalancersLoad BalancersUsers
Monitor IntelligentlyIf you didn’t monitor it did it happen?
72
Tools You Can Use
73
74
Datacenter/Cluster as a ComputerMake it easy for developers
75
Computer
REST APIThing that deploys
Start With A PlatformThink Datacenter as a Computer
76
Lifecycle ManagementConsider Helm when using Kubernetes
77
Kubernetes
REST APIHelm (to manage deployment)
CI/CD
The CI/CD SystemMake it easy for developers
78
Computer
REST APIThing that deploysGitDev
CI/CD SystemsThere are just so many
79
Some Are Container Based By Default
80
ChatOps
81
Config service
82
Monitor Everything
83
GitHub ScientistPlus others following suit with more language support
84
GitHub Scientisthttp://githubengineering.com/scientist/
85
Questions?Matt Farina@mattfarinamattfarina.com / hpe.com
86
top related