It can't be Cloud Native if it only runs on one cloud
Monty Taylor
twitter: @e_monty
Those who do not understand UNIX are condemned to reinvent it,
poorly.
Henry Spencer
Who am I?
CTO Office
CI/CD and Automation
Zuul
Ansible
Who am I?
Developer Infrastructure Core Team
Shade PTL
Technical Committee (for another week)
Former Foundation Board of Directors
Infrastructure PTL Emeritus
In the beginning ...
Google's architecture features clusters of more than 15,000 commodity
class PCs with fault-tolerant software. This architecture achieves
superior performance at a fraction of the cost of a system built from
fewer, but more expensive, high-end servers.
Web Search for a Planet: The Google Cluster Architecture
Luiz Andre Barroso, Jeffrey Dean, Urs Hölzle - 2003
https://research.google.com/pubs/pub49.html
- Assume failure
- Use cheap servers, not expensive servers
- Scale out, not up
Who was I?
Professional Services
High Availability
Scaling
Cluster
I asked for a crossover cable...
Why MySQL? Wouldn’t NoSQL databases, for example, be better suited for the massive workloads seen at Facebook?
I have not been able to find a transactional NoSQL database
better than InnoDB. And it’s easy to understand how MySQL Replication
works, which makes much easier to fix problems in production.
Yoshinori Matsunobu, Facebook Engineering, 2014
Lessons from MySQL
- Simple is better than complex
- Know how your software works
- How something fails is more important than how something works
Who was I?
Professional Services
High Availability
Scaling
Cluster
Lessons from Sun
- Simple is better than complex
- Assume failure
- Use cheap servers, not expensive servers
- Scale out, not up
Who was I?
Fork of MySQL
Modern C++0x
Microkernel Design
Why have one when you can have two at twice the price?
"A Database For The Cloud"
- Removed bloat (triggers, stored procedures, mediumint)
- Sensible Defaults - no config needed
- Moved data dictionary into InnoDB tablespace
- Immediate Ancestor of OpenStack's Gating
We used to sit around in the Unix Room saying,
'What can we throw out?
Why is there this option?' It's often because there is some deficiency
in the basic design — you didn't really hit the right design point.
Instead of adding an option, think about what was forcing you to add
that option.
Doug McIlroy, 2005
UNIX philosophy
- Make each program do one thing well. To do a new job, build afresh
rather than complicate old programs by adding new "features".
- Expect the output of every program to become the input to another,
as yet unknown, program. Don't clutter output with extraneous
information. Avoid stringently columnar or binary input formats.
Don't insist on interactive input.
- Design and build software, even operating systems, to be tried
early, ideally within weeks. Don't hesitate to throw away the clumsy
parts and rebuild them.
- Use tools in preference to unskilled help to lighten a programming
task, even if you have to detour to build the tools and expect to
throw some of them out after you've finished using them.
Doug McIlroy, Bell System Technical Journal, 1978
the power of a system comes more from the relationships among programs
than from the programs themselves
The Unix Programming Environment
Brian Kernighan and Rob Pike
Cloud Native Is ...
- Architectural and operational approach
- Assume cloud
- Assume failures
- Microservices
- Containerized?
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
Ooops
VI. Stateless
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?
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.
Václav Havel
As computation continues to move into the cloud, the computing platform
of interest no longer resembles a pizza box or a refrigerator, but a
warehouse full of computers. ... in other words, we must treat the
datacenter itself as one massive warehouse-scale computer.
The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines
Luiz André Barroso, Urs Hölzle - 2009
https://research.google.com/pubs/pub35290.html
The use of top-down design methods and high-level languages in
producing portable applications software is well established. By
applying the same principles at the systems programming level,
portability can be extended to the operating system itself. Although
the Unix operating system was developed for a specific computer (the
DEC PDPll), its concise and elegant design and the careful selection
of 'primitives' which it provides make it an ideal candidate for
portability.
UNIX: a portable operating system?
Richard Miller - 1978
If the datacenter is the new computer ...
Then the power of OpenStack is as a portable Operating System
Just as MVS was an Operating System for IBM System/370 ...
AWS is an Operating System specific to Amazon Datacenters
Google Cloud is an Operating System specific to Google
Datacenters
If sets of cheaper commodity servers are superior to fancy custom
built high-end hardware ...
Then commodity data centers with a common Operating System should
be better than fancy data centers controlled by one or two companies
Linux won the battle for single-computer Operating Systems.
Let's win the battle for a Free, Open and Portable Operating System
for warehouse-scale computers.
Thank you!
twitter: @e_monty