Retrospective: Feb 2024

Retrospective: Feb 2024 blog post

Summary

Is self-hosted our niche?

Company Growth Recap

We’ve been figuring out how we want to acquire new customers. When we ask customers how they found us, the most common response is “reddit”. But we don’t really know how to leverage that beyond Reddit Ads. Reddit is also a unique place in that we haven’t figured out the pattern in what content the community likes.

Additionally, we are not like a lot of companies in our space. We are bootstrapped with every intention of staying small-to-medium. That comes with some strengths. In particular, we can be very agile. Our incentives are aligned with our customers and not with how to maximize returns to investors. It also means that we can be niche. We can find that thing, whatever it is, that a small number of customers value and go hard on it.

On the downside, we have limited resources, in terms of time and money. We also struggle to find good advice. Either from people or books or blogs, the advice tends to be directed towards those companies that want to be big.

This is all compounded in that we don’t feel like we’ve found that niche that we should go hard on.

One thing we’ve noticed, however, is that several customers have been choosing our self-hosted option. This has been a surprise to us. We had assumed that the push was, in general, towards the cloud. We had maintained a self-hosted option for evaluation purposes with the intention of moving users to our cloud offering, but more and more customers want the self-hosted option.

Is self-hosted our niche? We’re not sure. We have been really hesitant to more seriously support it because the advice from peers has been that it’s a support nightmare. But we need to figure out if this is true for us.

Features Recap

We spent a lot of December and January determining what we want to focus on for 2024. In terms of features we came down to a few big ideas:

  1. Dependency magic - Terrateam’s goal is that you can give it a Terraform or OpenTofu repository, make changes, and we’ll just Do The Right Thing. One of the limitations has been that we determine what to run based entirely on file patterns. That has meant that if you use modules, you have to configure those directories explicitly, telling Terrateam about the relationship. But this is information that already exists in the code, so we should be able to infer the Terrateam configuration automatically. Implementing this means we need to understand HCL, which we think will be an enabler to other features.
  2. Terrateam Components - The goal is to enable self-service. Developers can create a template plus some metadata. Terrateam can then take that and automatically generate a GUI for that component. Other developers can instantiate these components via the GUI. While the basic idea is just a “template”, the twist is that when instantiating a component, it can reference other instantiated components. This allows building out all of your infrastructure step-by-step rather than jamming everything into a single component. An example would be a service component and a monitoring component. The monitoring component takes a list of services and creates the resources to monitor them. With Terrateam Components, every time a new service component is instantiated, the monitoring component can be re-run with that list of services. This way services can keep on being added and the monitoring automatically updated. We have a bunch of ideas of interesting things we can do with that idea.

In February, we focused on dependency magic. Historically, we have been really good at delivery new features really quickly. However, how we decided to implement dependency magic ended up showing a limitation in our architecture. With dependency magic, we generate an “index” for the commit and then use that to determine what directories to run on a change. That means we need to do an indexing step before we can evaluate a change. On top of that, we never transfer customer code to our servers, so we need to index via a GitHub Actions run. Our architecture assumed that one event either turned into a GHA run or it didn’t. But now we need to do a GHA run to determine if we need to do the real GHA run. This showed some limitations in our we designed the backend, so implementing this went from something that should have been a week or two to a month. The upside is that it gave us the motivation to refactor some things that we knew were wrong but weren’t worth changing. Supporting this has made the backend a lot more robust and extensible to new features.

Next Steps

In keeping with our Two Prong Strategy, we have a Company Growth and a Feature initiative going concurrently. We also have our list of work items for 2024 that has been prioritized. After completing any large piece of work we re-evaluate the list to make sure it still makes sense.

We have been looking at a lot of options for growth, including ads and content marketing, but we need to evaluate if self-hosted is the place we can differentiate ourselves and what that means for our growth strategy.

The dependency magic feature is finishing up soon so we will need to figure out which feature to prioritize next. Big contender is Terrateam Components but we also want to re-evaluate the big list to see if anything has changed.

What is Terrateam

Terrateam is a European software company building Infrastructure as Code tooling. Our product is a Terraform and OpenTofu CI/CD GitOps platform for GitHub. Our goal is to build a sustainable medium-sized company. We like to say that we have “partners, not customers”, because we work so closely with our customers, even developing bespoke functionality to support them.

Infrastructure as Code. Optimized.

Ready to get started?

Experience powerful infrastructure orchestration, seamlessly integrated with GitHub.