{
  "docVersion": 1,
  "id": "blog-tenancy-d1",
  "name": "Deployment postures — single, multi, hybrid",
  "purpose": "Three ways to deploy one SaaS: a dedicated copy per customer, one shared deployment, or the hybrid tier split.",
  "nodes": {
    "a_u": {
      "type": "user",
      "label": "Customer A",
      "x": 40,
      "y": 40,
      "w": 130,
      "h": 84
    },
    "a_app": {
      "type": "server",
      "label": "App copy A",
      "x": 40,
      "y": 170,
      "w": 130,
      "h": 84
    },
    "a_db": {
      "type": "database",
      "label": "DB A",
      "x": 40,
      "y": 300,
      "w": 130,
      "h": 84
    },
    "b_u": {
      "type": "user",
      "label": "Customer B",
      "x": 200,
      "y": 40,
      "w": 130,
      "h": 84
    },
    "b_app": {
      "type": "server",
      "label": "App copy B",
      "x": 200,
      "y": 170,
      "w": 130,
      "h": 84
    },
    "b_db": {
      "type": "database",
      "label": "DB B",
      "x": 200,
      "y": 300,
      "w": 130,
      "h": 84
    },
    "m_u": {
      "type": "users",
      "label": "All customers",
      "x": 520,
      "y": 40,
      "w": 130,
      "h": 84
    },
    "m_app": {
      "type": "k8s",
      "label": "One app",
      "x": 520,
      "y": 170,
      "w": 130,
      "h": 84,
      "color": "blue"
    },
    "m_db": {
      "type": "database",
      "label": "One DB",
      "x": 520,
      "y": 300,
      "w": 130,
      "h": 84,
      "color": "blue"
    },
    "h_u": {
      "type": "users",
      "label": "Std tiers",
      "x": 830,
      "y": 40,
      "w": 130,
      "h": 84
    },
    "h_app": {
      "type": "k8s",
      "label": "Shared stack",
      "x": 830,
      "y": 170,
      "w": 130,
      "h": 84,
      "color": "blue"
    },
    "h_w": {
      "type": "user",
      "label": "Enterprise",
      "x": 1000,
      "y": 40,
      "w": 130,
      "h": 84
    },
    "h_wapp": {
      "type": "server",
      "label": "Dedicated stack",
      "x": 1000,
      "y": 170,
      "w": 130,
      "h": 84,
      "color": "purple"
    }
  },
  "edges": {
    "e1": {
      "from": "a_u",
      "to": "a_app",
      "fromSide": "bottom",
      "toSide": "top"
    },
    "e2": {
      "from": "a_app",
      "to": "a_db",
      "fromSide": "bottom",
      "toSide": "top"
    },
    "e3": {
      "from": "b_u",
      "to": "b_app",
      "fromSide": "bottom",
      "toSide": "top"
    },
    "e4": {
      "from": "b_app",
      "to": "b_db",
      "fromSide": "bottom",
      "toSide": "top"
    },
    "e5": {
      "from": "m_u",
      "to": "m_app",
      "fromSide": "bottom",
      "toSide": "top"
    },
    "e6": {
      "from": "m_app",
      "to": "m_db",
      "fromSide": "bottom",
      "toSide": "top"
    },
    "e7": {
      "from": "h_u",
      "to": "h_app",
      "fromSide": "bottom",
      "toSide": "top"
    },
    "e8": {
      "from": "h_w",
      "to": "h_wapp",
      "fromSide": "bottom",
      "toSide": "top"
    }
  },
  "boxes": {
    "z1": {
      "x": 10,
      "y": -30,
      "w": 350,
      "h": 450,
      "label": "single-tenant — a copy each",
      "color": "gray",
      "opacity": 0.04
    },
    "z2": {
      "x": 480,
      "y": -30,
      "w": 210,
      "h": 450,
      "label": "multi-tenant",
      "color": "blue",
      "opacity": 0.04
    },
    "z3": {
      "x": 800,
      "y": -30,
      "w": 360,
      "h": 450,
      "label": "hybrid — tiered",
      "color": "purple",
      "opacity": 0.04
    }
  },
  "texts": {
    "t1": {
      "x": 800,
      "y": 320,
      "text": "hybrid = pricing strategy\nexpressed as architecture",
      "color": "purple",
      "size": 12
    }
  },
  "meta": {
    "createdAt": "2026-07-19T09:00:00.000Z",
    "modifiedAt": "2026-07-19T09:00:00.000Z"
  }
}