DevOps on Steroids with Oracle Kubernetes Engine(OKE), Oracle Developer Cloud Service, Wercker/Spinnaker, Helm and Monocular — Fundamentals (1/4)

Vamsi Ramakrishnan
jsonlovesyaml
Published in
6 min readSep 16, 2018

An article on hyper-optimization of Continuous Integration and Delivery. This article outlines

  • The motivation for DevOps
  • Describes the design philosophy, history, and, evolution of these principles

The second part to this article is a tutorial on its ease of implementation on Oracle Cloud

For the Impatient

Jump straight to the tutorial

Why DevOps

Every IT Organization fighting battles that are flavors of these four fundamental problems. DevOps provides ways and means to reach the light at the end of this tunnel

Infographics to help understand what DevOps can help you accomplish

Source : Oracle ACE
Source: Sherweb

How did DevOps come into being

The origin of DevOps is debatable but a large group of the audience seems to agree on this version. (Source)

  • At the Agile Conference in Toronto in 2008, Andrew Schafer offered to moderate a meeting titled “Agile Infrastructure.”
    In the same year, Debois and Shafer formed an Agile Systems Administrator group on Google.
  • At the O’Reilly Velocity Conference in 2009, John Allspaw, and Paul Hammond delivered a presentation titled “10+ Deploys per Day.”
  • In the year 2013, “The Phoenix Project,” written by Gene Kim, Kevin Behr, and George Spafford. This fictional novel tells the story of an IT manager thrust into a hopeless situation. He’s charged with salvaging a mission-critical e-commerce development project.

What inspired DevOps

DevOps draws inspiration from the Toyota Production System, by Taiichi Ohno. (Source)

Basic Building Blocks for DevOps at Scale

The scope of DevOps goes way beyond a set of principles and tools. In this article, I will focus on the toolchain and how they align well with DevOps principles

Pillars for DevOps at Planet Scale

Immutable/Idempotent Infrastructure

The motivation to have immutable and idempotent infrastructure arises from these problems

Snowflake Servers

Configuring a Snowflake Server Requires: 
--> Multi-language command line invocations(Bash, Python, Manual file copies)
--> Frequent jumping between GUI screens
--> Order of execution is SysAdmin artistry
--> Ad-hoc changes
--> Documented in Email, Excel and Word
Credit: Martin Fowler — Snowflake Server

“Avoid Snowflake servers like the plague”

Pet Servers

What are our priorities for Pet Servers:
--> Longevity
--> Interdependencies
--> Centralization
--> Scale up

“We need cattle not pets”

Priorities for Cattle Servers:
--> Disposability
--> Isolation
--> Decomposition
--> Scale Out

Idempotency is a solution to handle snowflake servers

Immutability is a solution to handle pet servers

What is Idempotency

State drives changes in the system and the system's state is maintained.Step 1: Declaration of Desired State 
Step 2: Path to attain Desired State
Step 3: Convergence to Desired State
Step 4: Maintenance of Desired State

What is Immutability

Create Read Update Delete (CRUD) ---> Create Read and Delete (CRD)
* Immaterial of the number of App Release and Configuration Change Iterations

Attain Idempotency and Immutability through Infrastructure as Code

Infrastructure is described as code, versioned, and is an essential part of your baseline

Puppet Blog

Re-imagine deployments

Courtesy: (Link)

From Release == Risk of Failure to Release == Reduce Risk of Failure

Deploy Often | Deploy Fast | Deploy Safe

What are the options:

Highlander Deployments
1) Highlander: 
Named after the movie, You can only have one at a time
* Method: Upgrade all versions of old deployment to the new one at the same time.
* Pros: Simplest Strategy
* Cons: Slow Rollback speed, Application downtime required
Blue Green | Rolling Blue-Green | Canary deployments
2) Blue/Green:
* Method
: Create new deployment in parallel, switch over on Load Balancer
* Pros: Atomic deployment, One at a time, faster roll back
* Cons: Full-throttle traffic could overwhelm application instances where there is no cache build-up.
3) Rolling Blue/Green:
* Method:
Similar to Blue/Green, variation in traffic switch over rates
* Pros: The new application is load tested on real workloads before complete switch-over
* Cons: The application must support two different versions running at once.
4) Canary Deployments:
*
Method:
Layered rolling blue-green deployment with defined pass/fail metrics
* Pros: Limits the blast radius to a small percentage of your user-base
5) Shadow Deployments:
* Method:
Strategy forwards traffic to both versions without impacting users
* Pros: New version undergoes battle tested production workload test
* Cons: Complicated to set up and requires extra infrastructure

Version everything

DevOps heavily depends on the ability to execute fast fail-overs to a known, stable state.

So Version Everything !

1) Application code
2) Infrastructure
3) Configurations
4) Data
5) Systems

What do I need !!

Highly Performant , Fault-Tolerant, Scaleable Cloud Infra 
Oracle Cloud Infrastructure
1) CI/CD - Oracle Container Pipelines + Spinnaker
2) Container Technology - Docker
3) Container Orchestration - Oracle Kubernetes Engine
4) Container Native Package Management - Helm
5) Artifact Repository + Services - Oracle Developer Cloud Service
6) Infrastructure as Code - Terraform + Chef/Puppet/SaltStack

Let’s talk IT

A glimpse into history, past and present

The 2004 vs 2013 — Interpretations of Hyperscale and Velocity in IT

2013 vs 2018 — Interpretations of Hyperscale and Velocity in IT

A little unbelievable ?

Click on Run Pen to see the interest in Kubernetes and vSphere over time

More proof ahead

A Brief History of Kubernetes

Inspiration to this timeline graphic in Link, Swipe right and left to navigate.

What is Helm

A Brief History of Helm

Source: https://www.cncf.io/blog/2018/08/07/helm-the-package-manager-for-kubernetes/#

Why Helm

Kubernetes manifests are hard to manage
  • Deliver and manage applications, not Kubernetes manifests.
  • Tweak Kubernetes manifests based on deployment targets .

Go one step Further with Monocular:

Monocular is Helm + Black Magic ( Web UI ) that renders a UI based approach to manage Helm Deployments.

Works well with both internet accessible and air-gapped setups. Other capabilities include

  • Browsing Repositories and Charts
  • One Click Deployment of Charts
  • A view of Existing deployments

What is Wercker

  • Wercker is a CI/CD developer automation platform designed for Microservices & Container Architecture.
  • Wercker uses pipelines / automated workflows. Pipelines take pieces of code any execute a series of steps upon that code.
  • Refer to this blogpost for more on Wercker and its role in CI/CD

What is Spinnaker

  • Spinnaker is a cloud native continuous deployment tool
  • Developed and battle-tested by Netflix, recently open-sourced

Why do I need Spinnaker if I already have the other tools

Spinnaker integrates with all tools mentioned earlier, assuming the role of a centralized task manager.

Stay tuned for the tutorial.

Please leave your thoughts below

--

--

Vamsi Ramakrishnan
jsonlovesyaml

I work for Google. All views expressed in this publication are my own. Google Cloud | ex-Oracle | https://goo.gl/aykaPB