DevOps on Steroids with Oracle Kubernetes Engine(OKE), Oracle Developer Cloud Service, Wercker/Spinnaker, Helm and Monocular — Fundamentals (1/4)
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
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
“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
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:
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
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-base5) 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
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