#393 AWS Infrastructure as Code: CloudFormation Origins, CDK Stacks, and Terraform Trade-offs
discussion about migrating a German bank to AWS in 2012, early EC2 instances and the launch of AWS VPC for private networking, clicking the AWS console before discovering CloudFormation, CloudFormation released in 2011 with JSON-only templates, Hazelcast cluster synchronization bugs on single-core EC2 instances, multicast limitations in VPC and the transit gateway workaround, CFEngine from 1993 as a predecessor to declarative infrastructure management, Puppet and Chef and Ansible as configuration management tools, CloudFormation's declarative state reconciliation predating kubernetes by three years, CloudFormation's managed state versus Terraform's local state storage, three-way diff comparing new template and old template and physical resource state, drift detection and its limitations with default values, writing 3000 lines of CloudFormation JSON in Eclipse IDE, building a Jenkins plugin for CloudFormation lifecycle management, GitOps with Git servers and Jenkins for CloudFormation deployments, separating infrastructure changes from business logic changes in early setups, treating everything as a change in modern CI/CD pipelines, the origin of CDK at Amazon as an internal tool written in Java then rewritten in typescript, CDK beta participation through the AWS Hero program, CDK constructs and L1 low-level constructs mapping directly to CloudFormation resources, CDK synth phase serializing Java objects to CloudFormation JSON, Stacks as atomic deployment units in CDK, the trade-offs of splitting stateful resources into separate stacks versus single-stack deployments, AWS CloudFormation export and reference coupling between stacks, using AWS Parameter Store for loose coupling between stacks, CDK application as the project root with application code in subfolders, Terraform benefits for multi-provider scenarios like GitHub repos and on-prem routers, regulated industries and compliance benefits of cloud infrastructure as code, change management as a byproduct of Git-based infrastructure pipelines, serverless architecture similarities to application server and WAR deployment models, CDK asset system for versioning and pushing artifacts, CDK custom resource types and self-mutating pipelines as future topics, The CDK Book co-authored by Thorsten Hoeger and colleagues, Taimos GmbH consulting for AWS infrastructure
Thorsten Hoeger on twitter: @hoegertn