vars: {d2-config: {layout-engine: tala}} style.fill: "#EFF4F6" # Numeric top and left coordinates give this composition its shape. edition: "ATLAS / DATA PLATFORM" { left: 0 top: 0 width: 1230 height: 42 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#5A7584" font-size: 18 bold: true } } title: "A place for every signal." { left: 0 top: 58 width: 1230 height: 75 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#183D51" font-size: 46 bold: true } } subtitle: "An architectural section through a small, well-kept analytics stack." { left: 0 top: 140 width: 1230 height: 40 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#5A7584" font-size: 21 bold: false } } sources: "01 / COLLECT" { left: 0 top: 250 width: 200 height: 40 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#5A7584" font-size: 17 bold: true } } app: "Product events\nBehaviour" { left: 260 top: 230 width: 280 height: 100 style: { fill: "#EFF4F6" stroke: "#235E7B" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } billing: "Billing changes\nRevenue" { left: 650 top: 230 width: 280 height: 100 style: { fill: "#EFF4F6" stroke: "#235E7B" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } support: "Support tickets\nCustomer voice" { left: 1040 top: 230 width: 280 height: 100 style: { fill: "#EFF4F6" stroke: "#235E7B" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } ingest: "02 / RECEIVE" { left: 0 top: 465 width: 200 height: 40 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#5A7584" font-size: 17 bold: true } } stream: "Event stream\nOrdered + replayable" { left: 260 top: 440 width: 280 height: 100 style: { fill: "#DCE8EC" stroke: "#DCE8EC" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } cdc: "Change capture\nIncremental snapshots" { left: 650 top: 440 width: 280 height: 100 style: { fill: "#DCE8EC" stroke: "#DCE8EC" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } batch: "Batch loader\nA daily handshake" { left: 1040 top: 440 width: 280 height: 100 style: { fill: "#DCE8EC" stroke: "#DCE8EC" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } store: "03 / KEEP" { left: 0 top: 660 width: 200 height: 40 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#5A7584" font-size: 17 bold: true } } warehouse: "THE WAREHOUSE\nRaw → trusted → ready" { left: 260 top: 640 width: 1060 height: 115 style: { fill: "#235E7B" stroke: "#235E7B" font-color: "#FFFFFF" font-size: 28 bold: true border-radius: 6 stroke-width: 2 } } serve: "04 / USE" { left: 0 top: 895 width: 200 height: 40 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#5A7584" font-size: 17 bold: true } } metrics: "Metrics layer\nOne definition of “active”" { left: 260 top: 855 width: 280 height: 100 style: { fill: "#EFF4F6" stroke: "#235E7B" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } model: "Feature tables\nFresh inputs for models" { left: 650 top: 855 width: 280 height: 100 style: { fill: "#EFF4F6" stroke: "#235E7B" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } extract: "Partner export\nOnly what is needed" { left: 1040 top: 855 width: 280 height: 100 style: { fill: "#EFF4F6" stroke: "#235E7B" font-color: "#183D51" font-size: 22 bold: false border-radius: 6 stroke-width: 2 } } app -> stream: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } billing -> cdc: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } support -> batch: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } stream -> warehouse: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } cdc -> warehouse: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } batch -> warehouse: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } warehouse -> metrics: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } warehouse -> model: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } warehouse -> extract: { style.stroke: "#235E7B" style.stroke-width: 2 style.font-size: 16 style.font-color: "#235E7B" } principles: "FOUNDATION / OWNERSHIP · LINEAGE · ACCESS · FRESHNESS" { left: 260 top: 1040 width: 1060 height: 38 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#5A7584" font-size: 17 bold: true } } footer: "A deliberately small platform. Every layer has a job." { left: 260 top: 1090 width: 1060 height: 40 shape: text style: { fill: "transparent" stroke: "transparent" font-color: "#5A7584" font-size: 20 bold: false } }