Who am I?

Distinguished Engineer

IBM Cloud

Who am I?

Technical Committee

Foundation Board of Directors

Developer Infrastructure Core Team

Slim Pickens Rides Bomb

Is Cloud Native good?

yes

Is not-Cloud Native bad?

no

Do you need to write Cloud Native apps to use cloud?

no

Are you a bad person if don't write Cloud Native apps?

no

What is Cloud Native?

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 operations.

Cloud Native Is ...

Pivotal Cloud Native Architecture

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

This is awesome

Except for III

I use config files

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?

Go google and watch "MongoDB is Web Scale"

A Foolish Consistency is the Hobgoblin of Little Minds

Cloud Native / 12 Factor is **A** great approach

You still have to think.

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.

THIS WORKS

I'm doing it myself as we speak

10-20k VMs per-day

10 Cloud Regions in 7 clouds

Only using OpenStack APIs

OpenStack Infra

Tooling, Automation and CI for OpenStack Project

Our VMs are everywhere

We also have servers

Infra Cloud - Hardware donated by HPE

Architecture

image

Gerrit

nodepool

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

Pivotal Cloud Native Architecture

DevOps recognizes the need for Dev and Ops to collaborate

Rigid devotion to any guidelines without judgement is deadly