Tidy Cloud AWS issue #30 - Git, Infrastructure as code book, Pulumi challenge and Dave Farley
Welcome to the next issue of the Tidy Cloud AWS bulletin! In this issue we have a Git cheat sheet, a book recommendation, the Pulumi challenge and videos from Dave Farley’s Continuous Delivery YouTube channel.
Git cheat sheet
Both application and infrastructure definitions can and should be version controlled. In most cases, the version control software in use is git. It may be via a hosted service such as Bitbucket, GitLab or GitHub, or a locally managed solution. Either way, git is pretty much everywhere.
How well do you know git? I must admit that I do not know git very well, and there are only a few commands and use cases that know reasonably well. Some time ago I found this Git cheatsheet, which I think is pretty nice. It provides a visual overview of different commands and includes descriptions of each one. I learned a few news things even after a quick exploration of this cheat sheet.
Hopefully, it will be useful to you as well!
Book recommendation: Infrastructure as code by Kief Morris
The book Infrastructure as code by Kief Morris, is a great book to learn and get inspiration from in the infrastructure as code space. It is published by O’Reilly and contains a lot of useful information across roughly 500 pages.
It covers a large round of topics in this space, with a focus on concepts, practices and patterns. You will only find brief mentions about specific tools, such as CloudFormation, Terraform, Pulumi or AWS CDK. Instead, it covers general ideas and patterns and uses some pseudo language to illustrate patterns and concepts.
This is absolutely great, because there are many practices and patterns that are tool-agnostic, and once you understand these patterns, you can see how that applies to specific tools.
It starts with explaining the basic concepts and ideas behind infrastructure as code and continues with types of tools to use, how to organise, build, migrate, refactor and deploy infrastructure, the ways of working and good principles and practices.
There are many patterns and anti-patterns defined and named, each with a description of how it is used, implementation and consequences. One nice thing that is very nice from this book is that patterns, concepts and practices are given names which are tool agnostic.
For example, a few different infrastructure modules are named:
Infrastructure domain entity
Obfuscation module (anti-pattern)
Spaghetti module (anti-pattern)
This becomes more clear to use than just talking about modules or with AWS CDK, talk about L2 and L3 constructs, which I think are quite obscure names.
It is available in both printed form and as an e-book in various formats. My recommendation is to get either the e-book or both the printed version and the e-book. There are quite a lot of references back and forth to the various patterns and practices, and the e-book format makes it so much easier to follow these references.
It is not a book you would read from start to finish. The first few chapters may be useful to read first, in particular if you are new to the concepts behind infrastructure as code. But after that, I think it may be more useful to look at specific areas when needed.
In summary, Infrastructure as code is a great book and I really recommend reading it! Make sure you get the latest edition - at the time of this writing, that is the second edition.
Pulumi is one challenger in the infrastructure as code space, tackling both the positions of Terraform and CloudFormation. I think they are doing a splendid job and communication seems to work pretty well. I quite like the Cloud Engineering Summits they have hosted in the past and they do some nice tutorials and videos around their tools.
One recent addition to their website is the Pulumi challenge. This is a series of challenges to set up various infrastructure solutions using Pulumi, and if you succeed, you will get some swag rewards for the effort.
They seem to have one challenge per month, and the first challenge is called Startup in a box, which sets up a website in AWS using S3 and CloudFront, and Checkly to set up a landing page for a startup.
I think it is a neat idea, and will run through the challenges myself as they come up. Good work, Pulumi!
Videos from Continuous Delivery
One of the YouTube channels that I think have great content in terms of software engineering and delivery is Continuous Delivery with Dave Farley.
Dave produces a lot of great content, and a few relatively recent videos include:
What is infrastructure as code. Here Dave describes what infrastructure as code is and outlines some strategies, principles and practices around its use. Very good if you are new to this space, but also some good points for those that worked with infrastructure as code as well.
Why your software team CAN’t scale In this presentation talks about the ideas behind Team topologies and how to organize effective teams, outlining four types of teams and their roles.
Tips for building successful platform teams. This video is a follow-up to the team topologies presentation above, which goes into more detail about one type of team, the Platform Team.
You can find older bulletins and more at Tidy Cloud AWS. You will also find other useful articles around AWS automation and infrastructure-as-software.
Until next time,