{
  "id": "reliability-block-single-queue",
  "schemaVersion": 2,
  "title": {
    "ja": "並列化した入口とワーカー — 単一キューが全経路を止める",
    "en": "Redundant Gateways and Workers — One Queue Stops Every Path"
  },
  "summary": {
    "ja": "直列のキューと並列の入口・ワーカー群を故障経路図で示す。二重化した末端だけでは、共有する単一キューの停止に耐えない",
    "en": "A reliability block diagram with serial queueing and parallel gateway and worker groups. Duplicated endpoints cannot tolerate failure of the one shared queue."
  },
  "capturedAt": "2026-09-25",
  "categories": [
    "presentation"
  ],
  "tags": [
    "data-viz",
    "minimal"
  ],
  "useCases": [
    "architecture",
    "testing"
  ],
  "format": "slide-16x9",
  "density": "medium",
  "layout": {
    "kind": "flow",
    "canvas": {
      "w": 1920,
      "h": 1080
    },
    "margin": {
      "top": 82,
      "right": 120,
      "bottom": 82,
      "left": 120
    }
  },
  "type": {
    "title": {
      "size": 44,
      "weight": 700,
      "tracking": "0.01em"
    },
    "subtitle": {
      "size": 22,
      "weight": 400
    },
    "groupLabel": {
      "size": 20,
      "weight": 500
    },
    "nodeLabel": {
      "size": 23,
      "weight": 700
    },
    "singleLabel": {
      "size": 24,
      "weight": 700
    },
    "singleMeta": {
      "size": 20,
      "weight": 500
    },
    "edgeLabel": {
      "size": 20,
      "weight": 500
    },
    "legendTitle": {
      "size": 22,
      "weight": 700
    },
    "legendBody": {
      "size": 20,
      "weight": 400
    },
    "conclusion": {
      "size": 26,
      "weight": 500
    }
  },
  "colors": {
    "ground": "#FFFFFF",
    "surface": "#F4F6F9",
    "ink": "#131820",
    "muted": "#667183",
    "accent": "#1F5FA8",
    "rule": "#DBE1E9",
    "series": [
      "#2F6FB5",
      "#A85A2E",
      "#1C8C79"
    ]
  },
  "rules": [
    {
      "ja": "直列の要素は処理経路のすべてで必要である。1つが停止するとその経路は完了しない",
      "en": "Every element in a series path is required; failure of one prevents that path from completing."
    },
    {
      "ja": "並列の要素はどれか1系統で役割を果たす構成として読む。共有する故障要因や切替不良は別途検証する",
      "en": "Read each parallel group as able to serve through any one path. Shared failure causes and failover behavior require separate analysis."
    },
    {
      "ja": "複数の経路が共有する単一キューを強調する。後段の台数だけを数えると端から端の可用性を見誤る",
      "en": "Emphasize the single queue shared by every route. Counting only downstream replicas overstates end-to-end availability."
    },
    {
      "ja": "架空の構成例であり、稼働率や独立故障の数値を表していない",
      "en": "This is a fictional topology; it does not claim availability or independent-failure probabilities."
    }
  ],
  "cover": "https://design-vault.pages.dev/_astro/cover.zQuvTq4b.png",
  "assets": [],
  "shortlist": false,
  "status": "published",
  "relations": {
    "similar": []
  },
  "license": "Original",
  "publishedAt": null,
  "reproduction": {
    "spec": {
      "format": "slide-16x9",
      "density": "medium",
      "layout": {
        "kind": "flow",
        "canvas": {
          "w": 1920,
          "h": 1080
        },
        "margin": {
          "top": 82,
          "right": 120,
          "bottom": 82,
          "left": 120
        }
      },
      "type": {
        "title": {
          "size": 44,
          "weight": 700,
          "tracking": "0.01em"
        },
        "subtitle": {
          "size": 22,
          "weight": 400
        },
        "groupLabel": {
          "size": 20,
          "weight": 500
        },
        "nodeLabel": {
          "size": 23,
          "weight": 700
        },
        "singleLabel": {
          "size": 24,
          "weight": 700
        },
        "singleMeta": {
          "size": 20,
          "weight": 500
        },
        "edgeLabel": {
          "size": 20,
          "weight": 500
        },
        "legendTitle": {
          "size": 22,
          "weight": 700
        },
        "legendBody": {
          "size": 20,
          "weight": 400
        },
        "conclusion": {
          "size": 26,
          "weight": 500
        }
      },
      "colors": {
        "ground": "#FFFFFF",
        "surface": "#F4F6F9",
        "ink": "#131820",
        "muted": "#667183",
        "accent": "#1F5FA8",
        "rule": "#DBE1E9",
        "series": [
          "#2F6FB5",
          "#A85A2E",
          "#1C8C79"
        ]
      },
      "rules": [
        "Every element in a series path is required; failure of one prevents that path from completing.",
        "Read each parallel group as able to serve through any one path. Shared failure causes and failover behavior require separate analysis.",
        "Emphasize the single queue shared by every route. Counting only downstream replicas overstates end-to-end availability.",
        "This is a fictional topology; it does not claim availability or independent-failure probabilities."
      ]
    },
    "prompt": {
      "ja": "以下の仕様でスライドを 1 枚作ってください。\n\n- 版面 1920 × 1080\n- 余白 上 82 右 120 下 82 左 120\n\n## 文字（版面 1920px に対する px）\ntitle  44px / 700 / 字間 0.01em\nsubtitle  22px / 400\ngroupLabel  20px / 500\nnodeLabel  23px / 700\nsingleLabel  24px / 700\nsingleMeta  20px / 500\nedgeLabel  20px / 500\nlegendTitle  22px / 700\nlegendBody  20px / 400\nconclusion  26px / 500\n\n## 配色\n地 #FFFFFF / 面 #F4F6F9 / 文字 #131820 / 補助 #667183 / 強調 #1F5FA8 / 罫 #DBE1E9 / #2F6FB5 / #A85A2E / #1C8C79\n\n## 外すと崩れる点\n- 直列の要素は処理経路のすべてで必要である。1つが停止するとその経路は完了しない\n- 並列の要素はどれか1系統で役割を果たす構成として読む。共有する故障要因や切替不良は別途検証する\n- 複数の経路が共有する単一キューを強調する。後段の台数だけを数えると端から端の可用性を見誤る\n- 架空の構成例であり、稼働率や独立故障の数値を表していない\n\n内容は［ここに自分の内容を書く］に置き換えてください。寸法と配色はそのまま守ってください。\n正確に再現する場合は、この HTML をそのまま使ってください: https://design-vault.pages.dev/designs/reliability-block-single-queue/pattern.html",
      "en": "Produce one slide to the following specification.\n\n- Canvas 1920 × 1080\n- Margin top 82 right 120 bottom 82 left 120\n\n## Type (px against a 1920px canvas)\ntitle  44px / 700 / tracking 0.01em\nsubtitle  22px / 400\ngroupLabel  20px / 500\nnodeLabel  23px / 700\nsingleLabel  24px / 700\nsingleMeta  20px / 500\nedgeLabel  20px / 500\nlegendTitle  22px / 700\nlegendBody  20px / 400\nconclusion  26px / 500\n\n## Colour\nGround #FFFFFF / Surface #F4F6F9 / Ink #131820 / Muted #667183 / Accent #1F5FA8 / Rule #DBE1E9 / #2F6FB5 / #A85A2E / #1C8C79\n\n## Constraints — dropping these breaks it\n- Every element in a series path is required; failure of one prevents that path from completing.\n- Read each parallel group as able to serve through any one path. Shared failure causes and failover behavior require separate analysis.\n- Emphasize the single queue shared by every route. Counting only downstream replicas overstates end-to-end availability.\n- This is a fictional topology; it does not claim availability or independent-failure probabilities.\n\nReplace the content with [your content]. Keep the measurements and colours as given.\nFor an exact reproduction, use the verbatim HTML at https://design-vault.pages.dev/designs/reliability-block-single-queue/pattern.html."
    },
    "code": {
      "html": "<!doctype html>\n<meta charset=\"utf-8\">\n<title>並列化した入口とワーカー — 単一キューが全経路を止める</title>\n<meta name=\"dv-font\" content=\"Zen Kaku Gothic New:400;500;700\">\n<link rel=\"stylesheet\" href=\"./font.css\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1920\" height=\"1080\" viewBox=\"0 0 1920 1080\" data-artboard=\"true\">\n  <style>\n    :root {\n      --ground: #FFFFFF; --surface: #F4F6F9; --ink: #131820;\n      --muted: #667183; --accent: #1F5FA8; --rule: #DBE1E9;\n      --series-1: #2F6FB5; --series-2: #A85A2E; --series-3: #1C8C79;\n\n  --plot-color-1: #FBF3EF;\n}\n    svg { font-family: \"Zen Kaku Gothic New\", \"Hiragino Sans\", \"Yu Gothic\", sans-serif; }\n    .ground { fill: var(--ground); }\n    .ink { fill: var(--ink); }\n    .muted { fill: var(--muted); }\n    .accent { fill: var(--accent); }\n    .rule { stroke: var(--rule); }\n    .title { font-size: 44px; font-weight: 700; letter-spacing: .01em; }\n    .subtitle { font-size: 22px; font-weight: 400; }\n    .group-label { font-size: 20px; font-weight: 500; }\n    .node-label { font-size: 23px; font-weight: 700; }\n    .node-meta { font-size: 20px; font-weight: 400; }\n    .single-label { font-size: 24px; font-weight: 700; }\n    .single-meta { font-size: 20px; font-weight: 500; }\n    .edge-label { font-size: 20px; font-weight: 500; }\n    .legend-title { font-size: 22px; font-weight: 700; }\n    .legend-body { font-size: 20px; font-weight: 400; }\n    .conclusion { font-size: 26px; font-weight: 500; }\n    .parallel-frame { fill: var(--ground); stroke: var(--rule); stroke-width: 2; }\n    .parallel-node { fill: var(--surface); stroke: var(--series-1); stroke-width: 2; }\n    .critical-node { fill: var(--plot-color-1); stroke: var(--series-2); stroke-width: 3; }\n    .edge { fill: none; stroke: var(--muted); stroke-width: 3; }\n    .arrow { fill: var(--muted); }\n  </style>\n  <defs>\n    <marker id=\"flow-arrowhead-main\" markerWidth=\"12\" markerHeight=\"12\" refX=\"9\" refY=\"6\" orient=\"auto\" markerUnits=\"userSpaceOnUse\">\n      <path class=\"arrow\" d=\"M1 1 L10 6 L1 11 z\"/>\n    </marker>\n  </defs>\n  <rect class=\"ground\" x=\"0\" y=\"0\" width=\"1920\" height=\"1080\"/>\n  <g transform=\"translate(120 82)\" data-content=\"true\">\n    <rect x=\"0\" y=\"0\" width=\"1680\" height=\"916\" fill=\"transparent\"/>\n    <text class=\"title ink\" data-type=\"title\" x=\"0\" y=\"56\">並列化した入口とワーカー — 単一キューが全経路を止める</text>\n    <text class=\"subtitle muted\" data-type=\"subtitle\" x=\"0\" y=\"106\">架空のイベント処理基盤 / 直列の工程はすべて必要、並列の組はどれか1系統で通過</text>\n    <line class=\"rule\" x1=\"0\" y1=\"144\" x2=\"1680\" y2=\"144\" stroke-width=\"2\"/>\n\n    <text class=\"group-label muted\" data-type=\"groupLabel\" x=\"342\" y=\"225\" text-anchor=\"middle\">入口プール · いずれか1台</text>\n    <text class=\"group-label muted\" x=\"1066\" y=\"225\" text-anchor=\"middle\">ワーカープール · いずれか1台</text>\n    <text class=\"group-label muted\" x=\"0\" y=\"505\">イベント</text>\n\n    <!-- Event enters through either gateway. The bus makes the parallel choice explicit. -->\n    <path class=\"edge\" d=\"M90 515 H162 M162 424 V606 M162 424 H220 M162 606 H220\"/>\n    <path class=\"edge\" d=\"M162 424 H220\" marker-end=\"url(#flow-arrowhead-main)\"/>\n    <path class=\"edge\" d=\"M162 606 H220\" marker-end=\"url(#flow-arrowhead-main)\"/>\n    <rect class=\"parallel-frame\" x=\"220\" y=\"354\" width=\"244\" height=\"330\" rx=\"14\"/>\n    <rect class=\"parallel-node\" x=\"247\" y=\"386\" width=\"190\" height=\"76\" rx=\"10\"/>\n    <rect class=\"parallel-node\" x=\"247\" y=\"568\" width=\"190\" height=\"76\" rx=\"10\"/>\n    <text class=\"node-label ink\" data-type=\"nodeLabel\" x=\"342\" y=\"432\" text-anchor=\"middle\">入口 A</text>\n    <text class=\"node-label ink\" x=\"342\" y=\"614\" text-anchor=\"middle\">入口 B</text>\n    <text class=\"edge-label accent\" data-type=\"edgeLabel\" x=\"342\" y=\"500\" text-anchor=\"middle\">OR</text>\n\n    <!-- Both entry nodes converge on the same single queue. -->\n    <path class=\"edge\" d=\"M437 424 H490 M437 606 H490 M490 424 V606 M490 515 H558\"/>\n    <path class=\"edge\" d=\"M490 515 H558\" marker-end=\"url(#flow-arrowhead-main)\"/>\n    <rect class=\"critical-node\" x=\"558\" y=\"465\" width=\"200\" height=\"100\" rx=\"12\"/>\n    <text class=\"single-label ink\" data-type=\"singleLabel\" x=\"658\" y=\"510\" text-anchor=\"middle\">キュー</text>\n    <text class=\"single-meta\" data-type=\"singleMeta\" x=\"658\" y=\"542\" text-anchor=\"middle\" fill=\"var(--series-2)\">1系統 · 単一障害点</text>\n\n    <!-- A queued event can be processed by either stateless worker. -->\n    <path class=\"edge\" d=\"M758 515 H808 M808 424 V606 M808 424 H858 M808 606 H858\"/>\n    <path class=\"edge\" d=\"M808 424 H858\" marker-end=\"url(#flow-arrowhead-main)\"/>\n    <path class=\"edge\" d=\"M808 606 H858\" marker-end=\"url(#flow-arrowhead-main)\"/>\n    <rect class=\"parallel-frame\" x=\"858\" y=\"354\" width=\"244\" height=\"330\" rx=\"14\"/>\n    <rect class=\"parallel-node\" x=\"885\" y=\"386\" width=\"190\" height=\"76\" rx=\"10\"/>\n    <rect class=\"parallel-node\" x=\"885\" y=\"568\" width=\"190\" height=\"76\" rx=\"10\"/>\n    <text class=\"node-label ink\" x=\"980\" y=\"432\" text-anchor=\"middle\">ワーカー A</text>\n    <text class=\"node-label ink\" x=\"980\" y=\"614\" text-anchor=\"middle\">ワーカー B</text>\n    <text class=\"edge-label accent\" x=\"980\" y=\"500\" text-anchor=\"middle\">OR</text>\n\n    <!-- Either worker can complete the example job. -->\n    <path class=\"edge\" d=\"M1075 424 H1140 M1075 606 H1140 M1140 424 V606 M1140 515 H1210\"/>\n    <path class=\"edge\" d=\"M1140 515 H1210\" marker-end=\"url(#flow-arrowhead-main)\"/>\n    <rect class=\"parallel-frame\" x=\"1210\" y=\"354\" width=\"244\" height=\"330\" rx=\"14\"/>\n    <rect class=\"parallel-node\" x=\"1237\" y=\"386\" width=\"190\" height=\"76\" rx=\"10\"/>\n    <rect class=\"parallel-node\" x=\"1237\" y=\"568\" width=\"190\" height=\"76\" rx=\"10\"/>\n    <text class=\"node-label ink\" x=\"1332\" y=\"432\" text-anchor=\"middle\">結果先 A</text>\n    <text class=\"node-label ink\" x=\"1332\" y=\"614\" text-anchor=\"middle\">結果先 B</text>\n    <text class=\"edge-label accent\" x=\"1332\" y=\"500\" text-anchor=\"middle\">OR</text>\n    <path class=\"edge\" d=\"M1427 424 H1468 M1427 606 H1468 M1468 424 V606 M1468 515 H1530\"/>\n    <path class=\"edge\" d=\"M1468 515 H1530\" marker-end=\"url(#flow-arrowhead-main)\"/>\n    <rect x=\"1530\" y=\"478\" width=\"132\" height=\"74\" rx=\"37\" fill=\"var(--accent)\"/>\n    <text x=\"1596\" y=\"524\" text-anchor=\"middle\" fill=\"var(--ground)\" font-size=\"22\" font-weight=\"700\">応答</text>\n\n    <line class=\"rule\" x1=\"0\" y1=\"754\" x2=\"1680\" y2=\"754\" stroke-width=\"2\"/>\n    <text class=\"legend-title ink\" data-type=\"legendTitle\" x=\"0\" y=\"802\">読み方</text>\n    <rect class=\"critical-node\" x=\"122\" y=\"778\" width=\"26\" height=\"26\" rx=\"5\"/>\n    <text class=\"legend-body ink\" data-type=\"legendBody\" x=\"164\" y=\"800\">直列の1ブロックが停止すると、後段へ進めない</text>\n    <rect class=\"parallel-node\" x=\"752\" y=\"778\" width=\"26\" height=\"26\" rx=\"5\"/>\n    <text class=\"legend-body ink\" x=\"794\" y=\"800\">並列の組はどれか1系統で処理を続けられる想定</text>\n    <text class=\"conclusion ink\" data-type=\"conclusion\" x=\"0\" y=\"877\">入口とワーカーを二重化しても、共有キューが止まればイベント処理は止まる。</text>\n  </g>\n</svg>\n",
      "url": "https://design-vault.pages.dev/designs/reliability-block-single-queue/pattern.html",
      "fonts": [
        "https://design-vault.pages.dev/designs/reliability-block-single-queue/font.css",
        "https://design-vault.pages.dev/designs/reliability-block-single-queue/font-0.woff2",
        "https://design-vault.pages.dev/designs/reliability-block-single-queue/font-1.woff2",
        "https://design-vault.pages.dev/designs/reliability-block-single-queue/font-2.woff2"
      ]
    }
  },
  "urls": {
    "ja": "https://design-vault.pages.dev/designs/reliability-block-single-queue",
    "en": "https://design-vault.pages.dev/en/designs/reliability-block-single-queue"
  },
  "notesMarkdown": "この図はイベント処理の「成功経路」をブロックで表したもの。入口・ワーカー・結果先はそれぞれ\nどれか1台で処理できる並列群だが、すべての要求は同じキューを通る。\n\nそのため入口やワーカーを増やしても、キューが止まれば後段へ進めない。現実の可用性を計算する\nには共通電源・ネットワーク・ソフトウェア障害や切替動作も確認する必要があり、この図は構造上の\n単一障害点を読むための架空例に限る。"
}