Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Infrastructure as Code to Environment as Code - DevOps Days Buffalo

From Infrastructure as Code to Environment as Code - DevOps Days Buffalo

Implementing and maintaining Infrastructure as Code (IaC) to automate the provisioning of Environments, becomes challenging as you scale. We will introduce Environment as Code that enables teams to provision & teardown entire Environments in an efficient way and promotes best practices.

Adarsh Shah

October 12, 2021
Tweet

More Decks by Adarsh Shah

Other Decks in Technology

Transcript

  1. From Infrastructure as Code to Environment as Code Challenges scaling

    IaC and how to resolve them Adarsh Sha h Engineering Leader, Coach, Public Speake r Founder & CEO at CompuZes t @shahadarsh 
 https://compuzest.com https://bit.ly/eac-buffalo @shahadarsh
  2. https://bit.ly/eac-buffalo @shahadarsh Infrastructure as Code Infrastructure as Code (IaC) is

    an approach that takes proven coding techniques used by software systems and extends it to infrastructure. It is one of the key DevOps practices that enable teams to deliver infrastructure, and thereby software running on it, rapidly and reliably.
  3. https://bit.ly/eac-buffalo @shahadarsh Evolution of IaC Setup networkin g + platform-ec

    2 + s3-bucket Monolith Ia C with a Single Run networking platform-k8s k8s-addons postgres networking k8s-addons networkin g + platform-ec 2 + s3-bucket platform-ec2 platform-k8s postgres platform-ec2 Breaking into Separate & Smaller IaC Runs
  4. https://bit.ly/eac-buffalo @shahadarsh • Option 1 • Create a Monolith Ia

    C • Option 2 • Hand-roll Pipelines • Manage Complex Dependencies Options for Entire Environment Provisioning
  5. https://bit.ly/eac-buffalo @shahadarsh Other Challenges scaling IaC Replicating Environments is a

    pain Not easy to visualize/understand Environments Drift Detection
  6. https://bit.ly/eac-buffalo @shahadarsh IaC vs EaC Infrastructure as Code Automates various

    Lego Pieces 
 (i.e. Infrastructure Resources) Environment as Code Automates how those Lego Pieces 
 are connected to make up a Lego Toy 
 (i.e. Entire Environment)
  7. https://bit.ly/eac-buffalo @shahadarsh Environment as Code Environment as Code (EaC) is

    an abstraction over Infrastructure as Code that provides a declarative way of de fi ning an entire Environment. It has a Control Plane that manages the state of the environment, including relationships between various resources, Detects Drift as well enables Reconciliation. It also supports best practices like Loose Coupling, Idempotency, Immutability, etc. for the entire environment. EaC allows teams to deliver entire environments rapidly and reliably, at scale.
  8. @shahadarsh https://bit.ly/eac-buffalo Provision Environment Environment as Code Environment State (Manages

    dependencies, status etc. ) State networking platform-k8s State k8s-addons State postgres State networking k8s-addons platform-k8s postgres Provision Control Plane Reconcile Declarative Detect Drift
  9. @shahadarsh https://bit.ly/eac-buffalo Teardown Environment Environment as Code State State State

    State Teardown Declarative networking platform-k8s k8s-addons postgres k8s-addons networking Control Plane postgres platform-k8s Reconcile Detect Drift Environment State (Manages dependencies, status etc. )
  10. https://bit.ly/eac-buffalo @shahadarsh Non-Idempotent Provision VM VM VM { } IaC

    3 VMs End State
 Expected = 3 Actual = 6 Idempotent End State
 Expected = 3 Actual = 3 Reapply VM VM VM Provision VM VM VM Reapply No change { } IaC 3 VMs
  11. https://bit.ly/eac-buffalo @shahadarsh Provision v1 v1 v1 User Mutable Infrastructure {

    } IaC Apply changes v2 v2 v2 Change { } IaC v1 v1 v1 Provision User Provision v2 v2 v2 User Immutable Infrastructure { } IaC Change { } IaC Deploys v2 to same Infrastructure Provisions new Infrastructure with v2
  12. https://bit.ly/eac-buffalo @shahadarsh Drift Detection and Reconciliation Reconcil e (Preferably with

    Approval) Desired State Current State Control Loop Observe/Detect Drift
  13. https://bit.ly/eac-buffalo @shahadarsh Compare and Promote Changes between Environments Compare &

    promote changes across environments GitOps for Entire Environment
  14. https://compuzest.com @shahadarsh Create Pull Request , EaC Validate Validate Approve

    & 
 Merge PR Control Plane Reconcile GitOps for Environment EaC Trunk networking platform-k8s k8s-addons postgres Observe Branch networking platform-k8s k8s-addons postgres
  15. Create Pull Request , EaC Validate Validate Approve & 


    Merge PR Control Plane Reconcile EaC Trunk networking platform-k8s k8s-addons postgres Observe Branch networking platform-k8s k8s-addons postgres Environment
  16. https://bit.ly/eac-buffalo @shahadarsh Attributes of EaC • Ability to de fi

    ne Entire Environmen t • Loosely Coupled • Manage State for the entire Environmen t • Idempotent and Immutable for entire Environmen t • Visualize and Understand Environment s • Drift Detection and Reconciliatio n • Compare and Promote Changes between Environments
  17. Adarsh Sha h Engineering Leader, Coach, Public Speake r Founder

    & CEO at CompuZes t @shahadarsh 
 https://compuzest.com Thank You https://bit.ly/eac-buffalo @shahadarsh