A Cloud Native Series From Joe Beda

In this 6 part blog series originally posted on Heptio, Joe Beda (CTO of Heptio and starter of Google Compute Engine, Kubernetes and Google Container Engine) dives into the definition of Cloud Native, practical considerations of applying Cloud Native, how Cloud Native relates to DevOps, Containers and Container Clusters, how Cloud Native enables microservices, and how Cloud Native creates both problems and opportunities in the security domain.

Cloud Native Part 1: Definition

As Craig McLuckie and I spent quite a bit of time at Google (16 years between the two of us) and have a good understanding how Google builds and manages systems. But chances are you don’t work at Google. So how do all of these evolving new concepts apply a typical company/developer/operator?

This is the first part in a multi-part series that examines multiple angles of how to think about and apply “cloud native” thinking.

There is no hard and fast definition for what Cloud Native means. In fact there are other overlapping terms and ideologies. At its root, Cloud Native is structuring teams, culture and technology to utilize automation and architectures to manage complexity and unlock velocity. Operating in this mode is as much a way to scale the people side of the equation as much as the technology side.

Cloud Native is structuring teams, culture and technology to utilize automation and architectures to manage complexity and unlock velocity.

One important note: you don’t have to run in the cloud to be “Cloud Native”. These techniques can be applied incrementally as appropriate and should help smooth any transition to the cloud.

The real value from Cloud Native goes far beyond the basket of technologies that are closely associated with it. To really understand where our industry is going, we need to examine where and how we can make companies, teams and people more successful.

At this point, these techniques have been proven at technology centric forward looking companies that have dedicated large amounts of resources to the effort. Think Google or Netflix or Facebook. Smaller, more flexible, companies are also realizing value here. However, there are very few examples of this philosophy being applied outside of technology early adopters.We are still at the beginning of this journey when viewed across the wider IT world.

We are still at the beginning of this journey.

With some of the early experiences being proven out and shared, what themes are emerging?

More efficient and happier teams. Cloud Native tooling allows for big problems to be broken down into smaller pieces for more focused and nimble teams.

Drudgery is reduced through automating much of the manual work that causes operations pain and downtime. This takes the form of self healing and self managing infrastructure. Expect systems to do more.

More reliable infrastructure and applications. Building automation to handle expected churn often results in better failure modes for unexpected events and failures. Example: if it is a single command or button click to deploy an application for development, testing or production it can be much easier to automate deployment in a disaster recovery scenario (either automatically or manually).

Auditable, Visible and Debuggable. Complex applications can be very opaque. The tools used for Cloud Native applications, by necessity, usually provide much more insight into what is happening within an application.

Deep Security. Many IT systems today have a hard outer shell and a soft gooey center. Modern systems should be secure and least trust by default. Cloud Native enables application developers to play an active role in creating securable applications.

More efficient usage of resources. Automated “cloud like” ways of deploying and managing applications and services opens up opportunities to apply algorithmic automation. For instance, a cluster scheduler/orchestrator can automate placement of work on machines vs. having an ops team manage a similar assignment in a spreadsheet.

In the rest of this series, we’ll look at integrating with existing systems, DevOps, containers and orchestration, microservices, and security. Please read on and enjoy!