The Cloud Native Fallacy: You are not Google, or How to Stop Worrying and Learn to Love your Servers
Who am I?
Office of Technology
Who am I?
Foundation Board of Directors
Developer Infrastructure Core Team
Is Cloud Native good?
Is not-Cloud Native bad?
Do you need to write Cloud Native apps to use cloud?
Are you a bad person if you don't write Cloud Native apps?
Cloud-native applications are meant to function "in a world of cloud
computing that is ubiquitous and flexible." Applications can be
developed on a cloud platform, then deployed to different clouds where
supporting software stacks will help them run at scale.
Information Week - Jul 30, 2015
The Cloud Native Computing Foundation will harmonize emerging
technologies and foster innovation in container packaged, dynamically
scheduled, and microservices based application development and
Cloud Native Is ...
- Architectural and operational approach
- Assume cloud
- Assume failures
12 Factor Application
I. Codebase - One codebase tracked in revision control, many deploys
II. Dependencies - Explicitly declare and isolate dependencies
III. Config - Store config in the environment
IV. Backing services - Treat backing services as attached resources
V. Build, release, run - Strictly separate build and run stages
VI. Processes - Execute the app as one or more stateless processes
VII. Port binding - Export services via port binding
VIII. Concurrency - Scale out via the process model
IX. Disposability - Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity - Keep development and production as similar as possible
XI. Logs - Treat logs as event streams
XII. Admin processes - Run admin/management tasks as one-off processes
Except for III
I use config files
If /dev/null is fast in web scale I will use it. Is it web scale?
Use a service to store your data - like a database
Is that database service web scale?
Go google and watch "MongoDB is Web Scale"
A Foolish Consistency is the Hobgoblin of Little Minds
A foolish consistency is the hobgoblin of little minds, adored by
little statesmen and philosophers and divines. With consistency a great
soul has simply nothing to do. He may as well concern himself with his
shadow on the wall. Speak what you think now in hard words, and
to-morrow speak what to-morrow thinks in hard words again, though it
contradict every thing you said to-day. — 'Ah, so you shall be sure to be
misunderstood.' — Is it so bad, then, to be misunderstood? Pythagoras
was misunderstood, and Socrates, and Jesus, and Luther, and Copernicus,
and Galileo, and Newton, and every pure and wise spirit that ever took
flesh. To be great is to be misunderstood.
Ralph Waldo Emerson
Cloud Native / 12 Factor is **A** great approach
You still have to think.
The tragedy of modern man is not that he knows less and less about
the meaning of his own life, but that it bothers him less and less.
The tragedy of the modern technologist is not that he knows less
and less about how computers work, but that it bothers him less and
As an application developer,
I want to deploy and run an application on the internet
so that my customers all over the world can consume it.
As an operator,
I want to deploy the application across multiple clouds
so that my service survives issues in any one of them.
I'm doing it myself as we speak
10-20k VMs per-day
10 Cloud Regions in 7 clouds
Only using OpenStack APIs
Our VMs are everywhere
- Rackspace: Dallas, Chicago, DC
- Internap: New York
- OVH: Strassbourg, Gravelines
- Vexxhost: Montreal
- OpenStack Innovation Center: San Antonio
Managed Private Clouds
- Blue Box: San Jose
- Red Hat: Phoenix
We also have servers
Infra Cloud - Hardware donated by Hewlett-Packard Enterprise
Traditional 'Enterprise' Java Application
- Nova VM, Cinder Volume, Trove DB
- Scale out farm of git replicas
- Project rename takes several hours of downtime
- Cloud Native
- with config files
- Purpose built in Python
- Keeps a pool of ready to go nodes
- Fully elastic - responds to demand
Run what you want
12-factor application on Kubernetes with Kuryr
Traditional Java web application behind NAT with a Floating IP
Kerberos Server on the Internet with Fixed IP and Reverse DNS
Baremetal for hardware enabled transcoding via Ironic
DevOps recognizes the need for Dev and Ops to collaborate
Rigid devotion to any guidelines without judgement is deadly