Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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.

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

https://bit.ly/eac-azconf @shahadarsh Evolution of IaC Execution From Engineers machine IaC Pipeline/GitOps execution from a Shared Environment

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

https://bit.ly/eac-azconf @shahadarsh Other Challenges scaling IaC Replicating Environments is a pain Not easy to visualize/understand Environments Drift Detection

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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)

Slide 11

Slide 11 text

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.

Slide 12

Slide 12 text

@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

Slide 13

Slide 13 text

@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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

https://bit.ly/eac-azconf @shahadarsh Drift Detection and Reconciliation Reconcil e (Preferably with Approval) Desired State Current State Control Loop Observe/Detect Drift

Slide 23

Slide 23 text

https://bit.ly/eac-azconf @shahadarsh Compare and Promote Changes between Environments Compare & promote changes across environments GitOps for Entire Environment

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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