RSSAmplifier

Blog

The Consulting CTO

Recent content on The Consulting CTO

theconsultingcto.comRSS feed ↗15 posts

Latest posts

Fenna 2

Almost exactly 3 years ago today, I released fenna , a thin Terraform wrapper built around a set of conventions for how to set up a Terraform project for a small team. My goal was to stay as close to vanilla Terraform as possible while simplifying state management within a team. And largely I succeeded. While the script hasn’t exactly set the world on fire with its popularity (not that that was my…

How to Bootstrap Multiple Environments on AWS with Terraform & Fenna

Fenna 2 I’ve just released Fenna 2. Check it out here . Updated 29 June 2023 When I was first starting out with Terraform, I couldn’t find many resources on bootstrapping remote state or access control for multiple AWS accounts. Granted, it’s not difficult to figure out if you dig through the documentation, but it would have been nice to have a step-by-step walkthrough so that I could have jumped…

Terraform for Teams

A lot of my work over the past few years has involved introducing Terraform into teams that are unfamiliar with both Terraform and the AWS resources we’re building with. The challenge throughout has been to train each developer while ensuring high team productivity by delivering working software. I have not always been successful, but I’ve learned a thing or two along the way. Terraform has…

Continuous Delivery with Terraform

When I first started consulting with NuID almost 2 years ago, one of our objectives was to bake DevOps into the culture. Given our choice to rely heavily on serverless to keep initial costs down, it was essential for the team to be much more intimate with AWS and operations than is typical for developers working exclusively in their language of choice. Instead of building services that run on top…

Bastions on Demand

Any time you have a VPC, you’ll likely need some way to gain access to the resources within the VPC from your local box. Typically, the way to do that is to run a bastion (or jumpbox) which you and your team can SSH into. The downside is that you are exposing an entry point into your network that is accessible by multiple people and running 24x7. And depending on how you manage permissions, you…

HTTP Direct with Datomic & Terraform

As a follow up to my “ Datomic with Terraform ” post and talk , I’d like to discuss how to use Datomic’s HTTP Direct feature with API Gateway. While the Cognitect tutorial can be helpful initially (I mean, hey, that’s where I started), there are a few things that weren’t explained as clearly as I would have liked. And, because the tutorial relies entirely on the AWS Console, I had to…

Datomic with Terraform

I recently gave a talk at Clojure/Conj 2019 : Since last fall, I’ve been working with Nolan Smith , the CTO of NuID , to design and build NuID’s production infrastructure. While I have much more to share on that project as a whole, I’d like to take some time to discuss how we’ve integrated Datomic Cloud into the NuID infrastructure. Because Datomic is relatively unknown beyond the Clojure…

Focus As Context: How I Use OmniFocus

I’ve been using OmniFocus since it was called Kinkless GTD (and I’ve been using GTD for a couple years before that). While I’ve gone through a number of different methods for keeping track of my tasks over the past 14 years—everything from a hipster PDA to Things to custom Tinderbox documents—I keep coming back to OmniFocus. It provides me with the flexibility I need to manage my work no…

How do I structure my Terraform projects?

I’ve extracted many of the conventions I use when developing with Terraform into fenna . You can read more about my motivations in “ Terraform for Teams ”. Or you can learn how to bootstrap your AWS environments with fenna . 24 August 2020 Basics No matter what I’m building with Terraform, I follow the same basic conventions. Every module I create has, at minimum, two files: main.tf and…

Should I use a single, monolithic Lambda function or multiple Lambda functions with API Gateway?

I’ve seen a lot of discussion in various forums on whether it’s better to use a single, monolithic Lambda function (with its own routing logic) or multiple, single-purpose Lambda functions with API Gateway. Arguments in favor of a monolithic function are that it’s easier to manage, more performant, and easier to understand. I disagree. Automated tools such as CloudFormation , Terraform , and…

On Returning to Rails

Returning to Rails after about 3 years, I’d like to share some observations. I want to state at the outset that Rails is an excellent fit for the project, and I have no regrets about selecting it. It’s just been a while since I’ve slipped on this particular pair of shoes, and they don’t fit quite the way I remember. I’ve been using Rails for over 12 years (and Ruby a bit longer than that). I’ve…

Working with Terraform: 10 Months In

Terraform is a powerful tool for orchestrating cloud infrastructure, and, arguably, an essential tool once your infrastructure reaches a certain scale (or crosses cloud providers). After having written over 40,000 lines of Terraform configuration in HCL over the past 10 months, I’d like to share some observations about working with Terraform. Code Duplication Terraform configuration is, by its…

Deconstructing the CMS

I first encountered Pace Layers around 02001 in Stewart Brand’s 01999 book The Clock of the Long Now . Brand, founder of The Whole Earth Catalog , first presented Pace Layering as a framework for understanding how a healthy society works. The six layers are in descending order from the highest and fastest to the lowest and slowest. In Brand’s words: “The order of civilization. The fast layers…

Maximize Velocity by Minimizing Risk

Over the past 10 months, my team at Work & Co and I have been designing and building an ad tech platform. Our goal with the system was to rapidly and iteratively develop a high quality, scalable platform while minimizing the client’s ongoing operational costs and complexity. To accomplish this, we took the following approach. Use AWS for everything it’s worth. If it’s good enough for Netflix, it’s…

Automated Lambda Deployments with Terraform & CodePipeline

Over the past few months, I’ve been using Terraform and CodePipeline to automate deployment of Lambda functions across multiple AWS accounts for a platform we’re building at Work & Co . I’ve created an example on GitHub here . I used Clojure in the example because it’s my preferred language, but the approach will work for any supported language. We have four AWS accounts under our client’s master…