What happens when a database has to serve millions of users at once, survive the loss of an entire data center, and still keep a monthly bill that finance can live with? That question sits at the heart of cloud database architecture. The answer is not one design but a family of them, and the choices made at the drawing board ripple into cost, latency, reliability, and how much sleep your operations team gets.
This article walks through the core patterns, the trade-offs behind them, and the practical mistakes teams make when they move a database into the cloud.
What cloud database architecture actually means
A cloud database is a database whose infrastructure is provisioned, managed, and often partly operated by a cloud provider. The architecture describes how that system arranges its compute, storage, networking, and control layers to deliver availability, scalability, and durability.
The cloud service and deployment models underneath all of this were standardized in a short, widely cited document: the NIST definition of cloud computing, published in September 2011, which laid out IaaS, PaaS, and SaaS along with public, private, hybrid, and community deployment models. Most architecture conversations still borrow its vocabulary.
What separates cloud databases from the on-premises systems that came before is not SQL or transactions. It is the assumption that hardware fails constantly and that capacity should be elastic. Every design decision flows from those two facts.
The two classic shapes: shared-disk and shared-nothing

Almost every cloud database is a variation on one of two patterns, or a deliberate hybrid of both.
| Pattern | How it works | Strengths | Weaknesses |
|---|---|---|---|
| Shared-disk | All compute nodes read and write one shared storage layer | Simple scaling of compute, single copy of truth | Storage becomes a bottleneck and a contention point |
| Shared-nothing | Each node owns its slice of data and coordinates with peers | Scales horizontally, good for large parallel workloads | Rebalancing and cross-node queries are complex |
Amazon Aurora is the best-documented shared-disk example. Its design paper, presented at SIGMOD 2017, describes decoupling compute from a distributed, log-structured storage service replicated across three Availability Zones. Instead of shipping full data pages over the network, Aurora pushes only redo log records to storage, and the storage layer applies them. That single decision cuts network traffic dramatically and is why the system can absorb write bursts that would overwhelm a traditional engine.
Shared-nothing systems take the opposite bet. Each node keeps its own data, and the query planner routes work to where the data lives. This is the classic model for large analytical warehouses and for distributed SQL databases built on consensus protocols.
Separation of storage and compute is the defining pattern
If you remember one idea from this article, make it this one: separation of storage and compute. Stateless compute nodes can be added, removed, or resized without touching the durable data underneath. Storage scales independently of processing power.
Snowflake popularized the commercial version of this model, with independent compute clusters (virtual warehouses) querying a shared data layer. The practical consequence is that a data team can run a heavy overnight transformation job on a large cluster and let it disappear, while a small cluster keeps serving dashboards. You pay for what runs, not for what sits idle.
This pattern is also why cloud architecture decisions increasingly overlap with broader infrastructure planning. Teams that treat databases as isolated appliances miss the bigger picture of how networking, identity, and cost controls fit together, which is why resources on cloud infrastructure and architecture at 9481.org are worth reading alongside database-specific material.
Serverless takes the idea further
Serverless databases remove even the cluster sizing decision. Google BigQuery has been serverless since its 2011 launch. Amazon Aurora Serverless arrived in two waves, with the first version generally available in 2018 and the second in 2022. The appeal is obvious: no capacity planning, automatic scaling, and billing that follows actual usage.
The catch is equally real. Cold starts, unpredictable latency during scale-up, and per-request pricing that punishes inefficient queries all show up in production. Serverless is excellent for spiky, intermittent, or development workloads. It is a harder sell for steady, latency-sensitive transaction processing.
Consistency, latency, and the trade-offs nobody escapes
Distributed databases cannot have everything at once, and the theoretical framing matters because it prevents expensive mistakes.
The CAP theorem, conjectured by Eric Brewer in 2000 and formally proved by Gilbert and Lynch in 2002, concerns what happens during a network partition. It is often misstated as “pick two of three.” The precise version is better: partitions are unavoidable, so during a partition a system must choose between consistency and availability. The full Gilbert and Lynch proof of Brewer’s conjecture is worth reading for anyone who wants the argument in its original form.
Daniel Abadi’s PACELC extension from 2012 fills in the rest of the picture: even when there is no partition, systems trade latency against consistency. That is the daily reality of cloud databases. Google Cloud Spanner, generally available in 2017, claims external consistency using its TrueTime API, as described in the Spanner paper on Google’s globally distributed database. Amazon DynamoDB, launched in 2012, defaults to eventually consistent reads and offers strongly consistent reads as an option. Neither is “better.” They are different points on the same curve.
In practice, the question to ask is not “which database is most consistent” but “what does a stale read cost this specific feature.” A product catalog can tolerate a few seconds of staleness. An account balance cannot.
Multi-tenancy and isolation: where architecture meets risk
A cloud database usually serves many customers on shared infrastructure. How those tenants are isolated is an architectural decision with security and compliance consequences.
The common models are:
- Separate databases per tenant, the strongest isolation and the highest overhead.
- Separate schemas within one database, a middle ground that works well for moderate tenant counts.
- Row-level security, where a single table holds everyone’s rows and policy filters access.
Above the database layer, providers isolate customers using virtual machines and containers. Understanding where those boundaries sit is essential, and it connects directly to the shared responsibility model that governs who patches what. For a deeper look at how these layers interact, the material on enterprise AI and cloud security at 9481.org covers the isolation and access-control side in more detail.
A practical warning: multi-tenant designs that start with row-level security often hit painful limits when one large tenant’s queries slow everyone else down. Noisy-neighbor problems are an architectural issue, not a tuning issue.
Managed versus self-hosted: the real cost comparison
Every cloud database decision includes a build-versus-buy question, and the honest comparison is rarely about the sticker price of compute.
| Factor | Managed service | Self-hosted on IaaS |
|---|---|---|
| Patching and upgrades | Provider handles | Your team handles |
| Backups and point-in-time recovery | Built in | You design and test |
| Replication and failover | Configured, often automated | You build and verify |
| Cost transparency | Per-hour and per-request, can surprise | Predictable but includes hidden labor |
| Flexibility | Limited to exposed knobs | Total control |
| Operational headcount | Lower | Higher |
The most common mistake is comparing a managed database’s monthly bill to a raw virtual machine’s monthly bill. That comparison ignores the engineer who spends a quarter of their week on patching, backup verification, and failover drills. Managed services win more often than the raw numbers suggest, but not always. Teams with unusual tuning needs, strict licensing constraints, or very stable workloads sometimes genuinely save money by self-hosting.
A second common mistake is the reverse: assuming managed means hands-off. It does not. You still own schema design, query performance, index strategy, and access control. The provider owns the metal and the engine binary. Everything above that is yours.
Designing for failure, regions, and data residency
Cloud databases assume failure. Disks die, nodes vanish, and occasionally an entire zone goes dark. Architecture answers this with replication, quorum, and automated failover.
Open-source distributed databases illustrate the pattern clearly. CockroachDB, open-sourced in 2014 under Apache 2.0, and TiDB, open-sourced in 2015, both implement distributed SQL with Raft-based replication. Raft is a consensus algorithm: a majority of replicas must agree before a write commits, which is what makes the system survive minority failures without losing data.
Geography adds a legal dimension. The EU’s General Data Protection Regulation, applicable since 25 May 2018, restricts cross-border transfers of personal data. The official GDPR regulation text on EUR-Lex sets out those rules. For architects, this means region choice is not just a latency decision. Pinning data to a jurisdiction can force a multi-region topology that costs more and complicates consistency.
Before committing to a topology, it helps to read provider announcements carefully. A guide to how to read a cloud region announcement is useful here, because “new region” rarely means “everything is available on day one.”
Practical steps for choosing an architecture
Working through the decision in order saves months of rework.
- Classify the workload. Transactional, analytical, or mixed. Write-heavy or read-heavy. Steady or spiky.
- Set a latency budget per feature. Not per system. Different features tolerate different staleness.
- Decide the consistency requirement explicitly. Write it down and get product sign-off.
- Map data residency obligations. Identify which data cannot leave which jurisdiction.
- Choose the isolation model. Tenant count and tenant size drive this more than anything else.
- Model cost at realistic scale. Include the boring parts: backups, cross-region replication, and egress.
- Plan the migration inventory before touching anything. A checklist for what to inventory before a cloud migration prevents the classic discovery that a forgotten dependency blocks cutover.
That last point deserves emphasis. Teams routinely discover mid-migration that a reporting job, a cron script, or a third-party integration depends on a database feature the target platform handles differently. Inventory first.
Cost traps that surprise almost everyone
Cloud database bills are dominated by three things: compute hours, storage, and data transfer. The third is the one nobody budgets for.
Cross-region replication, cross-zone traffic, and read replicas in distant regions all generate egress charges that can quietly exceed compute costs. A clearer way to track cloud data transfer costs is to tag and monitor them from day one rather than reconstructing them after the invoice arrives. A structured approach, like the one outlined in this guide to tracking cloud data transfer costs, helps teams see which queries and replicas are actually generating the traffic.
A second trap is over-provisioning for peak. Serverless and autoscaling options exist precisely to avoid paying for idle capacity, but only if the workload tolerates the scaling behavior.
A third is account sprawl. As teams grow, databases multiply across accounts, and governance gets murky. Knowing when to split workloads across cloud accounts is a governance question as much as a technical one, and getting it right early avoids a painful consolidation later.
Conclusion
Cloud database architecture is ultimately a study in deliberate trade-offs. Shared-disk designs like Aurora simplify compute scaling by centralizing storage. Shared-nothing designs scale horizontally at the cost of coordination complexity. Separating storage from compute unlocks elasticity, and serverless pushes that elasticity to its logical end. Consistency models, isolation strategies, and region choices each carry costs that show up in latency, money, or legal exposure.
The teams that get this right do not chase the newest engine. They classify their workloads honestly, write down their consistency and residency requirements, model the full cost including transfer, and inventory dependencies before moving anything. That discipline matters more than any single product choice, and it is what separates a database that quietly works from one that becomes an expensive lesson.
FAQ
What is the difference between shared-disk and shared-nothing cloud databases?
In a shared-disk system, all compute nodes access one storage layer, which simplifies scaling but concentrates contention. In a shared-nothing system, each node owns its own data and coordinates with peers, which scales well horizontally but makes rebalancing and cross-node queries harder. Amazon Aurora is a documented shared-disk example, while many analytical warehouses use shared-nothing. (AWS Well-Architected Framework)
Why is separating storage from compute important?
It lets compute nodes scale up, down, or disappear without affecting durable data. That means you pay for processing only while it runs, and storage grows independently. Snowflake’s independent virtual warehouses are the clearest commercial example of the pattern.
Does serverless always reduce database costs?
No. Serverless removes capacity planning and bills by usage, which is excellent for spiky or intermittent workloads. But per-request pricing punishes inefficient queries, and cold starts can hurt latency-sensitive applications. Steady, predictable workloads often cost less on provisioned capacity.
What does the CAP theorem actually say?
It says that during a network partition, a distributed system must choose between consistency and availability. It is commonly misstated as “pick two of three.” The precise result, proved by Gilbert and Lynch in 2002, treats partitions as unavoidable and frames the real trade-off as consistency versus availability during those partitions.
How does data residency affect database architecture?
Laws such as the EU’s GDPR restrict where personal data can be stored and transferred. Architects may need to pin data to specific regions, which can force multi-region topologies that increase cost and complicate consistency. Region choice becomes a legal decision, not just a latency one.
Is a managed database always cheaper than self-hosting?
Not always, but more often than raw compute comparisons suggest. Managed services bundle patching, backups, and failover that otherwise consume engineering time. Self-hosting wins when workloads are stable, tuning needs are unusual, or licensing constraints apply. The mistake is comparing only the monthly infrastructure bill.







