← Insights
Aug 13, 2026Architecture

Five architecture decisions
that seem fine until
they kill you.

Most architecture decisions don't announce themselves as mistakes. They look reasonable in the context they were made. The problem surfaces months later, when the system is under pressure and you can't easily change the thing causing it.

These are five decisions we see regularly in early-stage systems, each one defensible at the time, each one expensive to fix later.

Decision 01

Using the database as a dumping ground

When you're building fast, it's tempting to store everything in one place. One database, all the data, query whatever you need. It works until the database becomes the bottleneck for every operation: reads, writes, background jobs, reporting, and real-time queries all competing for the same resource.

The fix is separating concerns: operational data in a transactional database, analytics elsewhere, caches in front of expensive queries, file storage outside the database entirely. None of this is complicated. Retrofitting it into a system that wasn't designed for it is.

Decision 02

Building your core product on top of a third-party platform

No-code tools and automation platforms are useful. They become a liability when your core product logic lives inside them with no abstraction layer between your business and their platform.

When the pricing changes (and it will), when the API changes, when the platform gets acquired and sunsets a feature, you have no options. You're not just a customer at that point. You're dependent.

Decision 03

Rolling your own authentication

Custom auth feels like saving money. You build a login form, hash the passwords, store a session token. It works.

What it doesn't handle: MFA, SSO for enterprise customers, social login, token rotation, session revocation, credential stuffing protection, account recovery flows that don't create security holes. These are problems established auth providers have already solved. Building them from scratch isn't a technical achievement. It's technical debt with a security dimension.

Decision 04

No separation between what the database knows and what the application knows

When multiple parts of your application read and write to the same database tables directly, they become coupled in ways that aren't visible. Change a column name and three things break. Add a table constraint and a background job starts failing. This sounds like an engineering problem. It becomes a product problem when every change takes three times as long because nobody can predict what else it'll affect.

Decision 05

Choosing infrastructure for the demo, not the product

A single server is fine for a demo. It's a liability for a product. When the server goes down, and it will, everything goes down with it. When you need to deploy without downtime, you can't. When traffic spikes, the server falls over.

These aren't exotic scenarios. They're the baseline reality of running a product at any meaningful scale. Infrastructure decisions made in week one have a way of still being there in year three.

Why this keeps happening.

These decisions get made early, when the pressure is to ship rather than to design. That's not irrational. Getting something live fast is often the right call.

The problem is when early decisions never get revisited. When the system built to validate an idea becomes the system supposed to scale a business, without anyone checking whether it's capable of doing that.

A technical review at the right moment doesn't have to mean a rebuild. It means understanding what you have, where the load-bearing assumptions are, and whether the path from here to where you're going requires changing them.

NorTech Labs

Recognise any of these in your system?

The Technical Scoping Diagnostic maps your risks clearly in two weeks. $3,500, credited against your first month.

Book your diagnostic