SLIDE 8: Section 2: Production Requirements and Architecture Boundaries
What We Will Cover:
#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .error-icon{fill:#552222;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .error-text{fill:#552222;stroke:#552222;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edge-thickness-normal{stroke-width:1px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .marker{fill:#666;stroke:#666;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .marker.cross{stroke:#666;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 svg{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 p{margin:0;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .label{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#000000;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .cluster-label text{fill:#333;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .cluster-label span{color:#333;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .cluster-label span p{background-color:transparent;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .label text,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 span{fill:#000000;color:#000000;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node rect,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node circle,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node ellipse,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node polygon,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node path{fill:#eee;stroke:#999;stroke-width:1px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .rough-node .label text,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node .label text,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .image-shape .label,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .icon-shape .label{text-anchor:middle;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .rough-node .label,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node .label,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .image-shape .label,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .icon-shape .label{text-align:center;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node.clickable{cursor:pointer;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .arrowheadPath{fill:#333333;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edgePath .path{stroke:#666;stroke-width:1px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .flowchart-link{stroke:#666;fill:none;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edgeLabel{background-color:white;text-align:center;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edgeLabel p{background-color:white;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .cluster text{fill:#333;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .cluster span{color:#333;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 rect.text{fill:none;stroke-width:0;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .icon-shape,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .image-shape{background-color:white;text-align:center;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .icon-shape p,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .image-shape p{background-color:white;padding:2px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .icon-shape .label rect,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 .node .neo-node{stroke:#999;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].node rect,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].cluster rect,#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].node polygon{stroke:url(#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].swimlane.cluster rect{filter:none;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].node path{stroke:url(#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7-gradient);stroke-width:1px;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].node circle{stroke:url(#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].node circle .state-start{fill:#000000;}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].icon-shape .icon{fill:url(#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 [data-look="neo"].icon-shape .icon-neo path{stroke:url(#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-3c451f7a-c261-49cf-99a8-c10e5a98e3e7 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}Production RequirementsService BoundariesSync vs AsyncStateful vs Stateless
Production Requirements:
Operational constraints, compliance, team ownership, evolution over time
Service Boundaries:
When to split, ownership models, API contracts, versioning
Sync vs Async:
When to use each, hybrid patterns, trade-offs
Stateful vs Stateless:
Why stateless is preferred, when state is unavoidable, session management
SLIDE 9: Production Requirements: Uptime
Availability: The Math That Matters
Availability Targets:
Reality Check:
Your system depends on:
- Database (99.99% SLA)
- Cache (99.99% SLA)
- Message Queue (99.9% SLA)
- External Payment API (99.9% SLA)
Combined availability = 0.9999 x 0.9999 x 0.999 x 0.999
= 0.9978
= 99.78% (approximately two hours downtime per month)
Key Insight:
Your availability is limited by your least reliable dependency.
SLIDE 9B: Production Requirements: Uptime (continued)
How This Changes Your Design:
Interview Answer:
“We will use a database and a cache.”
Production Answer:
“Our database has 99.99% SLA. Our cache has 99.99% SLA. Combined, that gives us 99.98%. To achieve our 99.99% target, we need:
- Fallback to database when cache fails
- Read replicas for database failover
- Circuit breakers to prevent cascade failures
- Graceful degradation when dependencies are slow”
Architecture Implication:
#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .error-icon{fill:#552222;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .error-text{fill:#552222;stroke:#552222;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edge-thickness-normal{stroke-width:1px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edge-thickness-thick{stroke-width:3.5px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edge-pattern-solid{stroke-dasharray:0;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .marker{fill:#666;stroke:#666;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .marker.cross{stroke:#666;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c svg{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c p{margin:0;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .label{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#000000;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .cluster-label text{fill:#333;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .cluster-label span{color:#333;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .cluster-label span p{background-color:transparent;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .label text,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c span{fill:#000000;color:#000000;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node rect,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node circle,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node ellipse,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node polygon,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node path{fill:#eee;stroke:#999;stroke-width:1px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .rough-node .label text,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node .label text,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .image-shape .label,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .icon-shape .label{text-anchor:middle;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .rough-node .label,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node .label,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .image-shape .label,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .icon-shape .label{text-align:center;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node.clickable{cursor:pointer;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .arrowheadPath{fill:#333333;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edgePath .path{stroke:#666;stroke-width:1px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .flowchart-link{stroke:#666;fill:none;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edgeLabel{background-color:white;text-align:center;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edgeLabel p{background-color:white;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .cluster text{fill:#333;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .cluster span{color:#333;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c rect.text{fill:none;stroke-width:0;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .icon-shape,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .image-shape{background-color:white;text-align:center;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .icon-shape p,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .image-shape p{background-color:white;padding:2px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .icon-shape .label rect,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c .node .neo-node{stroke:#999;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].node rect,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].cluster rect,#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].node polygon{stroke:url(#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].swimlane.cluster rect{filter:none;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].node path{stroke:url(#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c-gradient);stroke-width:1px;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].node circle{stroke:url(#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].node circle .state-start{fill:#000000;}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].icon-shape .icon{fill:url(#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c [data-look="neo"].icon-shape .icon-neo path{stroke:url(#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-26aba289-b78f-4ef0-858c-20c019b7fd2c :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}RequestCache Available?Read CacheRead DatabaseResponseYesNo
Every dependency needs a fallback path.
SLIDE 10: Production Requirements: Latency
Latency Budgets: How to Allocate Time
Example: 500ms P99 Budget for API Response
Key Insight:
If your database takes 200ms, you have already blown your budget. Latency budgets force you to identify slow components early.
SLIDE 10B: Production Requirements: Latency (continued)
Latency Distribution: P50 vs P95 vs P99
P50 (median): 50% of requests are faster than this
P95: 95% of requests are faster than this
P99: 99% of requests are faster than this
P99.9: 99.9% of requests are faster than this
Why P99 Matters More Than Average:
Scenario: 1 million requests per day
P99 = 500ms means:
- 10,000 requests per day take longer than 500ms
- That is 10,000 frustrated users
If those slow requests are from your biggest customers,
you have a serious problem.
Production Practice:
Always measure P50, P95, P99. Set alerts on P99, not average.
SLIDE 11: Production Requirements: Cost
Cost Constraints Shape Architecture
Typical Monthly Costs at Scale:
The Hidden Cost: Bandwidth
Egress (data leaving your cloud) is often the largest surprise cost. At Instagram scale, CDN egress alone costs $50M+ per month.
SLIDE 11B: Production Requirements: Cost (continued)
How Cost Changes Architecture Decisions:
Decision: Compute Images on Upload vs On Request
Production Answer:
“We will compute thumbnails on upload because storage is cheap ($23/TB) but compute and latency are expensive. We will generate 3 sizes and cache them on CDN. The tradeoff is higher storage cost but consistent low latency.”
Key Insight:
Every architecture decision has a cost implication. Senior engineers can estimate costs and justify tradeoffs.
SLIDE 12: Production Requirements: Team and Ownership
Conway’s Law in Practice
Conway’s Law:
“Organizations design systems that mirror their communication structure.”
Implication:
Your architecture will reflect your team structure whether you plan for it or not.
Example:
Anti-Pattern:
5 engineers trying to maintain 20 microservices. The operational overhead will crush them.
Production Rule:
One team should own no more than 2-3 services. If you have more services than engineers, you have a problem.
SLIDE 12B: Production Requirements: Team and Ownership (continued)
Ownership Model:
#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .error-icon{fill:#552222;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .error-text{fill:#552222;stroke:#552222;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edge-thickness-normal{stroke-width:1px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .marker{fill:#666;stroke:#666;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .marker.cross{stroke:#666;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 svg{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 p{margin:0;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .label{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#000000;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .cluster-label text{fill:#333;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .cluster-label span{color:#333;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .cluster-label span p{background-color:transparent;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .label text,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 span{fill:#000000;color:#000000;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node rect,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node circle,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node ellipse,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node polygon,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node path{fill:#eee;stroke:#999;stroke-width:1px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .rough-node .label text,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node .label text,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .image-shape .label,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .icon-shape .label{text-anchor:middle;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .rough-node .label,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node .label,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .image-shape .label,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .icon-shape .label{text-align:center;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node.clickable{cursor:pointer;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .arrowheadPath{fill:#333333;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edgePath .path{stroke:#666;stroke-width:1px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .flowchart-link{stroke:#666;fill:none;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edgeLabel{background-color:white;text-align:center;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edgeLabel p{background-color:white;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .cluster text{fill:#333;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .cluster span{color:#333;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 rect.text{fill:none;stroke-width:0;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .icon-shape,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .image-shape{background-color:white;text-align:center;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .icon-shape p,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .image-shape p{background-color:white;padding:2px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .icon-shape .label rect,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 .node .neo-node{stroke:#999;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].node rect,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].cluster rect,#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].node polygon{stroke:url(#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].swimlane.cluster rect{filter:none;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].node path{stroke:url(#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38-gradient);stroke-width:1px;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].node circle{stroke:url(#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].node circle .state-start{fill:#000000;}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].icon-shape .icon{fill:url(#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 [data-look="neo"].icon-shape .icon-neo path{stroke:url(#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-e488328e-3b09-4788-b563-aeab0fa5bb38 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}ServiceSingle Team OwnsCodeOncallSLARoadmap
What Ownership Means:
Anti-Pattern: Shared Ownership
“Everyone owns it” means “no one owns it.” When an incident happens at 3am, who gets paged? If the answer is unclear, you do not have ownership.
SLIDE 13: Production Requirements: Compliance
Compliance Constraints on Architecture
Common Compliance Requirements:
Example: GDPR Data Residency
#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .error-icon{fill:#552222;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .error-text{fill:#552222;stroke:#552222;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edge-thickness-normal{stroke-width:1px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edge-thickness-thick{stroke-width:3.5px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edge-pattern-solid{stroke-dasharray:0;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .marker{fill:#666;stroke:#666;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .marker.cross{stroke:#666;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d svg{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d p{margin:0;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .label{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#000000;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .cluster-label text{fill:#333;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .cluster-label span{color:#333;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .cluster-label span p{background-color:transparent;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .label text,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d span{fill:#000000;color:#000000;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node rect,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node circle,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node ellipse,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node polygon,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node path{fill:#eee;stroke:#999;stroke-width:1px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .rough-node .label text,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node .label text,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .image-shape .label,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .icon-shape .label{text-anchor:middle;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .rough-node .label,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node .label,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .image-shape .label,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .icon-shape .label{text-align:center;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node.clickable{cursor:pointer;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .arrowheadPath{fill:#333333;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edgePath .path{stroke:#666;stroke-width:1px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .flowchart-link{stroke:#666;fill:none;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edgeLabel{background-color:white;text-align:center;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edgeLabel p{background-color:white;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .cluster text{fill:#333;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .cluster span{color:#333;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d rect.text{fill:none;stroke-width:0;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .icon-shape,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .image-shape{background-color:white;text-align:center;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .icon-shape p,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .image-shape p{background-color:white;padding:2px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .icon-shape .label rect,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d .node .neo-node{stroke:#999;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].node rect,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].cluster rect,#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].node polygon{stroke:url(#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].swimlane.cluster rect{filter:none;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].node path{stroke:url(#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d-gradient);stroke-width:1px;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].node circle{stroke:url(#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].node circle .state-start{fill:#000000;}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].icon-shape .icon{fill:url(#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d [data-look="neo"].icon-shape .icon-neo path{stroke:url(#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-87ab3291-6c9b-42f7-ae7b-6b6033382d0d :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}EU UserEU RegionUS UserUS RegionEU DatabaseUS Database
Cannot route EU user data through US servers, even temporarily.
SLIDE 13B: Production Requirements: Compliance (continued)
How Compliance Changes Design:
Interview Answer:
“User data is stored in our database with replication.”
Production Answer:
“User data is stored in regionally partitioned databases. EU users are routed to eu-west-1, US users to us-east-1. Cross-region replication excludes PII fields. We maintain deletion capability with soft-delete plus 30-day hard-delete job. All access is logged to immutable audit storage for SOC2 compliance.”
Compliance Checklist:
SLIDE 14: Production Requirements: Evolution Over Time
Day 1 vs Day 100 vs Day 1000
What Changes:
Key Insight:
The architecture that works on Day 1 will not work on Day 1000. Design for the next 10x, not the next 100x.
SLIDE 14B: Production Requirements: Evolution Over Time (continued)
When to Re-Architect:
#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .error-icon{fill:#552222;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .error-text{fill:#552222;stroke:#552222;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edge-thickness-normal{stroke-width:1px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .marker{fill:#666;stroke:#666;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .marker.cross{stroke:#666;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 svg{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 p{margin:0;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .label{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:#000000;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .cluster-label text{fill:#333;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .cluster-label span{color:#333;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .cluster-label span p{background-color:transparent;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .label text,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 span{fill:#000000;color:#000000;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node rect,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node circle,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node ellipse,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node polygon,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node path{fill:#eee;stroke:#999;stroke-width:1px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .rough-node .label text,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node .label text,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .image-shape .label,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .icon-shape .label{text-anchor:middle;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .rough-node .label,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node .label,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .image-shape .label,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .icon-shape .label{text-align:center;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node.clickable{cursor:pointer;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .arrowheadPath{fill:#333333;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edgePath .path{stroke:#666;stroke-width:1px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .flowchart-link{stroke:#666;fill:none;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edgeLabel{background-color:white;text-align:center;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edgeLabel p{background-color:white;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .cluster text{fill:#333;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .cluster span{color:#333;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji","Noto Sans Arabic","Noto Sans Hebrew",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 rect.text{fill:none;stroke-width:0;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .icon-shape,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .image-shape{background-color:white;text-align:center;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .icon-shape p,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .image-shape p{background-color:white;padding:2px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .icon-shape .label rect,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 .node .neo-node{stroke:#999;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].node rect,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].cluster rect,#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].node polygon{stroke:url(#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].swimlane.cluster rect{filter:none;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].node path{stroke:url(#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743-gradient);stroke-width:1px;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].node circle{stroke:url(#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].node circle .state-start{fill:#000000;}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].icon-shape .icon{fill:url(#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 [data-look="neo"].icon-shape .icon-neo path{stroke:url(#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#mermaid-a44995a5-f5ba-4e5b-a202-cda90343b743 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}Pain SignalEvaluateOptimizeRe-architectContinueMigration PlanMinorMajor
Pain Signals That Indicate Re-Architecture:
Production Practice:
Do not re-architect based on predictions. Re-architect based on observed pain.