LakeSentry Architecture — SaaS and Databricks App Deployments
LakeSentry is available in two deployment models: a hosted SaaS at lakesentry.io, and a Databricks App that runs inside your own Databricks account. Both run the same application — a web app, an API, and a job queue that runs the data pipeline. They differ in where that application runs, where your data is stored, and how it reaches your system tables.
| SaaS | Databricks App | |
|---|---|---|
| Where it runs | LakeSentry-hosted server on Azure | Inside your Databricks account, as a Databricks App |
| Tenant database | PostgreSQL, dedicated to your tenant | Lakebase, in your Databricks account |
| Sign-in | LakeSentry accounts, magic links, or SSO | Your Databricks identity |
| Data extraction | Direct connection or the Data Collector | A SQL warehouse in your account |
Components
Section titled “Components”- Request proxy (Caddy) — The entry point for all traffic to lakesentry.io. It routes each request to the right tenant container, or to the admin portal.
- Tenant container — Your own LakeSentry instance. Every customer gets a dedicated container with its own application and database, so no application process or database is shared between tenants. It holds:
- Tenant Web SPA (React + TypeScript) — The LakeSentry web app you use in the browser.
- Tenant API (Go) — Serves the web app and receives extracted Databricks data, whether pulled over a direct connection or pushed by the Data Collector.
- Job queue (River) — Runs background work outside the request path: scheduled extraction, transforms, attribution, metrics, and insight detection.
- Tenant DB (PostgreSQL) — Stores your raw, ledger, metrics, and insight data. Only your tenant container connects to it.
- Admin portal (Go + React) — Manages tenants and provisions a tenant container for each new customer. It keeps its own Admin DB (PostgreSQL), separate from any tenant data.
- Databricks workspace — The source of your cost and usage data: Unity Catalog system tables, queried through a SQL warehouse.
- Data Collector (Python) — Optional. With the External Connector, a Python job runs in your Databricks workspace, reads the system tables, and pushes the data to LakeSentry over HTTPS. Use it when LakeSentry shouldn’t connect to your workspace directly. See Collector Deployment.
- Other external services — Supporting services such as Stripe for billing and SMTP for email delivery.
Databricks App
Section titled “Databricks App”Components
Section titled “Components”- Users — Open LakeSentry from your Databricks account. Databricks handles authentication, so LakeSentry’s own password, magic-link, and SSO sign-in don’t apply.
- LakeSentry Databricks App — The same application as the SaaS, packaged as a Databricks App:
- Request proxy (Caddy) — Routes requests to the tenant or to the admin service.
- Tenant — The web app, API, and job queue, with the same roles as in the SaaS. A Databricks App serves a single tenant: your account.
- Admin (Go + React) — The admin API and web app for the app instance.
- System tables and SQL warehouse — The tenant extracts system table data through a SQL warehouse in your account. No Data Collector is needed, because the app already runs next to your data.
- Tenant DB (Lakebase) — The tenant database runs on Lakebase, Databricks’ managed PostgreSQL, so LakeSentry’s data stays in your Databricks account.
- Genie Space — A Databricks AI/BI Genie space built on the tenant database, for natural-language questions about your LakeSentry data.
- MCP for Genie — The Model Context Protocol (MCP) server that the Tenant API uses to query the Genie space.