<div class="chartlet-wrapper chartlet-responsive chartlet-bp-640"><style>.chartlet-wrapper.chartlet-responsive{display:block;width:100%;container-type:inline-size}.chartlet-variant-mobile{display:none}@container (max-width:639px){.chartlet-bp-640 .chartlet-variant-desktop{display:none}.chartlet-bp-640 .chartlet-variant-mobile{display:block}}</style><style>.chartlet-stage{position:relative;display:inline-block;max-width:100%;vertical-align:top}.chartlet-stage>svg{display:block}.chartlet-hotspot{position:absolute;border-radius:8px;cursor:pointer}.chartlet-focus{margin:0 0 12px 0;font-size:13px}.chartlet-focus summary{cursor:pointer;min-height:24px}.chartlet-focus fieldset{border:none;padding:0;margin:4px 0 0 0}.chartlet-focus label{display:inline-flex;align-items:center;min-height:44px;margin-right:14px;cursor:pointer;white-space:nowrap}.chartlet-focus input{margin-right:4px}.chartlet-focus input:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.chartlet-wrapper:has(.chartlet-focus-node:checked) #chartlet-8a8a959083eec2e0 .chartlet-f{opacity:.18}#chartlet-8a8a959083eec2e0-hs-0{left:2.791%;top:67.582%;width:67.907%;height:19.231%}#chartlet-8a8a959083eec2e0-hs-1{left:2.791%;top:46.154%;width:67.907%;height:19.231%}#chartlet-8a8a959083eec2e0-hs-2{left:2.791%;top:24.725%;width:67.907%;height:19.231%}#chartlet-8a8a959083eec2e0-hs-3{left:2.791%;top:3.297%;width:67.907%;height:19.231%}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-0:checked) #chartlet-8a8a959083eec2e0 .chartlet-f-0{opacity:1}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-0:checked) #chartlet-8a8a959083eec2e0 .chartlet-n-0 .chartlet-flow-node,.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-0:checked) #chartlet-8a8a959083eec2e0 .chartlet-n-0 .chartlet-seq-box{stroke-width:3}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-1:checked) #chartlet-8a8a959083eec2e0 .chartlet-f-1{opacity:1}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-1:checked) #chartlet-8a8a959083eec2e0 .chartlet-n-1 .chartlet-flow-node,.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-1:checked) #chartlet-8a8a959083eec2e0 .chartlet-n-1 .chartlet-seq-box{stroke-width:3}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-2:checked) #chartlet-8a8a959083eec2e0 .chartlet-f-2{opacity:1}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-2:checked) #chartlet-8a8a959083eec2e0 .chartlet-n-2 .chartlet-flow-node,.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-2:checked) #chartlet-8a8a959083eec2e0 .chartlet-n-2 .chartlet-seq-box{stroke-width:3}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-3:checked) #chartlet-8a8a959083eec2e0 .chartlet-f-3{opacity:1}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-3:checked) #chartlet-8a8a959083eec2e0 .chartlet-n-3 .chartlet-flow-node,.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-3:checked) #chartlet-8a8a959083eec2e0 .chartlet-n-3 .chartlet-seq-box{stroke-width:3}.chartlet-wrapper:has(.chartlet-focus-node:checked) #chartlet-8a8a959083eec2e0-m .chartlet-f{opacity:.18}#chartlet-8a8a959083eec2e0-m-hs-0{left:3.333%;top:68.443%;width:93.333%;height:21.322%}#chartlet-8a8a959083eec2e0-m-hs-1{left:3.333%;top:45.416%;width:93.333%;height:21.322%}#chartlet-8a8a959083eec2e0-m-hs-2{left:3.333%;top:22.388%;width:93.333%;height:21.322%}#chartlet-8a8a959083eec2e0-m-hs-3{left:3.333%;top:2.559%;width:93.333%;height:18.124%}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-0:checked) #chartlet-8a8a959083eec2e0-m .chartlet-f-0{opacity:1}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-0:checked) #chartlet-8a8a959083eec2e0-m .chartlet-n-0 .chartlet-flow-node,.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-0:checked) #chartlet-8a8a959083eec2e0-m .chartlet-n-0 .chartlet-seq-box{stroke-width:3}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-1:checked) #chartlet-8a8a959083eec2e0-m .chartlet-f-1{opacity:1}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-1:checked) #chartlet-8a8a959083eec2e0-m .chartlet-n-1 .chartlet-flow-node,.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-1:checked) #chartlet-8a8a959083eec2e0-m .chartlet-n-1 .chartlet-seq-box{stroke-width:3}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-2:checked) #chartlet-8a8a959083eec2e0-m .chartlet-f-2{opacity:1}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-2:checked) #chartlet-8a8a959083eec2e0-m .chartlet-n-2 .chartlet-flow-node,.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-2:checked) #chartlet-8a8a959083eec2e0-m .chartlet-n-2 .chartlet-seq-box{stroke-width:3}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-3:checked) #chartlet-8a8a959083eec2e0-m .chartlet-f-3{opacity:1}.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-3:checked) #chartlet-8a8a959083eec2e0-m .chartlet-n-3 .chartlet-flow-node,.chartlet-wrapper:has(#chartlet-8a8a959083eec2e0-focus-3:checked) #chartlet-8a8a959083eec2e0-m .chartlet-n-3 .chartlet-seq-box{stroke-width:3}</style><details class="chartlet-focus"><summary>Focus</summary><fieldset><label><input type="radio" name="chartlet-8a8a959083eec2e0-focus" checked> Show all</label><label><input type="radio" name="chartlet-8a8a959083eec2e0-focus" class="chartlet-focus-node" id="chartlet-8a8a959083eec2e0-focus-0"> Infrastructure</label><label><input type="radio" name="chartlet-8a8a959083eec2e0-focus" class="chartlet-focus-node" id="chartlet-8a8a959083eec2e0-focus-1"> Runtime and data</label><label><input type="radio" name="chartlet-8a8a959083eec2e0-focus" class="chartlet-focus-node" id="chartlet-8a8a959083eec2e0-focus-2"> Domain services</label><label><input type="radio" name="chartlet-8a8a959083eec2e0-focus" class="chartlet-focus-node" id="chartlet-8a8a959083eec2e0-focus-3"> Experience</label></fieldset></details><figure class="chartlet-figure" data-viz="chart"><figcaption>The layers of the platform, from the machine up</figcaption><div class="chartlet-variant-desktop"><div class="chartlet-stage"><svg xmlns="http://www.w3.org/2000/svg" width="860" height="364" viewBox="0 0 860 364" id="chartlet-8a8a959083eec2e0" role="img" aria-labelledby="chartlet-8a8a959083eec2e0-title chartlet-8a8a959083eec2e0-description" class="chartlet-root"><title id="chartlet-8a8a959083eec2e0-title">The layers of the platform, from the machine up</title><desc id="chartlet-8a8a959083eec2e0-description">Layer stack of 4 layers, from the bottom: 1 Infrastructure (items: Compute, Storage and Network; note: Rented from one provider; capacity is changed by the platform team only.); 2 Runtime and data (items: Containers, Message broker, Relational database and Object store); 3 Domain services (items: Orders, Catalog, Billing and Customers; note: One team per service; services talk only through published interfaces.); 4 Experience (items: Web shop, Mobile app and Partner API; note: The partner API is planned for next year.). Roles: critical: Domain services; planned: Experience.</desc><style>.chartlet-root{--chartlet-text:#172033;--chartlet-muted:#344054;--chartlet-grid:#d9dee8;--chartlet-zero:#667085;--chartlet-accent:#2563eb;--chartlet-background:#fff;--chartlet-color-1:#2563eb;--chartlet-color-2:#c2410c;--chartlet-color-3:#475569;--chartlet-color-4:#111827;max-width:100%;height:auto;font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:var(--chartlet-text)}#chartlet-8a8a959083eec2e0 .chartlet-title{font-size:22px;font-weight:650;fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0 .chartlet-label,#chartlet-8a8a959083eec2e0 .chartlet-tick,#chartlet-8a8a959083eec2e0 .chartlet-value,#chartlet-8a8a959083eec2e0 .chartlet-value-inverse,#chartlet-8a8a959083eec2e0 .chartlet-axis-title{font-size:12px;fill:var(--chartlet-muted)}#chartlet-8a8a959083eec2e0 .chartlet-value,#chartlet-8a8a959083eec2e0 .chartlet-value-inverse{font-weight:600}#chartlet-8a8a959083eec2e0 .chartlet-value{fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0 .chartlet-value-inverse{fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0 .chartlet-axis-title{font-weight:600}#chartlet-8a8a959083eec2e0 .chartlet-grid{stroke:var(--chartlet-grid);stroke-width:1}#chartlet-8a8a959083eec2e0 .chartlet-zero{stroke:var(--chartlet-zero);stroke-width:1.5}#chartlet-8a8a959083eec2e0 .chartlet-bar,#chartlet-8a8a959083eec2e0 .chartlet-point{fill:var(--chartlet-accent)}#chartlet-8a8a959083eec2e0 .chartlet-line{fill:none;stroke:var(--chartlet-accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}#chartlet-8a8a959083eec2e0 .chartlet-background{fill:var(--chartlet-background)}.chartlet-root{--chartlet-node:#eef3fd;--chartlet-lane:#f7f9fc;--chartlet-lane-head:#eef1f6;--chartlet-shadow:rgba(16,24,40,.09);--chartlet-role-blue:#2563eb;--chartlet-role-blue-fill:#eef3fd;--chartlet-role-green:#15803d;--chartlet-role-green-fill:#ecfdf3;--chartlet-role-amber:#b45309;--chartlet-role-amber-fill:#fff7e8;--chartlet-role-teal:#0f766e;--chartlet-role-teal-fill:#e9faf7;--chartlet-role-violet:#6d28d9;--chartlet-role-violet-fill:#f3efff;--chartlet-role-gray:#667085;--chartlet-role-gray-fill:#f7f8fa;--chartlet-role-red:#b42318;--chartlet-role-red-fill:#fef3f2}.chartlet-root.chartlet-theme-dark{--chartlet-node:#1a2436;--chartlet-lane:#121925;--chartlet-lane-head:#18212f;--chartlet-shadow:rgba(0,0,0,.45);--chartlet-role-blue:#7ea6ff;--chartlet-role-blue-fill:#1a2436;--chartlet-role-green:#4ade80;--chartlet-role-green-fill:#132a1d;--chartlet-role-amber:#fbbf24;--chartlet-role-amber-fill:#2b2210;--chartlet-role-teal:#2dd4bf;--chartlet-role-teal-fill:#0f2a27;--chartlet-role-violet:#b69cff;--chartlet-role-violet-fill:#231c38;--chartlet-role-gray:#9aa7bd;--chartlet-role-gray-fill:#161d29;--chartlet-role-red:#f97066;--chartlet-role-red-fill:#2d1616}#chartlet-8a8a959083eec2e0 .chartlet-role-blue{fill:var(--chartlet-role-blue-fill);stroke:var(--chartlet-role-blue)}#chartlet-8a8a959083eec2e0 .chartlet-role-green{fill:var(--chartlet-role-green-fill);stroke:var(--chartlet-role-green)}#chartlet-8a8a959083eec2e0 .chartlet-role-amber{fill:var(--chartlet-role-amber-fill);stroke:var(--chartlet-role-amber)}#chartlet-8a8a959083eec2e0 .chartlet-role-teal{fill:var(--chartlet-role-teal-fill);stroke:var(--chartlet-role-teal)}#chartlet-8a8a959083eec2e0 .chartlet-role-violet{fill:var(--chartlet-role-violet-fill);stroke:var(--chartlet-role-violet)}#chartlet-8a8a959083eec2e0 .chartlet-role-gray{fill:var(--chartlet-role-gray-fill);stroke:var(--chartlet-role-gray)}#chartlet-8a8a959083eec2e0 .chartlet-role-red{fill:var(--chartlet-role-red-fill);stroke:var(--chartlet-role-red)}#chartlet-8a8a959083eec2e0 .chartlet-diagram-rim{fill:none;stroke:var(--chartlet-role-teal);stroke-width:1.5}#chartlet-8a8a959083eec2e0 .chartlet-diagram-shadow{fill:var(--chartlet-shadow);stroke:none;rx:7px}#chartlet-8a8a959083eec2e0 .chartlet-diagram-chip{fill:var(--chartlet-background);stroke:var(--chartlet-grid);stroke-width:1;rx:4px}#chartlet-8a8a959083eec2e0 .chartlet-diagram-chip-text{font-size:12px;fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0 .chartlet-diagram-badge{fill:var(--chartlet-accent);stroke:var(--chartlet-background);stroke-width:2}#chartlet-8a8a959083eec2e0 .chartlet-diagram-badge-text{font-size:10px;font-weight:700;fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0 .chartlet-flow-node{stroke-width:1.5;stroke-linejoin:round;rx:7px}#chartlet-8a8a959083eec2e0 .chartlet-flow-start{stroke-width:2}#chartlet-8a8a959083eec2e0 .chartlet-flow-end{stroke-width:3}#chartlet-8a8a959083eec2e0 .chartlet-flow-external{stroke-dasharray:5 3}#chartlet-8a8a959083eec2e0 .chartlet-flow-inner{stroke:var(--chartlet-role-blue);stroke-width:1}#chartlet-8a8a959083eec2e0 .chartlet-flow-label{font-size:13px;font-weight:600;fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0 .chartlet-flow-sublabel{font-size:11px;fill:var(--chartlet-muted)}#chartlet-8a8a959083eec2e0 .chartlet-flow-edge{fill:none;stroke:var(--chartlet-zero);stroke-width:1.4;stroke-linejoin:round}#chartlet-8a8a959083eec2e0 .chartlet-flow-dashed{stroke-dasharray:5 4}#chartlet-8a8a959083eec2e0 .chartlet-flow-dotted{stroke-dasharray:1 4;stroke-linecap:round}#chartlet-8a8a959083eec2e0 .chartlet-flow-main{stroke:var(--chartlet-accent);stroke-width:2.2}#chartlet-8a8a959083eec2e0 .chartlet-flow-head{fill:var(--chartlet-zero);stroke:var(--chartlet-zero);stroke-width:1;stroke-linejoin:round}#chartlet-8a8a959083eec2e0 .chartlet-flow-main-head{fill:var(--chartlet-accent);stroke:var(--chartlet-accent)}#chartlet-8a8a959083eec2e0 .chartlet-flow-lane{fill:var(--chartlet-lane);stroke:var(--chartlet-grid);stroke-width:1}#chartlet-8a8a959083eec2e0 .chartlet-flow-lane-alt{fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0 .chartlet-flow-lane-head{fill:var(--chartlet-lane-head);stroke:none}#chartlet-8a8a959083eec2e0 .chartlet-flow-lane-label{font-size:11px;font-weight:650;fill:var(--chartlet-muted);letter-spacing:.04em}#chartlet-8a8a959083eec2e0 .chartlet-flow-group{fill:var(--chartlet-accent);fill-opacity:.04;stroke:var(--chartlet-zero);stroke-width:1;stroke-dasharray:4 3;rx:10px}#chartlet-8a8a959083eec2e0 .chartlet-flow-group-label{font-size:11px;font-weight:600;fill:var(--chartlet-muted)}#chartlet-8a8a959083eec2e0 .chartlet-layers-item{fill:var(--chartlet-background);stroke:var(--chartlet-grid);stroke-width:1;rx:5px}#chartlet-8a8a959083eec2e0 .chartlet-layers-item-text{font-size:12px;fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0 .chartlet-layers-note{font-size:12px;fill:var(--chartlet-muted)}#chartlet-8a8a959083eec2e0 .chartlet-layers-leader{fill:none;stroke:var(--chartlet-zero);stroke-width:1;stroke-dasharray:1 3;stroke-linecap:round}#chartlet-8a8a959083eec2e0 .chartlet-layers-odd{fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0 .chartlet-layers-guide{stroke:var(--chartlet-zero);stroke-width:1;stroke-dasharray:2 4}#chartlet-8a8a959083eec2e0 .chartlet-layers-shade-left{fill:var(--chartlet-text);fill-opacity:.1;stroke:none}#chartlet-8a8a959083eec2e0 .chartlet-layers-shade-right{fill:var(--chartlet-text);fill-opacity:.2;stroke:none}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-critical .chartlet-flow-node{stroke:var(--chartlet-role-red);stroke-width:3}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-planned .chartlet-flow-node{stroke:var(--chartlet-role-violet);stroke-dasharray:6 3}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-deprecated .chartlet-flow-node{stroke:var(--chartlet-role-gray);stroke-dasharray:1.5 3}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-critical .chartlet-flow-edge{stroke:var(--chartlet-role-red);stroke-width:2.6}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-planned .chartlet-flow-edge{stroke:var(--chartlet-role-violet);stroke-dasharray:6 4}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-deprecated .chartlet-flow-edge{stroke:var(--chartlet-role-gray);stroke-dasharray:1 4;stroke-linecap:round}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-critical .chartlet-flow-head,#chartlet-8a8a959083eec2e0 .chartlet-flow-role-critical .chartlet-diagram-badge{fill:var(--chartlet-role-red);stroke:var(--chartlet-role-red)}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-planned .chartlet-flow-head,#chartlet-8a8a959083eec2e0 .chartlet-flow-role-planned .chartlet-diagram-badge{fill:var(--chartlet-role-violet);stroke:var(--chartlet-role-violet)}#chartlet-8a8a959083eec2e0 .chartlet-flow-role-deprecated .chartlet-flow-head,#chartlet-8a8a959083eec2e0 .chartlet-flow-role-deprecated .chartlet-diagram-badge{fill:var(--chartlet-role-gray);stroke:var(--chartlet-role-gray)}#chartlet-8a8a959083eec2e0 .chartlet-legend{font-size:12px;fill:var(--chartlet-muted)}</style><g class="chartlet-f chartlet-n-0 chartlet-f-0"><rect x="24" y="248.5" width="584" height="70" class="chartlet-diagram-shadow"/><rect x="24" y="246" width="584" height="70" class="chartlet-flow-node chartlet-role-blue"><title>Infrastructure: Rented from one provider; capacity is changed by the platform team only.</title></rect><text x="36" y="270" text-anchor="start" class="chartlet-flow-label">Infrastructure</text><rect x="36" y="280" width="68.44" height="24" class="chartlet-layers-item"/><text x="70.22" y="296" text-anchor="middle" class="chartlet-layers-item-text">Compute</text><rect x="110.44" y="280" width="64.36" height="24" class="chartlet-layers-item"/><text x="142.62" y="296" text-anchor="middle" class="chartlet-layers-item-text">Storage</text><rect x="180.8" y="280" width="68.44" height="24" class="chartlet-layers-item"/><text x="215.02" y="296" text-anchor="middle" class="chartlet-layers-item-text">Network</text></g><line x1="608" y1="266" x2="628" y2="266" class="chartlet-layers-leader"/><text x="636" y="270" text-anchor="start" class="chartlet-layers-note">Rented from one provider; capacity</text><text x="636" y="285" text-anchor="start" class="chartlet-layers-note">is changed by the platform team</text><text x="636" y="300" text-anchor="start" class="chartlet-layers-note">only.</text><g class="chartlet-f chartlet-n-1 chartlet-f-1"><rect x="24" y="170.5" width="584" height="70" class="chartlet-diagram-shadow"/><rect x="24" y="168" width="584" height="70" class="chartlet-flow-node chartlet-role-blue"><title>Runtime and data</title></rect><text x="36" y="192" text-anchor="start" class="chartlet-flow-label">Runtime and data</text><rect x="36" y="202" width="81.4" height="24" class="chartlet-layers-item"/><text x="76.7" y="218" text-anchor="middle" class="chartlet-layers-item-text">Containers</text><rect x="123.4" y="202" width="111.28" height="24" class="chartlet-layers-item"/><text x="179.04" y="218" text-anchor="middle" class="chartlet-layers-item-text">Message broker</text><rect x="240.68" y="202" width="132.76" height="24" class="chartlet-layers-item"/><text x="307.06" y="218" text-anchor="middle" class="chartlet-layers-item-text">Relational database</text><rect x="379.44" y="202" width="91.96" height="24" class="chartlet-layers-item"/><text x="425.42" y="218" text-anchor="middle" class="chartlet-layers-item-text">Object store</text></g><g class="chartlet-f chartlet-n-2 chartlet-f-2 chartlet-flow-role-critical"><rect x="24" y="92.5" width="584" height="70" class="chartlet-diagram-shadow"/><rect x="24" y="90" width="584" height="70" class="chartlet-flow-node chartlet-role-blue"><title>Domain services: One team per service; services talk only through published interfaces.</title></rect><text x="36" y="114" text-anchor="start" class="chartlet-flow-label">Domain services</text><rect x="36" y="124" width="57.64" height="24" class="chartlet-layers-item"/><text x="64.82" y="140" text-anchor="middle" class="chartlet-layers-item-text">Orders</text><rect x="99.64" y="124" width="61.24" height="24" class="chartlet-layers-item"/><text x="130.26" y="140" text-anchor="middle" class="chartlet-layers-item-text">Catalog</text><rect x="166.88" y="124" width="51.88" height="24" class="chartlet-layers-item"/><text x="192.82" y="140" text-anchor="middle" class="chartlet-layers-item-text">Billing</text><rect x="224.76" y="124" width="81.88" height="24" class="chartlet-layers-item"/><text x="265.7" y="140" text-anchor="middle" class="chartlet-layers-item-text">Customers</text><circle cx="596" cy="102" r="8" class="chartlet-diagram-badge"/><text x="596" y="105.5" text-anchor="middle" class="chartlet-diagram-badge-text">!</text></g><line x1="608" y1="110" x2="628" y2="110" class="chartlet-layers-leader"/><text x="636" y="114" text-anchor="start" class="chartlet-layers-note">One team per service; services talk</text><text x="636" y="129" text-anchor="start" class="chartlet-layers-note">only through published interfaces.</text><g class="chartlet-f chartlet-n-3 chartlet-f-3 chartlet-flow-role-planned"><rect x="24" y="14.5" width="584" height="70" class="chartlet-diagram-shadow"/><rect x="24" y="12" width="584" height="70" class="chartlet-flow-node chartlet-role-blue"><title>Experience: The partner API is planned for next year.</title></rect><text x="36" y="36" text-anchor="start" class="chartlet-flow-label">Experience</text><rect x="36" y="46" width="70.96" height="24" class="chartlet-layers-item"/><text x="71.48" y="62" text-anchor="middle" class="chartlet-layers-item-text">Web shop</text><rect x="112.96" y="46" width="78.16" height="24" class="chartlet-layers-item"/><text x="152.04" y="62" text-anchor="middle" class="chartlet-layers-item-text">Mobile app</text><rect x="197.12" y="46" width="87.88" height="24" class="chartlet-layers-item"/><text x="241.06" y="62" text-anchor="middle" class="chartlet-layers-item-text">Partner API</text><circle cx="596" cy="24" r="8" class="chartlet-diagram-badge"/><text x="596" y="27.5" text-anchor="middle" class="chartlet-diagram-badge-text">+</text></g><line x1="608" y1="32" x2="628" y2="32" class="chartlet-layers-leader"/><text x="636" y="36" text-anchor="start" class="chartlet-layers-note">The partner API is planned for next</text><text x="636" y="51" text-anchor="start" class="chartlet-layers-note">year.</text><g class="chartlet-flow-role-critical"><circle cx="32" cy="346" r="8" class="chartlet-diagram-badge"/><text x="32" y="349.5" text-anchor="middle" class="chartlet-diagram-badge-text">!</text></g><text x="46" y="350" text-anchor="start" class="chartlet-legend">Critical</text><g class="chartlet-flow-role-planned"><circle cx="119.72" cy="346" r="8" class="chartlet-diagram-badge"/><text x="119.72" y="349.5" text-anchor="middle" class="chartlet-diagram-badge-text">+</text></g><text x="133.72" y="350" text-anchor="start" class="chartlet-legend">Planned</text></svg><label class="chartlet-hotspot" id="chartlet-8a8a959083eec2e0-hs-0" for="chartlet-8a8a959083eec2e0-focus-0"></label><label class="chartlet-hotspot" id="chartlet-8a8a959083eec2e0-hs-1" for="chartlet-8a8a959083eec2e0-focus-1"></label><label class="chartlet-hotspot" id="chartlet-8a8a959083eec2e0-hs-2" for="chartlet-8a8a959083eec2e0-focus-2"></label><label class="chartlet-hotspot" id="chartlet-8a8a959083eec2e0-hs-3" for="chartlet-8a8a959083eec2e0-focus-3"></label></div></div><div class="chartlet-variant-mobile"><div class="chartlet-stage"><svg xmlns="http://www.w3.org/2000/svg" width="360" height="469" viewBox="0 0 360 469" id="chartlet-8a8a959083eec2e0-m" role="img" aria-labelledby="chartlet-8a8a959083eec2e0-m-title chartlet-8a8a959083eec2e0-m-description" class="chartlet-root"><title id="chartlet-8a8a959083eec2e0-m-title">The layers of the platform, from the machine up</title><desc id="chartlet-8a8a959083eec2e0-m-description">Layer stack of 4 layers, from the bottom: 1 Infrastructure (items: Compute, Storage and Network; note: Rented from one provider; capacity is changed by the platform team only.); 2 Runtime and data (items: Containers, Message broker, Relational database and Object store); 3 Domain services (items: Orders, Catalog, Billing and Customers; note: One team per service; services talk only through published interfaces.); 4 Experience (items: Web shop, Mobile app and Partner API; note: The partner API is planned for next year.). Roles: critical: Domain services; planned: Experience.</desc><style>.chartlet-root{--chartlet-text:#172033;--chartlet-muted:#344054;--chartlet-grid:#d9dee8;--chartlet-zero:#667085;--chartlet-accent:#2563eb;--chartlet-background:#fff;--chartlet-color-1:#2563eb;--chartlet-color-2:#c2410c;--chartlet-color-3:#475569;--chartlet-color-4:#111827;max-width:100%;height:auto;font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:var(--chartlet-text)}#chartlet-8a8a959083eec2e0-m .chartlet-title{font-size:22px;font-weight:650;fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0-m .chartlet-label,#chartlet-8a8a959083eec2e0-m .chartlet-tick,#chartlet-8a8a959083eec2e0-m .chartlet-value,#chartlet-8a8a959083eec2e0-m .chartlet-value-inverse,#chartlet-8a8a959083eec2e0-m .chartlet-axis-title{font-size:12px;fill:var(--chartlet-muted)}#chartlet-8a8a959083eec2e0-m .chartlet-value,#chartlet-8a8a959083eec2e0-m .chartlet-value-inverse{font-weight:600}#chartlet-8a8a959083eec2e0-m .chartlet-value{fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0-m .chartlet-value-inverse{fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0-m .chartlet-axis-title{font-weight:600}#chartlet-8a8a959083eec2e0-m .chartlet-grid{stroke:var(--chartlet-grid);stroke-width:1}#chartlet-8a8a959083eec2e0-m .chartlet-zero{stroke:var(--chartlet-zero);stroke-width:1.5}#chartlet-8a8a959083eec2e0-m .chartlet-bar,#chartlet-8a8a959083eec2e0-m .chartlet-point{fill:var(--chartlet-accent)}#chartlet-8a8a959083eec2e0-m .chartlet-line{fill:none;stroke:var(--chartlet-accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}#chartlet-8a8a959083eec2e0-m .chartlet-background{fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0-m .chartlet-title-small{font-size:18px}.chartlet-root{--chartlet-node:#eef3fd;--chartlet-lane:#f7f9fc;--chartlet-lane-head:#eef1f6;--chartlet-shadow:rgba(16,24,40,.09);--chartlet-role-blue:#2563eb;--chartlet-role-blue-fill:#eef3fd;--chartlet-role-green:#15803d;--chartlet-role-green-fill:#ecfdf3;--chartlet-role-amber:#b45309;--chartlet-role-amber-fill:#fff7e8;--chartlet-role-teal:#0f766e;--chartlet-role-teal-fill:#e9faf7;--chartlet-role-violet:#6d28d9;--chartlet-role-violet-fill:#f3efff;--chartlet-role-gray:#667085;--chartlet-role-gray-fill:#f7f8fa;--chartlet-role-red:#b42318;--chartlet-role-red-fill:#fef3f2}.chartlet-root.chartlet-theme-dark{--chartlet-node:#1a2436;--chartlet-lane:#121925;--chartlet-lane-head:#18212f;--chartlet-shadow:rgba(0,0,0,.45);--chartlet-role-blue:#7ea6ff;--chartlet-role-blue-fill:#1a2436;--chartlet-role-green:#4ade80;--chartlet-role-green-fill:#132a1d;--chartlet-role-amber:#fbbf24;--chartlet-role-amber-fill:#2b2210;--chartlet-role-teal:#2dd4bf;--chartlet-role-teal-fill:#0f2a27;--chartlet-role-violet:#b69cff;--chartlet-role-violet-fill:#231c38;--chartlet-role-gray:#9aa7bd;--chartlet-role-gray-fill:#161d29;--chartlet-role-red:#f97066;--chartlet-role-red-fill:#2d1616}#chartlet-8a8a959083eec2e0-m .chartlet-role-blue{fill:var(--chartlet-role-blue-fill);stroke:var(--chartlet-role-blue)}#chartlet-8a8a959083eec2e0-m .chartlet-role-green{fill:var(--chartlet-role-green-fill);stroke:var(--chartlet-role-green)}#chartlet-8a8a959083eec2e0-m .chartlet-role-amber{fill:var(--chartlet-role-amber-fill);stroke:var(--chartlet-role-amber)}#chartlet-8a8a959083eec2e0-m .chartlet-role-teal{fill:var(--chartlet-role-teal-fill);stroke:var(--chartlet-role-teal)}#chartlet-8a8a959083eec2e0-m .chartlet-role-violet{fill:var(--chartlet-role-violet-fill);stroke:var(--chartlet-role-violet)}#chartlet-8a8a959083eec2e0-m .chartlet-role-gray{fill:var(--chartlet-role-gray-fill);stroke:var(--chartlet-role-gray)}#chartlet-8a8a959083eec2e0-m .chartlet-role-red{fill:var(--chartlet-role-red-fill);stroke:var(--chartlet-role-red)}#chartlet-8a8a959083eec2e0-m .chartlet-diagram-rim{fill:none;stroke:var(--chartlet-role-teal);stroke-width:1.5}#chartlet-8a8a959083eec2e0-m .chartlet-diagram-shadow{fill:var(--chartlet-shadow);stroke:none;rx:7px}#chartlet-8a8a959083eec2e0-m .chartlet-diagram-chip{fill:var(--chartlet-background);stroke:var(--chartlet-grid);stroke-width:1;rx:4px}#chartlet-8a8a959083eec2e0-m .chartlet-diagram-chip-text{font-size:12px;fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0-m .chartlet-diagram-badge{fill:var(--chartlet-accent);stroke:var(--chartlet-background);stroke-width:2}#chartlet-8a8a959083eec2e0-m .chartlet-diagram-badge-text{font-size:10px;font-weight:700;fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0-m .chartlet-flow-node{stroke-width:1.5;stroke-linejoin:round;rx:7px}#chartlet-8a8a959083eec2e0-m .chartlet-flow-start{stroke-width:2}#chartlet-8a8a959083eec2e0-m .chartlet-flow-end{stroke-width:3}#chartlet-8a8a959083eec2e0-m .chartlet-flow-external{stroke-dasharray:5 3}#chartlet-8a8a959083eec2e0-m .chartlet-flow-inner{stroke:var(--chartlet-role-blue);stroke-width:1}#chartlet-8a8a959083eec2e0-m .chartlet-flow-label{font-size:13px;font-weight:600;fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0-m .chartlet-flow-sublabel{font-size:11px;fill:var(--chartlet-muted)}#chartlet-8a8a959083eec2e0-m .chartlet-flow-edge{fill:none;stroke:var(--chartlet-zero);stroke-width:1.4;stroke-linejoin:round}#chartlet-8a8a959083eec2e0-m .chartlet-flow-dashed{stroke-dasharray:5 4}#chartlet-8a8a959083eec2e0-m .chartlet-flow-dotted{stroke-dasharray:1 4;stroke-linecap:round}#chartlet-8a8a959083eec2e0-m .chartlet-flow-main{stroke:var(--chartlet-accent);stroke-width:2.2}#chartlet-8a8a959083eec2e0-m .chartlet-flow-head{fill:var(--chartlet-zero);stroke:var(--chartlet-zero);stroke-width:1;stroke-linejoin:round}#chartlet-8a8a959083eec2e0-m .chartlet-flow-main-head{fill:var(--chartlet-accent);stroke:var(--chartlet-accent)}#chartlet-8a8a959083eec2e0-m .chartlet-flow-lane{fill:var(--chartlet-lane);stroke:var(--chartlet-grid);stroke-width:1}#chartlet-8a8a959083eec2e0-m .chartlet-flow-lane-alt{fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0-m .chartlet-flow-lane-head{fill:var(--chartlet-lane-head);stroke:none}#chartlet-8a8a959083eec2e0-m .chartlet-flow-lane-label{font-size:11px;font-weight:650;fill:var(--chartlet-muted);letter-spacing:.04em}#chartlet-8a8a959083eec2e0-m .chartlet-flow-group{fill:var(--chartlet-accent);fill-opacity:.04;stroke:var(--chartlet-zero);stroke-width:1;stroke-dasharray:4 3;rx:10px}#chartlet-8a8a959083eec2e0-m .chartlet-flow-group-label{font-size:11px;font-weight:600;fill:var(--chartlet-muted)}#chartlet-8a8a959083eec2e0-m .chartlet-layers-item{fill:var(--chartlet-background);stroke:var(--chartlet-grid);stroke-width:1;rx:5px}#chartlet-8a8a959083eec2e0-m .chartlet-layers-item-text{font-size:12px;fill:var(--chartlet-text)}#chartlet-8a8a959083eec2e0-m .chartlet-layers-note{font-size:12px;fill:var(--chartlet-muted)}#chartlet-8a8a959083eec2e0-m .chartlet-layers-leader{fill:none;stroke:var(--chartlet-zero);stroke-width:1;stroke-dasharray:1 3;stroke-linecap:round}#chartlet-8a8a959083eec2e0-m .chartlet-layers-odd{fill:var(--chartlet-background)}#chartlet-8a8a959083eec2e0-m .chartlet-layers-guide{stroke:var(--chartlet-zero);stroke-width:1;stroke-dasharray:2 4}#chartlet-8a8a959083eec2e0-m .chartlet-layers-shade-left{fill:var(--chartlet-text);fill-opacity:.1;stroke:none}#chartlet-8a8a959083eec2e0-m .chartlet-layers-shade-right{fill:var(--chartlet-text);fill-opacity:.2;stroke:none}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-critical .chartlet-flow-node{stroke:var(--chartlet-role-red);stroke-width:3}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-planned .chartlet-flow-node{stroke:var(--chartlet-role-violet);stroke-dasharray:6 3}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-deprecated .chartlet-flow-node{stroke:var(--chartlet-role-gray);stroke-dasharray:1.5 3}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-critical .chartlet-flow-edge{stroke:var(--chartlet-role-red);stroke-width:2.6}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-planned .chartlet-flow-edge{stroke:var(--chartlet-role-violet);stroke-dasharray:6 4}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-deprecated .chartlet-flow-edge{stroke:var(--chartlet-role-gray);stroke-dasharray:1 4;stroke-linecap:round}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-critical .chartlet-flow-head,#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-critical .chartlet-diagram-badge{fill:var(--chartlet-role-red);stroke:var(--chartlet-role-red)}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-planned .chartlet-flow-head,#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-planned .chartlet-diagram-badge{fill:var(--chartlet-role-violet);stroke:var(--chartlet-role-violet)}#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-deprecated .chartlet-flow-head,#chartlet-8a8a959083eec2e0-m .chartlet-flow-role-deprecated .chartlet-diagram-badge{fill:var(--chartlet-role-gray);stroke:var(--chartlet-role-gray)}#chartlet-8a8a959083eec2e0-m .chartlet-legend{font-size:12px;fill:var(--chartlet-muted)}</style><g class="chartlet-f chartlet-n-0 chartlet-f-0"><rect x="12" y="323.5" width="336" height="100" class="chartlet-diagram-shadow"/><rect x="12" y="321" width="336" height="100" class="chartlet-flow-node chartlet-role-blue"><title>Infrastructure: Rented from one provider; capacity is changed by the platform team only.</title></rect><text x="24" y="345" text-anchor="start" class="chartlet-flow-label">Infrastructure</text><text x="24" y="362" text-anchor="start" class="chartlet-flow-sublabel">Rented from one provider; capacity is changed by the</text><text x="24" y="377" text-anchor="start" class="chartlet-flow-sublabel">platform team only.</text><rect x="24" y="385" width="68.44" height="24" class="chartlet-layers-item"/><text x="58.22" y="401" text-anchor="middle" class="chartlet-layers-item-text">Compute</text><rect x="98.44" y="385" width="64.36" height="24" class="chartlet-layers-item"/><text x="130.62" y="401" text-anchor="middle" class="chartlet-layers-item-text">Storage</text><rect x="168.8" y="385" width="68.44" height="24" class="chartlet-layers-item"/><text x="203.02" y="401" text-anchor="middle" class="chartlet-layers-item-text">Network</text></g><g class="chartlet-f chartlet-n-1 chartlet-f-1"><rect x="12" y="215.5" width="336" height="100" class="chartlet-diagram-shadow"/><rect x="12" y="213" width="336" height="100" class="chartlet-flow-node chartlet-role-blue"><title>Runtime and data</title></rect><text x="24" y="237" text-anchor="start" class="chartlet-flow-label">Runtime and data</text><rect x="24" y="247" width="81.4" height="24" class="chartlet-layers-item"/><text x="64.7" y="263" text-anchor="middle" class="chartlet-layers-item-text">Containers</text><rect x="111.4" y="247" width="111.28" height="24" class="chartlet-layers-item"/><text x="167.04" y="263" text-anchor="middle" class="chartlet-layers-item-text">Message broker</text><rect x="24" y="277" width="132.76" height="24" class="chartlet-layers-item"/><text x="90.38" y="293" text-anchor="middle" class="chartlet-layers-item-text">Relational database</text><rect x="162.76" y="277" width="91.96" height="24" class="chartlet-layers-item"/><text x="208.74" y="293" text-anchor="middle" class="chartlet-layers-item-text">Object store</text></g><g class="chartlet-f chartlet-n-2 chartlet-f-2 chartlet-flow-role-critical"><rect x="12" y="107.5" width="336" height="100" class="chartlet-diagram-shadow"/><rect x="12" y="105" width="336" height="100" class="chartlet-flow-node chartlet-role-blue"><title>Domain services: One team per service; services talk only through published interfaces.</title></rect><text x="24" y="129" text-anchor="start" class="chartlet-flow-label">Domain services</text><text x="24" y="146" text-anchor="start" class="chartlet-flow-sublabel">One team per service; services talk only through</text><text x="24" y="161" text-anchor="start" class="chartlet-flow-sublabel">published interfaces.</text><rect x="24" y="169" width="57.64" height="24" class="chartlet-layers-item"/><text x="52.82" y="185" text-anchor="middle" class="chartlet-layers-item-text">Orders</text><rect x="87.64" y="169" width="61.24" height="24" class="chartlet-layers-item"/><text x="118.26" y="185" text-anchor="middle" class="chartlet-layers-item-text">Catalog</text><rect x="154.88" y="169" width="51.88" height="24" class="chartlet-layers-item"/><text x="180.82" y="185" text-anchor="middle" class="chartlet-layers-item-text">Billing</text><rect x="212.76" y="169" width="81.88" height="24" class="chartlet-layers-item"/><text x="253.7" y="185" text-anchor="middle" class="chartlet-layers-item-text">Customers</text><circle cx="336" cy="117" r="8" class="chartlet-diagram-badge"/><text x="336" y="120.5" text-anchor="middle" class="chartlet-diagram-badge-text">!</text></g><g class="chartlet-f chartlet-n-3 chartlet-f-3 chartlet-flow-role-planned"><rect x="12" y="14.5" width="336" height="85" class="chartlet-diagram-shadow"/><rect x="12" y="12" width="336" height="85" class="chartlet-flow-node chartlet-role-blue"><title>Experience: The partner API is planned for next year.</title></rect><text x="24" y="36" text-anchor="start" class="chartlet-flow-label">Experience</text><text x="24" y="53" text-anchor="start" class="chartlet-flow-sublabel">The partner API is planned for next year.</text><rect x="24" y="61" width="70.96" height="24" class="chartlet-layers-item"/><text x="59.48" y="77" text-anchor="middle" class="chartlet-layers-item-text">Web shop</text><rect x="100.96" y="61" width="78.16" height="24" class="chartlet-layers-item"/><text x="140.04" y="77" text-anchor="middle" class="chartlet-layers-item-text">Mobile app</text><rect x="185.12" y="61" width="87.88" height="24" class="chartlet-layers-item"/><text x="229.06" y="77" text-anchor="middle" class="chartlet-layers-item-text">Partner API</text><circle cx="336" cy="24" r="8" class="chartlet-diagram-badge"/><text x="336" y="27.5" text-anchor="middle" class="chartlet-diagram-badge-text">+</text></g><g class="chartlet-flow-role-critical"><circle cx="20" cy="451" r="8" class="chartlet-diagram-badge"/><text x="20" y="454.5" text-anchor="middle" class="chartlet-diagram-badge-text">!</text></g><text x="34" y="455" text-anchor="start" class="chartlet-legend">Critical</text><g class="chartlet-flow-role-planned"><circle cx="107.72" cy="451" r="8" class="chartlet-diagram-badge"/><text x="107.72" y="454.5" text-anchor="middle" class="chartlet-diagram-badge-text">+</text></g><text x="121.72" y="455" text-anchor="start" class="chartlet-legend">Planned</text></svg><label class="chartlet-hotspot" id="chartlet-8a8a959083eec2e0-m-hs-0" for="chartlet-8a8a959083eec2e0-focus-0"></label><label class="chartlet-hotspot" id="chartlet-8a8a959083eec2e0-m-hs-1" for="chartlet-8a8a959083eec2e0-focus-1"></label><label class="chartlet-hotspot" id="chartlet-8a8a959083eec2e0-m-hs-2" for="chartlet-8a8a959083eec2e0-focus-2"></label><label class="chartlet-hotspot" id="chartlet-8a8a959083eec2e0-m-hs-3" for="chartlet-8a8a959083eec2e0-focus-3"></label></div></div><p class="chartlet-source">Source: Platform team, architecture overview</p><details class="chartlet-data" data-viz-text><summary>Show chart data</summary><table><caption>Data for The layers of the platform, from the machine up</caption><thead><tr><th scope="col">Level</th><th scope="col">Layer</th><th scope="col">Items</th><th scope="col">Notes</th><th scope="col">Role</th></tr></thead><tbody><tr><th scope="row">1</th><td>Infrastructure</td><td>Compute, Storage, Network</td><td>Rented from one provider; capacity is changed by the platform team only.</td><td></td></tr><tr><th scope="row">2</th><td>Runtime and data</td><td>Containers, Message broker, Relational database, Object store</td><td></td><td></td></tr><tr><th scope="row">3</th><td>Domain services</td><td>Orders, Catalog, Billing, Customers</td><td>One team per service; services talk only through published interfaces.</td><td>critical</td></tr><tr><th scope="row">4</th><td>Experience</td><td>Web shop, Mobile app, Partner API</td><td>The partner API is planned for next year.</td><td>planned</td></tr></tbody></table></details></figure></div>