My Authors
Read all threads
When doing infra as code, you want to plan your deploys around what infra state—that is, resource graphs—you want to achieve, not around what graph manipulation your tooling restricts you to. To that end, here's a maturity model for CloudFormation support for AWS services 1/10
Stage 1: CloudFormation support at launch, for every launch. For cloud-native customers, if it's not in CloudFormation, it doesn't exist. This should be table stakes at this point. But it's not, so let's make it a milestone. 2/10
But CloudFormation support at launch isn't the real story. CloudFormation resource designs are constrained by the underlying control plane API of the service, and these are often designed long before CloudFormation support is even thought about. 3/10
What defines a good control plane API design? One that has no functionality that cannot be accessed through CloudFormation. But further than that, one in which *advanced* CloudFormation usage is planned for and well-supported. Let's see what that looks like: 4/10
Stage 2: Any (control plane) state of the service is representable in a single CloudFormation template (setting aside limits on number of resources).
Lambda, API Gateway, and Kinesis are among services that fail this test. 5/10
Stage 3: It is possible to achieve any (control plane) state of the service in a single stack operation. You can move from any resource graph to any other graph without an defining an intermediate graph or arbitrary dependencies. DynamoDB fails this test. 6/10
Stage 4: The service's resources are designed to allow decoupled management of the service according to common use cases (e.g., managing primary definition and operational parameters as separate resources, so they could be deployed by separate dev and ops teams) 7/10
Very few CloudFormation resources look like Stage 4. Lambda's recent decision to have provisioned concurrency as a separate set of APIs is a start, though it did not show up in the same way in CloudFormation. 8/10
Note that Stage 4 implies engaging customers very early on to understand how they would want to manage a theoretical service or feature. It may also mean being more willing to make API changes in beta. 9/10
The move to open source resource provider development is great, but it also implies that resource design happens after the API is fixed, which means you're going to be stuck in Stage 1. CloudFormation resource design needs to happen in concert with API design. 10/10
Missing some Tweet in this thread? You can try to force a refresh.

Keep Current with Ben Kehoe

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!