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

From Infrastructure as Code to Environment as Code - AzConf

Adarsh Shah
October 29, 2021

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
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-azconf @shahadarsh

    View Slide

  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.

    View Slide

  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

    View Slide

  4. https://bit.ly/eac-azconf @shahadarsh
    Evolution of IaC Execution
    From Engineers


    machine
    IaC Pipeline/GitOps execution


    from a Shared Environment

    View Slide

  5. @shahadarsh
    https://bit.ly/eac-azconf

    View Slide

  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

    View Slide

  7. https://bit.ly/eac-azconf @shahadarsh
    Other Challenges scaling IaC
    Replicating Environments


    is a pain
    Not easy to visualize/understand


    Environments
    Drift Detection

    View Slide

  8. @shahadarsh
    https://bit.ly/eac-azconf
    What is Environment as
    Code?

    View Slide

  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

    View Slide

  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)

    View Slide

  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.

    View Slide

  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

    View Slide

  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

    View Slide

  14. @shahadarsh
    https://bit.ly/eac-azconf
    Attributes of Environment as
    Code

    View Slide

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

    View Slide

  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

    View Slide

  17. @shahadarsh
    https://bit.ly/eac-azconf
    Manage State for the entire Environment
    Example Environment State File

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  21. https://bit.ly/eac-azconf @shahadarsh
    Visualize and Understand Environments

    View Slide

  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

    View Slide

  23. https://bit.ly/eac-azconf @shahadarsh
    Compare and Promote Changes between
    Environments
    Compare & promote changes


    across environments
    GitOps for Entire Environment

    View Slide

  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

    View Slide

  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

    View Slide