skip to content

Two teams each deploy their system into multiple geographic units. Team A calls each unit a 'geode': every geode runs the full application, holds a globally-replicated copy of the data, and can serve any user's request. Team B calls each unit a 'stamp': every stamp is a fully isolated deployment that serves only the specific set of tenants assigned to it, with no data sharing between stamps. What is the key architectural difference between these two approaches, and what does it imply for how each team handles a regional outage?

level: middleimportance: should knowfreq 40%

answer

  1. geode = interchangeable peer, stamp = isolated partition
  2. geode routes by proximity/health, stamp routes by tenant assignment
  3. geode outage = shared capacity dip; stamp outage = that stamp's tenants down
  4. geode replicates data everywhere; stamp keeps data local to its tenants
  5. isolation vs substitutability trade-off

basics

~20 s

Geodes are all interchangeable copies that can each serve any user, so if one goes down the others just pick up its traffic. Stamps are separate, isolated slices that each own their own specific customers, so if one stamp goes down, only that stamp's customers are affected, and nobody else can serve them until it's back.

solid answer

~40 s

The difference is in what each unit is responsible for. A geode is a peer: every geode has, via replication, the full dataset and can correctly answer any request, so the units are interchangeable from the client's point of view, and routing just picks a nearby healthy one. A stamp is a partition: each stamp owns a disjoint subset of tenants/customers and their data, and other stamps have no way to serve that data, so the units are not interchangeable - losing a stamp means an outage specifically for that stamp's tenants, not a capacity reduction shared by everyone. Geode trades extra replication cost for the ability to route around any single-region failure; Deployment Stamp trades that flexibility for strong tenant isolation, independent scaling per stamp, and no cross-region data replication cost.

go deeper

for a junior

Should be able to say that geodes are interchangeable copies (any can serve any user) while stamps are separate slices that only serve their own assigned customers.

for a middle

Should articulate that this difference changes how routing works (proximity/health vs. tenant-to-stamp lookup) and what a regional outage means for each (shared capacity dip vs. tenant-specific outage).

for a senior

Should be able to map the trade-off to real product requirements - e.g., data residency, tenant isolation, and blast-radius containment favor Deployment Stamp, while global latency/availability for a homogeneous user base favors Geode.

for a principal

Should recognize the patterns can be composed at different layers of the same system and be able to pick the right one, or combination, given constraints like regulatory residency, tenant heterogeneity, and failure-blast-radius requirements, not just describe each in isolation.

## Why they get conflated Geode and Deployment Stamp are both patterns for running multiple copies of a system in different places, and it's easy to conflate them because both involve 'more than one deployment,' but they solve different problems and make opposite choices about what each unit owns. ## What each unit owns - **In the Geode pattern, the unit of deployment - the geode - is a peer** that is functionally identical to every other geode and, critically, can serve any request from any user, because the application data is replicated across all geodes. There is no concept of 'this geode belongs to these users' - a request from a user in Brazil could, in principle, be served correctly by the geode in Ireland if that's the one routing sends it to, because that geode has, via replication, a usable copy of the relevant data. - **The unit of deployment in the Deployment Stamp pattern - the stamp - is instead a fully isolated, self-contained slice of the system**: its own compute, its own storage, its own copy of the code, deployed independently, but crucially assigned to serve only a specific subset of tenants or customers, with no data sharing to other stamps. A request for a customer assigned to stamp 3 can only be correctly served by stamp 3; no other stamp has that customer's data at all. ## How that cascades Mechanically, this difference cascades into how routing, failure handling, and data architecture all work. | | Geode | Deployment Stamp | |---|---|---| | **Routing** | proximity/health-based and interchangeable - send this request to the nearest healthy geode - because any geode will do | assignment-based - send this tenant's request to the specific stamp it's assigned to - typically via a lookup, a directory service mapping tenant ID to stamp, rather than pure geography, because proximity is irrelevant if the wrong stamp can't serve the request at all | | **When a geode's or a stamp's region fails, the system's response is** | to route that traffic to the remaining geodes, a capacity reduction shared across the whole active-active fleet, invisible to most users if there's enough spare capacity elsewhere | that stamp's specific tenants experience an outage, full stop, until that stamp recovers, unless the architecture separately adds stamp-level disaster recovery, a whole separate concern; the other stamps carry on completely unaffected because they were never involved in serving those tenants anyway | ## Trade-offs in opposite directions The trade-offs run in opposite directions. - **Geode buys resilience-by-substitutability** - lose one geode, others cover for it - at the cost of running full cross-region data replication continuously, and it requires the application to tolerate the reality that data written in one region may be read slightly stale in another. - **Deployment Stamp buys strong tenant isolation**, since one noisy or misbehaving tenant, or one buggy deployment scoped to a stamp, can't affect tenants in other stamps, simpler data architecture with no cross-region replication conflicts to reason about, and the ability to size, scale, and version each stamp independently for its assigned tenant population - at the cost of no automatic cross-stamp failover: if a stamp is down, its tenants are down, and mitigating that requires either accepting the outage window or building separate DR machinery for that specific stamp, which is a different, narrower guarantee than what active-active geodes provide by default. ## Different business shapes They're also frequently used for different business shapes. - **Geode fits products with a single, generally homogeneous user base spread globally**, where the goal is uniformly low latency and high availability for everyone, such as a consumer app or a global API. - **Deployment Stamp fits multi-tenant SaaS products** where tenants need strong isolation from each other - for regulatory/data-residency reasons, for blast-radius containment, or because tenants are sized so differently that one-size-fits-all capacity planning doesn't work - and where 'my region went down' being scoped to only that region's tenants is an acceptable, even desirable, property rather than a defect. ## Composing them, and the question that tells them apart It's worth noting the patterns aren't mutually exclusive at different layers of the same system: a vendor could run Deployment Stamps to isolate large enterprise tenants by data-residency requirement, while each stamp internally is a single-region deployment, or in principle a stamp itself could be built as a smaller geode-like active-active cluster across nearby availability zones for local resilience, without that stamp becoming interchangeable with a stamp on another continent. The key distinguishing question to ask about any multi-region deployment is simply: **if you send a random request to a random unit, can it correctly answer it?** If yes, you're looking at something in the Geode family. If the answer depends on which specific tenant or customer the request is for, you're looking at something in the Deployment Stamp family.

  • If a multi-tenant SaaS company needs one enterprise customer's data to never leave the EU for regulatory reasons, which pattern fits more naturally and why?
    Deployment Stamp fits more naturally, because a stamp can be dedicated to (or scoped to only include) that customer with all of its data and compute physically located in the EU, and no replication ever copies that data elsewhere. Geode's core mechanism - replicating data across every region so any geode can serve any request - actively works against a hard data-residency requirement unless it's specially carved out, which undermines the pattern's simplicity.
  • Can a system use both patterns at once, and if so, how?
    Yes - they operate at different granularities and aren't mutually exclusive. A common combination is Deployment Stamp at the tenant-isolation layer, where each large customer or customer segment gets its own stamp, with each individual stamp internally built as a small active-active geode cluster across nearby zones or regions for local resilience, without ever making one customer's stamp interchangeable with another customer's stamp.
  • What single question would you ask to tell whether an unfamiliar multi-region deployment is closer to Geode or Deployment Stamp?
    Ask whether a request from an arbitrary user, routed to an arbitrary regional unit, can be correctly answered by that unit. If any unit can serve any request because the data is globally replicated, it's Geode-shaped; if the answer depends on which specific tenant the request belongs to because data isn't shared across units, it's Deployment-Stamp-shaped.

Geodes are like a chain of identical bank branches where any teller at any branch can pull up your account and help you. Stamps are like separate walled-off mini-banks, each chartered to serve only its own assigned customers - if your specific mini-bank's branch burns down, no other mini-bank has your account on file to help you.

saying these in an interview costs you the question

  • Says the two patterns are basically the same thing with different names
  • Thinks stamp failure results in a shared capacity reduction across all tenants
  • Thinks geode failure only affects the specific users who happened to be 'assigned' to that geode
  • Can't explain why data residency requirements push toward Deployment Stamp rather than Geode
  • Assumes both patterns route requests the same way, by tenant lookup, or by pure geography

context