Isolation between stages?

Yes, we believe that there must be 100% isolation between your application stages ( dev , staging , prod …). That means that resources which (for example) serve a development purpose must not be related to the ones which are serving production load. Putting that to the extreme, and following AWS best practices that means using different AWS accounts. This completely clash with the suggested approach that AWS suggest you to follow with services such as apigateway, where they emphasize to have several "stages" for the same apigateway resource. We disagree and completely ignore that functionality.

Gordon keeps reproducibility and isolation at it’s core. When you apply gordon projects in different stages or regions, you’ll deploy completely isolated Cloudformation stacks which will contain an exact and isolated copy of all the resources you have defined.

Why CloudFormation?

One of the best advantages of using AWS is the fact that reproducibility is at it’s core and their ecosystem is full of services which encourage it. Their flagship is CloudFormation.

Glue : There is a lot of glue to put in between a "normal user" and the reality-check of deploying and wiring a Lambda into AWS.

APIs : Not all AWS APIs are released when services are announced… ain’t frameworks (boto3), nor integrations with CloudFormation.

This project tries to solve these three issues by:

Creating a really thin layer of conventions on top of easy to maintain YAML files.

Making everything work out of the box as well trying to make people not shoot in their foot.

Working around the lack of CloudFormation/Framework APIs (keeping in mind they will eventually happen).

Does gordon use gordon to deploy gordon?

Yes, we eat our own dog food; We use gordon to create gordon. The idea is that, (unlike many other projects) we don’t think streaming API commands to AWS is a nice solution, so instead, we fill the gaps with custom CloudFormation resources.

Those Custom CloudFormation resources are implemented using Lambdas (deployed by gordon)… crazy uh?!

Why all this madness? Again… because reproducibility. If you manage some resources using CloudFormation, and some others streaming API commands, if/when you try to reproduce or decommission your environment… you are pretty much f***.

Feedback

We would love to hear as much feedback as possible! If you have any comment, please drop me an email to me@jorgebastida.com