01 · Enterprise Tableau Architecture¶
Level 4 shifts from building/administering one deployment to designing
one across an organization. This module lays out reference architectures,
sizing considerations, and disaster-recovery patterns, grounding examples
in the Northwind Retail data used throughout the course.
1. Reference architecture: single-site vs. multi-site¶
- A single-site Tableau Server deployment puts every team's content
(Sales'
Ordersdashboards, Finance's reports, etc.) under one Site, relying on Projects and permissions (Level 3 Module 2) to separate audiences. - A multi-site deployment isolates tenants completely — e.g. a
"Sales" site holding the
Northwind Analyticsproject from Level 2, and a separate "Finance" site with no shared users or content by default — appropriate when regulatory or organizational boundaries require hard separation (different data residency rules, or subsidiaries that shouldn't see each other's content at all). - Trade-off: multi-site avoids any cross-team leakage risk but duplicates admin overhead (server processes, license pools' scoping if applicable) — most enterprises start single-site with strong project permissions, and split into sites only for a specific isolation requirement.
2. Node topology and process distribution¶
- A minimal production Server deployment separates roles across nodes:
e.g. one node running Gateway + VizQL Server (handling viewer traffic),
a second running Backgrounder (running the nightly extract refresh for
Orders, per Level 3 Module 4's incremental refresh pattern) and Data Server, and a third running the Repository (Postgres metadata). - Sizing decision: Backgrounder capacity should scale with the number and
size of scheduled extract refreshes, not viewer count — a deployment
with a handful of viewers but hundreds of nightly extract jobs (each
like the
Ordersincremental refresh from Level 3 Module 4) needs more Backgrounder capacity than viewer-facing capacity, and vice versa for a read-heavy, refresh-light deployment.
3. High availability and disaster recovery¶
- High availability (HA) adds redundant nodes for each critical
process so a single node failure doesn't take the whole Server down —
e.g. two Gateway nodes behind a load balancer so viewer traffic to the
Ordersdashboard continues if one Gateway node fails. - Disaster recovery (DR) is a separate concern: a secondary Server
deployment (often in a different data center/region) that can be
promoted if the primary deployment is lost entirely — this typically
relies on a Backup/Restore (
tsm maintenance backup) taken on a schedule and shipped to the DR site, meaning DR recovery point is bounded by backup frequency (a nightly backup means up to 24 hours of content changes could be lost in a DR failover — e.g. a same-day fix to theOrdersRLS entitlement table, Level 3 Module 3, made after the last backup would need to be reapplied manually after a DR failover).
4. Capacity planning inputs¶
- Four inputs drive sizing: concurrent viewer count, extract refresh
volume/frequency (Backgrounder load), workbook complexity (calc-heavy
dashboards like Level 3 Module 10's project cost more per view than a
simple bar chart), and data volume per extract (an
Orders-scale 8-row extract is negligible; a production fact table at millions of rows changes memory/CPU sizing substantially). - A common mistake is sizing only for viewer count and ignoring
Backgrounder load — a deployment that looks "right-sized" for 500
concurrent viewers can still fail its nightly refresh window if 200
scheduled extracts (each independently no larger than
Orders, but collectively large) are all scheduled to run in the same 2-hour window.
5. Choosing Server vs. Cloud at the architecture level¶
| Factor | Favors Server (self-hosted) | Favors Cloud (SaaS) |
|---|---|---|
| Data residency/on-prem source proximity | Yes — data stays behind firewall | Requires bridge/gateway for on-prem sources |
| Ops team capacity | Needs dedicated admin capacity | Salesforce manages infra |
| Custom node topology (Section 2) | Full control | Managed, less topology control |
| Scaling speed | Manual node provisioning | Elastic, managed by vendor |
How It Actually Works¶
- Sites are a hard tenancy boundary implemented at the metadata layer:
every content object (workbook, data source, project) in the
Repository (Postgres) carries a
site_idforeign key, and every query Server executes is scoped by the caller's site membership — a Sales site user's session simply cannot resolve a Finance site's content ID, because the query never includes rows outside thatsite_id. A single-site deployment with project permissions instead uses aproject_id/permission-grant model within the same site — a much finer-grained but not hard-isolated boundary, since a site admin (and anyone Tableau's permission model grants cross-project visibility to) can still see across projects, which is the concrete mechanism behind "multi-site avoids cross-team leakage risk" in Section 1. - Node roles are literal Linux processes/services configured via
tsm topology— Gateway (a reverse proxy routing incoming requests), VizQL Server (compiles and runs queries, renders views), Backgrounder (pulls extract-refresh and subscription jobs from a queue), and Repository (Postgres, holding all metadata). Assigning a node to "Backgrounder only" is atsmconfiguration change that starts only that process on that machine; this is why Section 2's sizing advice — scale Backgrounder capacity independently of Gateway/VizQL — is directly actionable: you can add a Backgrounder-only node without touching viewer-facing capacity at all. - HA and DR use different underlying mechanisms even though both are
"redundancy": HA relies on running duplicate processes of the same
role behind a load balancer within one deployment, so a live failover
is automatic and near-instant (the load balancer stops routing to the
failed node); DR relies on
tsm maintenance backupproducing a point-in-time snapshot of the Repository plus file store, shipped to a separate deployment — recovery requires restoring that backup and promoting the DR site, which is why DR's recovery point is bounded by backup frequency (last night's backup) rather than being continuous like HA. - Capacity planning inputs are additive but not interchangeable in the underlying resource model: concurrent viewers and workbook complexity both consume VizQL Server CPU/memory at query time, while extract volume/frequency consumes Backgrounder CPU/memory on a schedule — since these are different processes (Section 2), a deployment can be correctly sized for one and badly undersized for the other simultaneously, which is exactly the scenario Section 4's common mistake and the Exercise both test.
Cheat sheet¶
| Concern | Key architecture decision |
|---|---|
| Tenant isolation | Single site + strong permissions vs. multi-site |
| Process placement | Separate Gateway/VizQL from Backgrounder for large refresh volume |
| Resilience | HA (node redundancy) vs. DR (separate site + backup) |
| Sizing | Viewer count AND Backgrounder/refresh load, not just one |
Exercise¶
A company runs 300 nightly extract refreshes, each roughly the complexity
of the Level 3 Module 4 Orders flow, all scheduled in a 1-hour window,
alongside 50 concurrent daytime viewers. Which capacity input (Section 4)
is most likely under-provisioned if the nightly refresh window regularly
overruns, and which node role (Section 2) should be scaled first? (The
refresh-volume input is under-provisioned; scale Backgrounder capacity,
not Gateway/VizQL, since the viewer count of 50 is comparatively light.)