FWIW, my approach to IaC has been to focus on the “I” with CloudFormation — the networking, storage, IAM, other AWS primitives and etc. This stuff doesn’t change as often, and safe/reliable deployments are more valuable than quick ones.
The behavioral parts (aka. application, stuff running in a VM of some kind or something declarative like EventBridge rules or StepFunctions) I keep separate and prioritize quick turns. CodeDeploy can, for example, update code on EC2s in single-digit seconds.
I’m building systems that are a little more integrated in AWS than most folks, perhaps, which makes this approach a good fit. I do dozens of deployments a day (not an exaggeration — 21 so far today on a light day), including a couple infrastructure updates.
I think the secret here is not buying into meme-like simplifications and instead deliberately design an approach that works for your goals.
The behavioral parts (aka. application, stuff running in a VM of some kind or something declarative like EventBridge rules or StepFunctions) I keep separate and prioritize quick turns. CodeDeploy can, for example, update code on EC2s in single-digit seconds.
I’m building systems that are a little more integrated in AWS than most folks, perhaps, which makes this approach a good fit. I do dozens of deployments a day (not an exaggeration — 21 so far today on a light day), including a couple infrastructure updates.
I think the secret here is not buying into meme-like simplifications and instead deliberately design an approach that works for your goals.