When I was working at SXSW I built a simple deployment dashboard status tool as a way to keep track of the dozens of applications getting deployed on a daily and weekly basis. It was a quick and simple way for the team to see when something was last deployed, what changes went out with that deploy, what changes are waiting to go out, who actually deployed last, and a few other details. We called it Ketchup, as in to catch up on what has and hasn’t been deployed. The name was cleverly lifted from the Ketchup line in Pulp Fiction, kudos to Mike for that one.
I’ve always enjoyed simple and effective tools that keep your development teams productive, they call that Developer UX these days. Whether that’s making setting up your application as simple as a
git clone and then
bin/setup or utilizing
bin/dev as the entry point to start working on an app. Getting the tooling and decisions to be made out of the way so that your team can continue to add value to your software and in turn your company.
Kamal(previously known as MRSK) has been a much welcome addition to the software deployment landscape as it’s a much simpler approach to get to production, leveraging a handful of existing open source tools such as Docker. It’s not for the FAANG of the world but it’s for the rest of us, intentionally so and I dig it.
At its core Kamal is a wrapper around building and deploying your application with Docker. There’s a bunch of other wonderful stuff it does but the core premise is if you can containerize your application, you can deploy it with Kamal in a few minutes, not a few days or weeks. You don’t even need to necessarily mess with any provisioning tools(Ansible, Terraform, Chef, etc.) beyond Kamal if you already have access to a server that you’d like to deploy to.
With such a refreshing and simple approach to deploying software, we need an equally refreshing and simple way to monitor our deployments. A new approach that follows similar principles to keep setup and monitoring of our deployments simple and easy to get setup. And ideally with a tool we can easily host in house utilizing our existing deployment software, Kamal.
The existing products are often overly complicated to get setup and full of a bunch of bloat. I often dread logging into a platform because of how sluggish or slow it is when I just want to check the status of what was last deployed.
Issues with the current offerings:
- You typically have to be using their CI platform but you’re often already running CI on Github/Gitlab.
- Setup often involves all kinds of tagging and configuration to get going.
- They’re geared towards deploying swarms(hundreds) of servers when sometimes we’re just deploying to single digit or tens of servers.
What we need:
- Complexity: Setup should be straightforward and leverage your existing tooling. You shouldn’t have to learn what the concept of a deployment looks like within New Relic or Sentry.
- Application setup: Deploying your application should automatically configure 80% of the details within your deployment dashboard. The additional 20% of details provided enhance the deployment dashboard experience but are not required.
- Fast: It should be lightweight and provide answers fast so your team can get back to focusing on the things that matter.
- Focused: It should be built with the non-FAANG in mind. The small to medium-sized teams that don’t want to introduce a bloated product into their already limited resources and time.