What Operating 17,000 Databases Taught Me About Data Architecture

Nobody ever sat down and designed a 17,000-database architecture. You don’t arrive at that number through planning. You arrive at it one acquisition, one new application, one “temporary” database at a time — until one morning you realize the fleet has quietly become the largest thing in the building, and every shortcut anyone ever took is now your problem, multiplied seventeen thousand times.

I have operated a relational database fleet of 17,000 to 18,000 databases, alongside large-scale Hadoop environments. Before that, I led a 130-person engineering and operations organization managing 35,000 on-premises SQL Server and 20,000 Oracle databases. I am not writing about database architecture from a whiteboard. I am writing about what survives contact with a fleet.

Here is what I learned.

Snowflakes Will Kill You

Every database administrator has a favorite custom configuration. A special trace flag here, a hand-tuned memory setting there, a one-off collation because one application in 2009 needed it. At the scale of fifty databases, these are charming. At the scale of seventeen thousand, each snowflake is a future incident with your name on it.

The math is unforgiving. If a non-standard configuration has even a 0.1% chance of causing a problem during any given change window, then across 17,000 databases, that is 17 problems. Every time. You cannot staff your way out of this. You cannot “be careful” your way out of this. The only thing that works is ruthless standardization: a small number of approved configurations, enforced everywhere, with exceptions that expire.

I learned to treat every exception as technical debt with interest. When someone asked for a custom setup, the question was never “can we do it?” It was “are we willing to operate it 17,000 times?” Almost always, the answer was no — and the workload got redesigned to fit the standard instead.

Standardization is not the enemy of flexibility. It is the thing that makes flexibility affordable. You standardize the 95% so your best engineers have time for the 5% that genuinely needs thought.

Automation Isn’t a Nice-to-Have. It’s Survival.

There is a threshold — somewhere around a few hundred databases — past which anything done manually simply does not happen. Not “happens slowly.” Does not happen. Backups get skipped. Patches get deferred. Documentation goes stale. It is not a discipline problem; it is arithmetic. There are not enough hours.

So the real job of operating a fleet is not operating databases. It is building the machine that operates the databases. Patching pipelines. Automated provisioning from approved templates. Backup verification that pages someone when a backup fails to verify, not when someone remembers to check. Compliance scanning that runs continuously against the inventory, not quarterly against a spreadsheet.

A simple example of the mindset shift — a fleet-wide compliance check that runs on a schedule instead of relying on anyone’s memory:

# Fleet-wide version compliance check against the CMDB inventory
while read -r host version; do
  if [[ "$version" != "$APPROVED_VERSION" ]]; then
    echo "NON-COMPLIANT: $host running $version"
  fi
done < fleet_inventory.csv

Trivial script. But the principle behind it is everything: the fleet tells you its state; you never go looking. Every manual check you perform is a check that will be skipped the week you are busiest — which is exactly the week you need it most.

The teams that thrive at fleet scale are the ones that treat toil as a bug. If an engineer does the same task three times, the fourth time should be a script. If a script runs weekly, it should be a pipeline. This compounds. After a few years, the difference between a team that automated and a team that didn’t is not efficiency — it is whether they are still standing.

Observability Before Heroics

Every operations organization loves its heroes — the engineer who diagnosed the outage at 3 AM from memory and instinct. Heroes are wonderful. They are also a sign of failure. If your fleet requires heroics to operate, your fleet is not observable enough.

At 17,000 databases, you cannot rely on anyone’s mental model of the system, because no human holds a mental model of 17,000 databases. You need centralized telemetry: every instance reporting health, performance counters, backup status, patch level, and configuration drift into one place, with alerting tuned so that pages mean something.

The tuning part matters more than people think. An alerting system that pages for everything trains engineers to ignore pages. We invested real effort in alert hygiene — every alert had to have a runbook, an owner, and a reason to wake someone up. Alerts that fired without action got fixed or deleted. Within a year, when a page went off, people moved fast, because pages had earned their trust.

The metrics that mattered most were not the exotic ones. They were the boring ones: Is it up? Is it backed up? Is the backup restorable? Is it patched? Is it drifting from standard? Boring questions, asked continuously, about everything. That is observability at fleet scale — not a fancy dashboard, but relentless coverage of the fundamentals.

Why Architectures That Work for 10 Databases Fail at 10,000

Here is a pattern I have seen repeatedly: an architecture that is perfectly sound for a department gets adopted as the enterprise standard, and then it collapses under fleet-scale realities nobody modeled.

Connection storms are a classic. Ten application servers opening pools to one database is fine. Ten thousand application instances across a fleet, each holding idle connections “just in case,” will exhaust connection limits in ways no load test predicted — because nobody load-tested the fleet, only the workload.

Backup windows are another. A backup strategy designed per-database becomes a fleet-wide I/O storm when thousands of instances back up on the same schedule. You end up redesigning backup topology around the fleet: staggered windows, tiered retention, backup infrastructure sized for aggregate throughput, not per-instance throughput.

Change management breaks too. A change process that requires a review board meeting works for ten changes a month. At fleet scale, you are making thousands of changes a month, and the review board becomes either a rubber stamp or a bottleneck. The answer is policy-as-code and automated guardrails: the review happens in the pipeline, against rules, in seconds — not in a meeting room.

The lesson: always ask “what breaks when we multiply by a thousand?” If the answer is “the process,” redesign the process before you scale, not after.

The Team Shapes the Fleet

There is a organizational lesson hiding inside all of this, and it took me years to see it: the structure of your team determines the shape of your fleet. Embed database engineers inside application teams with no central standards, and you get thousands of snowflakes — each one locally rational, globally unmanageable. Centralize everything into one DBA group, and you get standards without context — engineers who enforce rules they don’t understand the reason for.

What worked was a hybrid: a small platform team owning the standards, the automation, and the guardrails, with database engineers embedded in product teams who could request exceptions through a real process. The platform team didn’t say “no” — they said “here’s the cost of yes, and here’s the standard alternative.” Most exceptions died at that conversation, and the ones that survived were genuinely worth it. Conway’s law applies to databases too: if you want a coherent fleet, you need a team whose job is coherence.

What I’d Do Differently

If I could go back to the beginning of building fleet-scale operations, I would do three things differently.

First, I would invest in platform engineering earlier. We spent years with excellent database engineers doing work that a platform should have absorbed — provisioning, patching, baseline monitoring. Every year we delayed the platform was a year of senior engineers doing toil instead of solving hard problems. Build the platform before you desperately need it, because by the time you desperately need it, you have no spare capacity to build it.

Second, I would treat databases as cattle from day one, not as pets. The industry says this about servers; it applies doubly to databases because DBAs are culturally inclined to nurture individual instances. At fleet scale, any instance you cannot rebuild from automation in an hour is a liability. Immutable-ish infrastructure thinking — rebuild rather than repair — prevents entire categories of configuration drift.

Third, I would measure toil explicitly and report it to leadership. “We spent 40% of engineering time on repetitive operational work last quarter” is a sentence that unlocks platform investment. Without the number, toil is invisible, and invisible problems don’t get funded.

The Bottom Line

Operating at extreme scale taught me that data architecture is not really about databases. It is about systems for managing databases — the standards, the automation, the observability, and the processes that let a finite team operate a near-infinite fleet. The database engine is the easy part. The fleet is the architecture.

Most organizations will never operate 17,000 databases. But every organization operates more databases than its processes were designed for. The lessons scale down perfectly well: standardize early, automate relentlessly, observe continuously, and always ask what breaks when you multiply by a thousand.

If you’re wrestling with any of this — a growing estate, operational toil eating your team, or architecture decisions that need to survive real scale — reach out through the contact page. I’ve lived this problem, and I’m always glad to compare notes with people facing it.

Related: case studies from operating data at extreme scale.

Comments

Thanks for the comment, will get back to you soon… Jugal Shah