What we build with it

Go is what we write API services in when a product has real traffic and real concurrency. Streaming endpoints, WebSocket fan-out, request handlers that have to hold thousands of open connections without the memory profile becoming a problem.

The language is deliberately small, which matters more on a team than it sounds: there is usually one obvious way to write something, so code review is about the problem rather than about style. Builds are fast, the output is a single static binary, and the container image around it can be a few megabytes.

Where we have shipped it

ExtraETF is the clearest example — a Go backend feeding real-time market data and portfolio updates to a Flutter client across iOS and Android. We wrote about the architecture in building a real-time fintech app.

Parts of the Formtastic platform are Go as well, alongside its Python services.

When we recommend it

Go fits services that are I/O-bound and concurrency-heavy, and teams that want operational simplicity — one binary, no runtime, straightforward deployment.

It fits less well where you would benefit from a large batteries-included framework. If a product needs an admin interface, auth and a data model on day one, Django will get you there in a fraction of the time, and you can move the hot paths to Go later if they warrant it.