Skip to content
TAA

Article

Why I bet on Quarkus for SMB app backends

Picking the backend stack for a custom app is a 5-year decision. Here is why Quarkus on Kubernetes keeps winning over the obvious Node and Spring picks for the apps I build.

May 20, 2026 · Marcel R. G. Berger · 2 min

  • architecture
  • quarkus
  • java
  • backend
Share

Every time a new client asks me to build an app, the backend choice is the longest single decision in the brief. App-store apps live for years; the backend that powers them has to be there every morning, every release, every iOS major update. The question is never what is fast to write — it’s what is cheap to operate for the next five years.

I keep landing on Quarkus.

What Quarkus actually buys you

Quarkus is the Red Hat-led Java framework that compiles to a native binary via GraalVM. The boot time is 30 milliseconds, the memory footprint is single-digit megabytes, the runtime is the JVM you already trust — and the developer experience is dev-mode hot-reload that puts most Node setups to shame.

For SMB-scale apps it is the sweet spot: you get fast iteration in development, tiny container images in production, and the entire Jakarta EE / SmallRye ecosystem of integration points the moment you need them.

What it does not buy you

It is not free. Quarkus has a learning curve if you’ve never used CDI before. The native-image compilation step is slow on CI. The GraalVM substrate has occasional sharp edges around reflection. None of these are deal-breakers, but they are real.

When I would pick something else

If the client’s team is two TypeScript developers and they will be the ones running the backend after I leave, I will write the backend in TypeScript and let them own it. Tooling continuity matters more than benchmark numbers for a small team.

If the workload is mostly event-driven, sometimes I reach for Go — single binary, no JVM, easier to operate by people who already speak Go.

But for the default app + backend project? Quarkus.

Share