Most systems work fine at current load. The question is whether they will work at 10x. Here are the five warning signs we look for in every architecture review.
→ Checking database workload separation…
→ Measuring deployment coupling…
→ Testing monitoring coverage…
⚠ Database handling 4 workloads (should be 1)
⚠ 3 teams required for every deploy
⚠ No leading indicators configured
✓ HTTPS enforced
✓ Rate limiting present
We have reviewed dozens of systems over the years. Some are built to scale. Most are not. The difference is rarely about technology choices — it is about structural decisions made early on that become expensive to undo later.
Here are the five signs we look for during an architecture review. If you recognise two or more, it is time to plan a change — before growth forces it.
When a single database handles transactional data, reporting, full-text search, and background job queues, it becomes a single point of failure for everything. At low traffic, it works. At 10x, the connection pool exhausts, locks pile up, and every part of the system degrades together.
The fix is not necessarily microservices. It is separating workloads: a read replica for reporting, Redis for caching, Elasticsearch for search, and a proper queue (RabbitMQ, SQS) for background jobs. Your database should do one thing well: transactions.
$ gradio db --audit-workloads→ transactions ✓ keep in primary DB→ reporting ⚠ move to read replica→ search ⚠ move to Elasticsearch→ queue ⚠ move to Redis/RabbitMQ✓ Recommendation: 1 primary + 3 offloads
If every feature requires changes across the same 5 files, you have a coupling problem. The codebase becomes a ball of mud — every change risks breaking something unrelated. Development velocity drops, merge conflicts increase, and testing becomes a nightmare.
Modular monoliths solve this without the complexity of microservices. Define clear module boundaries, enforce them with linting rules or build-time checks, and make sure modules communicate through well-defined interfaces — not by reaching into each other's database tables.
If deploying a frontend change requires syncing with the backend team, the infrastructure team, and the data team, your deployment process is the bottleneck — not your developers. At 10x scale, this coordination overhead becomes unsustainable.
Independent deployment is not just about CI/CD pipelines. It is about architectural boundaries that allow teams to ship without stepping on each other. This might mean splitting a monolith into independently deployable modules, or extracting services for teams that need to move fast.
Dashboards that show CPU usage and error rates after the fact are necessary but not sufficient. At 10x scale, you need leading indicators: queue depth trends, connection pool saturation, cache hit ratio degradation, and latency percentiles (p95, p99) — not just averages.
If your alerting is based on thresholds ("CPU > 80%"), you are reactive. If it is based on anomaly detection ("CPU is 3x the normal pattern for this time of day"), you are proactive. The latter gives you time to fix things before users notice.
This is the most dangerous sign. If you cannot point to the single component that will fail first under load, you have not mapped your bottlenecks. Every system has one. The question is whether you know yours.
An architecture diagram with capacity annotations — "this service handles 500 req/s, max 2000; this database handles 1000 connections, max 5000" — makes bottlenecks visible. Without it, you are hoping nothing breaks. With it, you know exactly where to invest.
Every system has a bottleneck. The question is whether you know yours — or whether your users will find it for you.
If you recognised three or more of these signs, do not panic — but do not wait. Start with an architecture diagram to make the current state visible. Then prioritise: fix the cheapest bottleneck first, not the most exciting one. Scaling is a series of small, deliberate changes — not a rewrite.
Need help identifying your bottlenecks? Our architecture review is designed exactly for this. We map your system, identify the components that will break first, and give you a prioritised roadmap.
Everyone asks this question. The answer is not "it depends" — it is "start with a modular monolith and extract services when you have a reason to." Here is why.
10 Aug 2026A practical checklist we use during architecture reviews. Print it, share it, run it against your own system before you pay for a review.
20 Jul 2026We apply the same rigour to real client engagements. Architecture reviews, security audits, and stack recommendations — all fixed-price, all actionable.