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

From Infrastructure as Code to Environment as Code - AzConf

From Infrastructure as Code to Environment as Code - AzConf

Description: Infrastructure as Code(IaC) has made managing infrastructure easier in a lot of ways, but there are many challenges that companies accept as the cost of adopting IaC especially when scaling. IaC is good at provisioning individual resources (or a few of them together) but engineering teams want an entire environment with various components like networking, platform (ec2/eks), database, s3 buckets, etc. to deploy and operate their applications. To provision and tear down an entire environment, these teams have two options. They can either hand roll pipelines to manage individual resources and then manage complex dependencies between these resources within those pipelines or create a monolith IaC for the entire environment. These approaches are inefficient and slow down feature development and innovation. They also make replicating, visualizing & understanding environments difficult. What if there were a better way? This talk digs into these challenges to try to better understand them and then look at how to resolve them. We will introduce Environment as Code (abstraction over IaC) that enables teams to provision & teardown entire Environments in an efficient way and promotes best practices like loosely coupled infrastructure resources.

**Key Takeaways:**
* Challenges scaling Infrastructure as Code
* What is Environment as Code?
* How Environment as Code can help resolve those challenges?


Adarsh Shah

October 29, 2021


  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-azconf @shahadarsh
  2. https://bit.ly/eac-azconf @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-azconf @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-azconf @shahadarsh Evolution of IaC Execution From Engineers machine IaC

    Pipeline/GitOps execution from a Shared Environment
  5. @shahadarsh https://bit.ly/eac-azconf

  6. https://bit.ly/eac-azconf @shahadarsh • Option 1 • Create a Monolith Ia

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

    pain Not easy to visualize/understand Environments Drift Detection
  8. @shahadarsh https://bit.ly/eac-azconf What is Environment as Code?

  9. https://bit.ly/eac-azconf @shahadarsh Environment as Code networking platform-k8s k8s-addons postgres networking

    k8s-addons platform-k8s postgres Declarative Environment as Code
  10. https://bit.ly/eac-azconf @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)
  11. https://bit.ly/eac-azconf @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.
  12. @shahadarsh https://bit.ly/eac-azconf 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 Reconcile Declarative Detect Drift Control Plane
  13. @shahadarsh https://bit.ly/eac-azconf Teardown Environment Environment as Code State State State

    State Teardown Declarative networking platform-k8s k8s-addons postgres k8s-addons networking postgres platform-k8s Reconcile Detect Drift Environment State (Manages dependencies, status etc. ) Control Plane
  14. @shahadarsh https://bit.ly/eac-azconf Attributes of Environment as Code

  15. https://bit.ly/eac-azconf @shahadarsh Ability to de fi ne Entire Environment Example

    Environment as Code
  16. @shahadarsh https://bit.ly/eac-azconf Environment as Code networking platform-k8s k8s-addons postgres networking

    platform-k8s k8s-addons postgres Declarative Loosely Coupled
  17. @shahadarsh https://bit.ly/eac-azconf Manage State for the entire Environment Example Environment

    State File
  18. @shahadarsh https://bit.ly/eac-azconf Idempotent and Immutable for entire Environment

  19. https://bit.ly/eac-azconf @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
  20. https://bit.ly/eac-azconf @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
  21. https://bit.ly/eac-azconf @shahadarsh Visualize and Understand Environments

  22. https://bit.ly/eac-azconf @shahadarsh Drift Detection and Reconciliation Reconcil e (Preferably with

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

    promote changes across environments GitOps for Entire Environment
  24. 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
  25. Adarsh Sha h Engineering Leader, Coach, Public Speake r Founder

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