<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>第2部：アーキテクチャの構成要素 on Designing Network Automation at Scale</title><link>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/</link><description>Recent content in 第2部：アーキテクチャの構成要素 on Designing Network Automation at Scale</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Sat, 10 Oct 2026 07:59:09 +0200</lastBuildDate><atom:link href="https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/index.xml" rel="self" type="application/rss+xml"/><item><title>04 - Source of Truth</title><link>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/04-source-of-truth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/04-source-of-truth/</guid><description>&lt;h1 id="4-source-of-truth">4. Source of Truth&lt;a class="anchor" href="#4-source-of-truth">#&lt;/a>&lt;/h1>
&lt;p>新しいサービスを週末までに本番稼働させる必要があった。変更内容は単純だった。新しいVLAN、新しいサブネット、ファイアウォールルールの更新、エッジルーターへのBGPコミュニティの追加。担当のネットワークエンジニアは何をすべきかを正確に把握していた。ところが実際には、5つのシステムにまたがる4日間の調整作業が待っていた。サブネットを予約するIPAMツール、サービスを登録するCMDB、新しいポリシーを適用するファイアウォール管理プラットフォーム、BGPコミュニティを設定するルーター構成システム、そして新しいしきい値を追加する監視プラットフォーム。各システムはそれぞれ独自のインターフェース、独自のデータモデル、独自の承認ワークフローを持っていた。共通の参照点がなかったため、エンジニアは手動でコンテキストを持ち回るしかなかった。あるシステムから値をコピーして次のシステムに貼り付け、途中でデータが変わっていないことを祈りながら。&lt;/p>
&lt;p>6カ月後、そのサービスは廃止された。VLANは削除され、サブネットも解放された。しかしファイアウォールルールはそのまま残った。そのルールがそのサービスに紐付いていたことを誰も覚えていなかった。BGPコミュニティは2台のエッジルーターに残り続けた。監視のしきい値は低優先度のアラートを出し続けたが、NOCはいつしかそれを無視することを学んでいた。時間とともに、ネットワークには孤立した設定が積み重なっていった。完全に追跡されず、完全に削除されず、共通の意図の記録に紐付けられることもなかった変更の残骸が。&lt;/p>
&lt;p>これが、Source of Truth なしにネットワークを運用するということの実態だ。一度の劇的な障害ではなく、じわじわと積み重なる不整合。すべての変更が複数の分断されたシステムの更新を必要とし、何が関連しているかを追い続けるものが何もない状態。&lt;/p>
&lt;p>すべての自動化システムは一つの問いから始まる。&lt;strong>実際に何をしようとしているのか?&lt;/strong> ファイアウォールルールを展開するとき、IPアドレスを追加するとき、VLANを設定するとき、あなたは何らかのインテントの表現に基づいて行動している。その表現こそが Source of Truth だ。つまり、&lt;em>何が展開されるべきか&lt;/em>を示す、唯一の信頼できるバージョン。&lt;/p>
&lt;blockquote class='book-hint note'>
&lt;p>「Source of Truth」と「Intent」は本書では同じ意味で使用している。概念としてまったく同一だ。&lt;/p>&lt;/blockquote>&lt;p>信頼できる Source of Truth なしでは、ネットワーク運用は属人的な知識の塊になってしまう。エンジニアは何が展開されているかで意見が食い違う。スプレッドシートは実際に動いているものと矛盾する。2つの異なる自動化システムが同じデバイスに対して競合する変更を加える。何かが壊れると、考古学者のような作業が始まる。「なぜこう設定されているのか? 誰が承認したのか? いつ変わったのか?」&lt;/p>
&lt;p>本章では、デバイスが数十台であれ数十万台であれ機能し、データを必要とするすべての人(人間、自動化、他のシステム)に提供し、データの正確性と信頼性を維持し、複数のソースからのデータ収集の複雑さを処理できる Source of Truth の構築方法を解説する。6つの構成要素を取り上げる。Modeling、Consumption、Enforcement、Versioning、Aggregation、Design-Driven だ。これらが組み合わさることで、ネットワーク自動化の堅固な基盤が生まれる。既存のネットワークをこのシステムに取り込む際の実践的な課題にも触れ、実際に利用可能なソリューションも紹介する。&lt;/p>
&lt;h2 id="41-基本原則">4.1. 基本原則&lt;a class="anchor" href="#41-%e5%9f%ba%e6%9c%ac%e5%8e%9f%e5%89%87">#&lt;/a>&lt;/h2>
&lt;p>Source of Truth は3つのことを行う。インテントをどう表現するかの&lt;em>方法&lt;/em>を定義し、そのインテントが&lt;em>どこに&lt;/em>存在するかを定め、それを&lt;em>長期にわたって信頼できる状態に保つ&lt;/em>方法を確立する。これがなければ、他の構成要素は共通の参照点を持たない単独ツールの集まりになってしまう。これがあれば、それらは連携して機能する。&lt;/p>
&lt;h3 id="411-ゴール">4.1.1. ゴール&lt;a class="anchor" href="#411-%e3%82%b4%e3%83%bc%e3%83%ab">#&lt;/a>&lt;/h3>
&lt;p>Source of Truth が果たすべき6つの役割がある。&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>必要なすべてを把握する&lt;/strong>。ネットワークの全体像を保存する。設定、資産、トポロジー、サービス、IPアドレス、回線、デバイス仕様、認証情報、メンテナンスウィンドウ、コンプライアンス要件、所有者情報。現在稼働しているものだけでなく、計画中のものと廃止予定のものも含める。このデータがスプレッドシートや担当者の頭の中ではなく一か所に集まって初めて、自動化システムは賢い判断を下すために必要なコンテキストを手にできる。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>オペレーターがビジネスの言葉で考えられるようにする&lt;/strong>。スタッフはビジネスレベルで作業すべきだ(「新しいブランチを追加する」や「MPLSサービスをセットアップする」など)。&lt;a href="https://designingnetworkautomation.com/ja/glossary/#cli" class="glossary-term" title="A text-based interface for interacting with systems by typing commands, commonly used for network device configuration and troubleshooting.">Command Line Interface (CLI)&lt;/a> レベルで作業するのではなく。裏側で、システムが実際のデバイス固有の設定を導き出す。こうすることで、人は低レベルの詳細ではなく、達成しようとしていることに集中できる。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>人とシステムが簡単にデータにアクセスできるようにする&lt;/strong>。自動化がデータを取得・更新できるよう &lt;a href="https://designingnetworkautomation.com/ja/glossary/#api" class="glossary-term" title="A set of definitions, protocols, and tools that allow software components to communicate with each other programmatically.">Application Programming Interface (API)&lt;/a>(&lt;a href="https://designingnetworkautomation.com/ja/glossary/#rest" class="glossary-term" title="An architectural style for designing networked applications using HTTP methods (GET, POST, PUT, DELETE) to interact with resources, commonly used in web APIs.">Representational State Transfer (REST)&lt;/a>, GraphQL)が必要だ。人間が閲覧・編集できるよう Web UI と &lt;a href="https://designingnetworkautomation.com/ja/glossary/#cli" class="glossary-term" title="A text-based interface for interacting with systems by typing commands, commonly used for network device configuration and troubleshooting.">Command Line Interface (CLI)&lt;/a> も必要だ。すべての人に対して、見るべきものだけが見えるアクセス制御が必要だ。数百の自動化ワークフローが同時に動き、数十のスタッフがデータを編集し、外部システムが同期していても、一貫性とパフォーマンスが保たれる必要がある。&lt;/p></description></item><item><title>05 - Execution</title><link>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/05-execution/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/05-execution/</guid><description>&lt;h1 id="5-execution">5. Execution&lt;a class="anchor" href="#5-execution">#&lt;/a>&lt;/h1>
&lt;p>Playbookは何カ月も完璧に動作していた。ラボの10台のアクセススイッチに対してエンドツーエンドで2分、毎回クリーンな結果。チームが800台のスイッチの全インベントリにロールアウトすることを決めたとき、誰も問題を予想しなかった。最初の600台のデバイスは問題なく更新された。そしてジョブが遅くなった。そして止まった。RADIUSサーバーが突然150件の同時SSH認証リクエストを受け取り、接続を拒否し始めた。Ansibleは150台のデバイスの実行途中でハングした。エンジニアがジョブを強制終了した。&lt;/p>
&lt;p>次に来たのがより難しい問題だった。600台のデバイスのどれが更新されて、どの150台がそうでないか、誰にも分からなかった。実行状態が記録されていなかった。Playbookを再実行して、冪等性が助けてくれることを願った。その時は助かった。しかしこのインシデントは重要なことを明らかにした。実行レイヤーはラボ向けに設計されており、ネットワーク向けではなかった。速度、並列処理、エラー境界、状態追跡、何も考慮されていなかった。自動化は機能していた。実行アーキテクチャが機能していなかった。&lt;/p>
&lt;p>多くの人はネットワーク自動化を「同じデータを使って、人間としてCLIに接続せずに、ネットワークで何かをする」と考える。ネットワーク自動化を始める多くの人がそこから始めると思う。そしてそれが &lt;strong>Execution&lt;/strong> ブロックの行うことだ。しかし本書全体で見てきたように、ネットワーク自動化はこの最初のステップより大きく、Executionはアーキテクチャ内のひとつのコンポーネントに過ぎない。&lt;/p>
&lt;p>&lt;strong>Execution&lt;/strong> ブロックは最も&lt;em>危険な&lt;/em>操作(設定変更や再起動など)のためにネットワークと直接やり取りする。だからこの章を飛ばさないこと。正しく行うことが重要だ。&lt;/p>
&lt;p>この章では、このブロックが提供するゴールと柱、それを達成するために必要な内部機能について解説する。&lt;/p>
&lt;h2 id="51-基本原則">5.1. 基本原則&lt;a class="anchor" href="#51-%e5%9f%ba%e6%9c%ac%e5%8e%9f%e5%89%87">#&lt;/a>&lt;/h2>
&lt;h3 id="511-コンテキスト">5.1.1. コンテキスト&lt;a class="anchor" href="#511-%e3%82%b3%e3%83%b3%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88">#&lt;/a>&lt;/h3>
&lt;p>Executionは&lt;em>どのように&lt;/em>アクションを実行するかを定義する。&lt;em>何を&lt;/em>行うかはIntentブロックから、&lt;em>いつ&lt;/em>行うかはOrchestrationから来る。&lt;/p>
&lt;p>初期のネットワーク自動化プロジェクトでは、特定のデバイスとインターフェース名に対してインターフェースをバウンスするスクリプトが最初の成果となることがある。その旅は、はるかに洗練されたシステムへと成長する可能性がある。&lt;/p>
&lt;h3 id="512-ゴール">5.1.2. ゴール&lt;a class="anchor" href="#512-%e3%82%b4%e3%83%bc%e3%83%ab">#&lt;/a>&lt;/h3>
&lt;p>実行システムが実際に行うべきことは何か? 5つのことが重要だ。&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>適切なデータを準備する。&lt;/strong> 何かを実行する前に、&lt;em>何を&lt;/em>実行するか(インテント)、&lt;em>どこで&lt;/em>実行するか(どのデバイスに)、&lt;em>どのように&lt;/em>アクセスするか(認証情報、接続の詳細)を知る必要がある。これはSource of Truth(&lt;a href="../04-source-of-truth/">第4章&lt;/a>で詳述)からインベントリを取得し意図された状態をフェッチすることを意味し、時には現在の状態を把握するためにオブザーバビリティデータをクエリすることも含む。この統合なしでは、実行エンジンはただ盲目的にコマンドを実行するだけだ。精神的健康のために、それは避けること。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>今すぐでも後でも、必要なときに開始する。&lt;/strong> 即時の実行が必要なこともある。エンジニアが「デプロイ」をクリックして、すぐに実行されることを期待する。また、実行を待機させるべき場合もある。メンテナンスウィンドウ中にデプロイする、デバイスがオンラインになるまで待つ、オブザーバビリティからのイベントに反応する、などだ。システムは同期と非同期の両方のトリガーをサポートする必要がある。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>時間の経過とともに状態を追跡する。&lt;/strong> ネットワーク全体の操作は瞬時ではない。数時間かけて数百台のデバイスにデプロイすることがある。どのデバイスが成功したか? どれが失敗したか? どれがまだ保留中か? 状態管理はまた冪等性(同じタスクを2回実行しても同じ結果)、ロールバック(行ったことを元に戻す)、再開(失敗後に中断した場所から再開)を可能にする。状態追跡なしでは、すべての実行が一発勝負のギャンブルになる。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>スケールで確実に実行する。&lt;/strong> 5台のデバイスで動くスクリプトは500台ではしばしば壊れる(または劣化する)。並列実行、エラー処理、リトライ、レート制限、ドライラン機能が必要だ。システムは部分的な失敗を適切に処理し、何が問題だったかを明確にフィードバックし、ネットワークを未定義の状態に放置しないこと。操作によって異なる戦略が必要だ。高速で並列なものもあれば、低速でシリアルなものもある。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>あらゆるネットワークデバイスやプラットフォームで動作する。&lt;/strong> ネットワークにはおそらくCisco、Arista、Juniper、クラウド &lt;a href="https://designingnetworkautomation.com/ja/glossary/#api" class="glossary-term" title="A set of definitions, protocols, and tools that allow software components to communicate with each other programmatically.">Application Programming Interface (API)&lt;/a>、Linuxボックス、ファイアウォール、ロードバランサーがある。それぞれが異なるプロトコルを使い、異なる操作パターンを持つ。実行レイヤーはそれらすべてへのアダプターが必要で、残りの自動化が違いを気にしなくてもよい共通インターフェースを持つ。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>これらのゴールを念頭に置いて、実際に必要なアーキテクチャ機能は何か?&lt;/p>
&lt;h3 id="513-柱">5.1.3. 柱&lt;a class="anchor" href="#513-%e6%9f%b1">#&lt;/a>&lt;/h3>
&lt;p>各ゴールは特定の機能に対応する。&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>データ統合レイヤー。&lt;/strong> 実行エンジンは孤立して存在しない。Source of Truth(インベントリ、認証情報、インテント)、オブザーバビリティシステム(現在の状態、ヘルスメトリクス)、そして潜在的に他のシステム(チケット、変更管理、承認ワークフロー)へのプログラム的なアクセスが必要だ。これは &lt;a href="https://designingnetworkautomation.com/ja/glossary/#api" class="glossary-term" title="A set of definitions, protocols, and tools that allow software components to communicate with each other programmatically.">Application Programming Interface (API)&lt;/a> クライアントの実装、認証の安全な処理、データの適切なキャッシング、実行開始前に必要なものがすべて揃っているかの検証を意味する。&lt;/p></description></item><item><title>06 - オブザーバビリティ</title><link>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/06-observability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/06-observability/</guid><description>&lt;h1 id="6-オブザーバビリティ">6. オブザーバビリティ&lt;a class="anchor" href="#6-%e3%82%aa%e3%83%96%e3%82%b6%e3%83%bc%e3%83%90%e3%83%93%e3%83%aa%e3%83%86%e3%82%a3">#&lt;/a>&lt;/h1>
&lt;p>あるサービスプロバイダーのコアルーターで、ファンモジュールが夜間に無音で故障した。アラートは何も発生しなかった。ラインカード上の熱管理サブシステムが温度上昇を検知し、ハードウェアを保護するためにフォワーディングASICのスロットリングを開始した。本番トランジットリンクのスループットが40%低下した。監視システムは何も捉えなかった。ポーリングしていた温度センサーはシャーシスーパーバイザー上のものであり、個々のラインカード上のものではなかったのだ。SNMPポーリングは5分おきに実行されており、デバイスは正常と報告されていた。インターフェースカウンターはスループット低下を示していたが、そのリンクはずっと容量に余裕があったため、そのパターンに対するしきい値が設定されていなかった。&lt;/p>
&lt;p>3時間後、顧客SLA違反がチケットを生成した。オンコールエンジニアがルーターにSSHし、ローカルアラームログでファンの故障を発見し、ファンモジュールを再起動した。ファンコントローラーが再起動し、熱スロットリングは数分で解除された。トラフィックは回復した。SLA違反が文書化され、顧客に通知され、インシデントはクローズされた。&lt;/p>
&lt;p>根本原因は最後まで確認されなかった。調査が始まるころにはルーターは何時間も正常稼働していた。ラインカードの温度データもスロットリングイベントの記録もなく、どの監視システムにもスループット低下とファン故障を関連付ける手段がなかった。インシデントレポートの結論は「ハードウェア問題と推測、ハードウェアリセットで解決」だった。6ヶ月後、別のルーターで同じ事象が起きた。&lt;/p>
&lt;p>この失敗はしきい値の欠如ではなかった。チームには数千ものしきい値があった。失敗は対象範囲の不完全さにあった。監視システムは従来からポーリングしていたソースからデータを収集していたが、デバイスの動作に影響しうるすべてのソースからは収集していなかった。3種類のシャーシすべてでgNMI経由のラインカード温度データは利用可能だった。ファン故障のためのランブックを誰も書いていなかったから、誰もその収集パスを設定しなかったのだ。&lt;/p>
&lt;p>従来のネットワーク監視は壊れているものを監視する。インターフェースは上がっているか？CPUは90%を超えているか？このサービスは応答しているか？それは有用だが、リアクティブだ。障害を待ち受けているだけである。&lt;/p>
&lt;p>オブザーバビリティは異なる。&lt;em>なぜ&lt;/em>壊れているのか、あるいは壊れかけているのかを理解することだ。「あのデバイスがダウンしている」ではなく「なぜダウンしているのか、何がそれで壊れているのか、ビジネスへの影響は何か」という問いに答える。ネットワーク自動化において、オブザーバビリティはフィードバックループになる。何かを観察し、システムがそれを検知し、対応を決定し、アクションを実行し、修正が機能したことを検証する。このサイクルが繰り返されることが「クローズドループ自動化」だ。&lt;/p>
&lt;p>本章では、ネットワークで起きていることを把握するために必要なすべてをカバーする。どのデータを収集するか、どうやって収集するか、どう保存するか、どうアラートを出すか、そして意思決定に本当に役立つ形で人々に見せる方法を説明する。&lt;/p>
&lt;blockquote class='book-hint note'>
&lt;p>ここでは2つのビルディングブロック、&lt;a href="https://designingnetworkautomation.com/ja/glossary/#collector" class="glossary-term" title="An architectural component that retrieves and reads the actual state of the network, gathering telemetry, configuration, and operational data.">Collector&lt;/a>と&lt;a href="https://designingnetworkautomation.com/ja/glossary/#observability" class="glossary-term" title="The ability to measure and understand a system&amp;#39;s internal state through its external outputs. Includes logging, metrics, and tracing to detect failures and optimize automation behavior.">Observability&lt;/a>を扱う。これらは密接に関連しているためだ。&lt;/p>&lt;/blockquote>&lt;p>従来のオールインワンプラットフォーム（SolarWinds、LibreNMS）、クラウドサービス（Datadog、New Relic）、オープンソースのピースから自前で構築するスタック（Prometheus、Grafanaなど）のいずれを使う場合でも、基本的なアーキテクチャは同じだ。これらのパターンを理解することで、自分のスケールとチームに合ったアプローチを選択できる。&lt;/p>
&lt;div class="note-box">
 注記: このセクションでは、例示のためにさまざまなベンダーやソリューションに言及している。これは推薦ではなく、あくまで説明目的である。
&lt;/div>
&lt;blockquote class='book-hint note'>
&lt;p>このセクションはPacktが出版した書籍&lt;a href="https://www.packtpub.com/en-us/product/modern-network-observability-9781835083178">Modern Network Observability&lt;/a>から大きな影響を受けている。私はDavid FloresとJosh Vanderaaと共著したその書籍で、TPG（Telegraf-Prometheus-Grafana）スタックやその他のツールを用いた実装を手を動かして学びたい場合には、ぜひ参照してほしい。&lt;/p>&lt;/blockquote>&lt;h2 id="61-基礎">6.1. 基礎&lt;a class="anchor" href="#61-%e5%9f%ba%e7%a4%8e">#&lt;/a>&lt;/h2>
&lt;p>低レベルの詳細に入る前に、ネットワーク自動化戦略の中におけるネットワークオブザーバビリティの基礎を確立し、そのゴール、支持する柱、およびスコープを定義する。&lt;/p>
&lt;h3 id="611-コンテキスト">6.1.1. コンテキスト&lt;a class="anchor" href="#611-%e3%82%b3%e3%83%b3%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88">#&lt;/a>&lt;/h3>
&lt;p>おそらく、すでにネットワークを監視しているだろう。&lt;a href="https://designingnetworkautomation.com/ja/glossary/#snmp" class="glossary-term" title="An Internet Standard protocol for collecting and organizing information about managed devices on IP networks, widely used for network monitoring and management.">Simple Network Management Protocol (SNMP)&lt;/a>を使い、&lt;a href="https://designingnetworkautomation.com/ja/glossary/#syslog" class="glossary-term" title="A standard protocol for message logging that allows separation of the software generating messages from the system storing and analyzing them.">System Logging Protocol (Syslog)&lt;/a>を見て、リンク使用率を示すダッシュボードを持っている。それが監視だ。物事が機能しているかを教えてくれる。&lt;/p></description></item><item><title>07 - オーケストレーション</title><link>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/07-orchestration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/07-orchestration/</guid><description>&lt;h1 id="7-オーケストレーション">7. オーケストレーション&lt;a class="anchor" href="#7-%e3%82%aa%e3%83%bc%e3%82%b1%e3%82%b9%e3%83%88%e3%83%ac%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3">#&lt;/a>&lt;/h1>
&lt;p>ネットワークチームはすべてを正しく行っていた。堅固な信頼できる情報源（SoT）があり、すべての操作に対してテスト済みのPlaybookがあり、それらを実行するための明確なランブックがあった。書類上では、新しいVLANサービスのデプロイは完全に自動化されていた。実際には、半日と特定のエンジニア一人が必要だった。&lt;/p>
&lt;p>そのエンジニアはシーケンスを知っていた。まず、SoTデータが完全であることを検証する。次に事前チェックPlaybookを実行する。次に出力を確認し、失敗したデバイスを探し、続行するかどうかを決める。次にデプロイメントPlaybookをトリガーする。次に待つ。次に検証Playbookを実行する。次にServiceNowチケットを手動で更新する。途中でデバイスが失敗した場合は、他のデバイスが気づく前にロールバックする。彼女はそれをすべて、誰も完全に内面化していない共有ドキュメントのランブックにステップごとに持っていた。&lt;/p>
&lt;p>彼女が休暇に入ると、デプロイメントが止まった。ジュニアエンジニアがシーケンスを試みて順序を間違えると、ネットワークは6時間部分的な状態のままだった。自動化は存在していた。調整は依然として手動だった。&lt;/p>
&lt;p>それがこの章が解決する問題だ。オーケストレーションは、自動化ツールのコレクションを一体として動作するシステムに変えるビルディングブロックだ。他のブロックを調整し、いつ実行するかを決定し、障害を優雅に処理し、すべての決定を追跡し、エンジニアが手でフローを管理しながら中間に立つことなくこれらすべてを行う。&lt;/p>
&lt;h2 id="71-基礎">7.1. 基礎&lt;a class="anchor" href="#71-%e5%9f%ba%e7%a4%8e">#&lt;/a>&lt;/h2>
&lt;h3 id="711-コンテキスト">7.1.1. コンテキスト&lt;a class="anchor" href="#711-%e3%82%b3%e3%83%b3%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88">#&lt;/a>&lt;/h3>
&lt;p>これまでカバーしてきたすべてのビルディングブロックはそれぞれ1つのことを得意とする。SoTはインテントを保持する。Executorはそれを適用する。コレクターは状態を取得する。オブザーバビリティはその状態を理解する。それぞれは専門家であり、専門家にはコネクターが必要だ: 各ブロックがいつ行動すべきかを決め、結果をどう処理するかを決め、何かがうまくいかないときにどう回復するかを決めるもの。&lt;/p>
&lt;p>そのコネクターが&lt;a href="https://designingnetworkautomation.com/ja/glossary/#orchestrator" class="glossary-term" title="An architectural component that coordinates and executes automation tasks in response to events, managing workflows and task sequencing across the automation system.">Orchestrator&lt;/a>だ。&lt;/p>
&lt;p>&lt;a href="../../part1-rethinking-networking-with-automation/03-architectural-thinking/">第3章&lt;/a>では、他のすべてを調整するブロックとしてNAFフレームワークの中心に置いた。&lt;a href="../../part2-architectural-building-blocks/05-execution/">第5章&lt;/a>はExecutorが設定変更をどう適用するかを示した。&lt;a href="../../part2-architectural-building-blocks/06-observability/">第6章&lt;/a>はオブザーバビリティが結果をどう検証するかを示した。本章ではオーケストレーターが両方をどう順序付けし、その間で起こりうるすべての問題をどう処理するかを示す。&lt;/p>
&lt;p>オーケストレーションなしには、自動化を実行していない。誰かが正しい順序で、正しいタイミングで、正しい方法で解釈して呼び出さなければならないスクリプトを実行しているだけだ。それは名ばかりの自動化だ。&lt;/p>
&lt;h3 id="712-ゴール">7.1.2. ゴール&lt;a class="anchor" href="#712-%e3%82%b4%e3%83%bc%e3%83%ab">#&lt;/a>&lt;/h3>
&lt;p>オーケストレーターは5つのゴールを達成する必要がある:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>マルチブロックワークフローをエンドツーエンドで調整する。&lt;/strong> デプロイメントは単一のアクションではなく、シーケンスだ。SoTのインテントを検証し、事前チェックを実行し、設定を実行し、結果を検証し、ステークホルダーに通知する。オーケストレーターがフルシーケンスをまとめて保持する。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>人間の開始の有無にかかわらず、自動的にイベントに反応する。&lt;/strong> ServiceNowの承認、オブザーバビリティのアラート、スケジュールされたコンプライアンスのスキャン: これらはすべて人間が手動で開始しなくてもワークフローをトリガーできる必要がある。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>耐障害性とスケーラブルな実行。&lt;/strong> 800のスイッチを並列で操作するワークフローは確実に完了しなければならない。再起動を生き延びなければならない。成功したデバイスの作業を失うことなく部分的な障害を処理しなければならない。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>改ざん防止の可視性を提供する。&lt;/strong> オペレーターは今何が実行されているかを見る必要がある。監査員は先月何が実行されたか、誰がトリガーしたか、どのバージョンのワークフローが実行されたか、すべてのステップが何を生成したかを見る必要がある。両方のニーズが同じシステムから満たされなければならない。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>ワークフロー定義を本番ソフトウェアとして管理する。&lt;/strong> 800のスイッチにデプロイするワークフローは不用意に変更できない。ロジック自体が、本番で動作する他のコードに適用されるのと同じ規律で永続化、バージョン管理、テスト、本番へのプロモーションが必要だ。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="713-柱">7.1.3. 柱&lt;a class="anchor" href="#713-%e6%9f%b1">#&lt;/a>&lt;/h3>
&lt;p>5つの柱がこれらのゴールを支える:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>ワークフローエンジン&lt;/strong>: 多段階プロセスの定義、実行、追跡&lt;/li>
&lt;li>&lt;strong>トリガーレイヤー&lt;/strong>: 手動、スケジュール、イベント駆動、Webhook&lt;/li>
&lt;li>&lt;strong>耐障害性実行&lt;/strong>: ワークフローが再起動を生き延びる。数百のデバイスにわたってデバイスごとのボトルネックなしにリトライ、ロールバック、並列操作をサポートする&lt;/li>
&lt;li>&lt;strong>監査とオブザーバビリティ&lt;/strong>: すべてのステップをログに記録し、すべての決定を追跡可能にする&lt;/li>
&lt;li>&lt;strong>パイプライン管理&lt;/strong>: ワークフロー定義を本番で安全に永続化、バージョン管理、プロモーションする&lt;/li>
&lt;/ol>
&lt;h3 id="714-スコープ">7.1.4. スコープ&lt;a class="anchor" href="#714-%e3%82%b9%e3%82%b3%e3%83%bc%e3%83%97">#&lt;/a>&lt;/h3>
&lt;p>オーケストレーターは調整する。行動しない。&lt;/p>
&lt;p>スコープ内:&lt;/p>
&lt;ul>
&lt;li>他のビルディングブロックの調整&lt;/li>
&lt;li>ワークフローロジックとステップ依存関係の定義&lt;/li>
&lt;li>複数のソースからのトリガー処理&lt;/li>
&lt;li>実行状態の追跡と監査証跡の生成&lt;/li>
&lt;li>ステップが失敗したときのロールバック決定の管理&lt;/li>
&lt;/ul>
&lt;p>スコープ外:&lt;/p></description></item><item><title>08 - プレゼンテーション</title><link>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/08-presentation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/08-presentation/</guid><description>&lt;h1 id="8-プレゼンテーションレイヤー">8. プレゼンテーションレイヤー&lt;a class="anchor" href="#8-%e3%83%97%e3%83%ac%e3%82%bc%e3%83%b3%e3%83%86%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%83%ac%e3%82%a4%e3%83%a4%e3%83%bc">#&lt;/a>&lt;/h1>
&lt;p>VLAN自動化は6週間稼働していた。ネットワークチームはそれを誇りにしていた。毎朝、アプリケーションチームから3〜4件の新しいサービスリクエストが届き、ネットワークチームの誰もキーボードに触れることなくオーケストレーターが処理した。デプロイメントは機能した。スイッチは設定された。ネットワークは健全だった。&lt;/p>
&lt;p>エスカレーションは木曜日に届いた。アプリケーションチームのリードが、ポータルで「提出済み」と表示されているのにVLANリクエストが3〜5営業日かかる理由を尋ねていた。ネットワークチームはキューを確認した: 保留中のリクエストはゼロで、すべてのデプロイメントは成功していた。自動化は受信から20分以内にすべてのリクエストを処理していた。しかし、ServiceNowチケットはまだ「進行中」と表示されていた。チケットを更新する統合を誰も書いていなかったからだ。&lt;/p>
&lt;p>自動化は仕事をしていた。結果が見えなかっただけだ。&lt;/p>
&lt;p>1週間後、チームはアプリケーションチームがリクエストを直接提出してステータスを確認できるクイックなセルフサービスポータルをデプロイした。正午までに1時間で47件のVLANリクエストを受け取った。すべて有効だった。すべて正しくフォーマットされていた。問題は、ポータルに認証モデルがなかったことだ。URLを持っている誰からでも提出を受け付けた。すべてのリクエストはプラットフォーム全体の管理者権限を持つ単一のAPIトークン下で実行された。レート制限もなく、承認ゲートもなく、誰が何を提出したかの監査証跡もなかった。&lt;/p>
&lt;p>自動化は機能した。アクセスモデルが機能しなかった。&lt;/p>
&lt;p>これら2つの失敗はどちらもプレゼンテーションの失敗だ。1つはフィードバックループの欠如で、もう1つはガードレールの欠如だ。本章はそのギャップを埋める。&lt;/p>
&lt;h2 id="81-基礎">8.1. 基礎&lt;a class="anchor" href="#81-%e5%9f%ba%e7%a4%8e">#&lt;/a>&lt;/h2>
&lt;h3 id="811-コンテキスト">8.1.1. コンテキスト&lt;a class="anchor" href="#811-%e3%82%b3%e3%83%b3%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88">#&lt;/a>&lt;/h3>
&lt;p>これまでカバーしてきたすべてのビルディングブロックは内側を向いている: 他のブロックに向けて、またはプラットフォームを構築して運用するエンジニアに向けて。&lt;a href="https://designingnetworkautomation.com/ja/glossary/#source_of_truth" class="glossary-term" title="An authoritative, centralized system holding the intended state of the network, used as the single reference point for automation decisions.">Source of Truth (SoT)&lt;/a>は自動化システムのためにネットワークインテントを保持する。ExecutorはデバイスにChangesを適用する。&lt;a href="https://designingnetworkautomation.com/ja/glossary/#observability" class="glossary-term" title="The ability to measure and understand a system&amp;#39;s internal state through its external outputs. Includes logging, metrics, and tracing to detect failures and optimize automation behavior.">Observability&lt;/a>は結果を検証する。&lt;a href="https://designingnetworkautomation.com/ja/glossary/#orchestrator" class="glossary-term" title="An architectural component that coordinates and executes automation tasks in response to events, managing workflows and task sequencing across the automation system.">Orchestrator&lt;/a>はそれらすべてを調整する。これらのブロックそれぞれにUIとAPIまたはその両方があり、プラットフォームを構築して運用する人々のために設計されており、それとやり取りする必要があるすべての人のためではない。&lt;/p></description></item><item><title>09 - ネットワーク</title><link>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/09-the-network/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://designingnetworkautomation.com/ja/series/part2-architectural-building-blocks/09-the-network/</guid><description>&lt;h1 id="9-ネットワーク">9. ネットワーク&lt;a class="anchor" href="#9-%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af">#&lt;/a>&lt;/h1>
&lt;p>VLANの自動化はラボで3週間稼働していた。3台のスイッチ、ベンダーごとに1台ずつ、すべてのワークフローが通過した。チームは自信を持っていた。最初の本番実行で、800台のキャンパススイッチのうち23台が失敗した。すべてHPEだった。すべて、誰もドキュメント化していなかったファームウェアバージョンを実行していた。&lt;/p>
&lt;p>PlaybookはVLAN設定をプッシュした後、各デバイスからのエラーレスポンスを確認していた。モダンなHPEファームウェアでは、すでに存在するVLANはエラーコード&lt;code>duplicate-vlan&lt;/code>を返す。この古いファームウェアバージョンでは、同じ条件が&lt;code>vlan-exists&lt;/code>を返した。Playbookは&lt;code>duplicate-vlan&lt;/code>をべき等シグナルとして扱うように書かれていた。つまり「これはすでに存在している、問題ない」という意味だ。&lt;code>vlan-exists&lt;/code>を処理するようには書かれていなかったので、そのレスポンスを失敗として扱った。HPEフリートの3分の1が失敗を報告した。ロールバックはクリーンに実行された。ネットワークチームが実際に設定されたスイッチとそうでないスイッチを手動で監査する間、アプリケーションチームのチケットはさらに3時間オープンのままだった。&lt;/p>
&lt;p>自動化は間違っていなかった。ネットワークに、誰もドキュメント化していなかった意見があったのだ。&lt;/p>
&lt;p>6ヶ月後、同じチームはBuilding Bを反映したcontainerlabトポロジーを持っていた: 24台のスイッチ、一致するベンダーイメージ、HPEノードは&lt;a href="https://designingnetworkautomation.com/ja/glossary/#source_of_truth" class="glossary-term" title="An authoritative, centralized system holding the intended state of the network, used as the single reference point for automation decisions.">Source of Truth (SoT)&lt;/a>に記録された本番ファームウェアバージョンにロックされていた。そのトポロジーに対するVLANワークフローの最初のテスト実行で、8台のHPEノードがまさにそのエラーコードで失敗した。チームはHPEアダプターのべき等レスポンスのリストに&lt;code>vlan-exists&lt;/code>を追加した。再実行: 24台のノードすべてが通過した。本番デプロイメント: 800台のスイッチ、ゼロの失敗。&lt;/p>
&lt;p>違いは良いコードではなかった。現実を反映したテスト環境だった。&lt;/p>
&lt;p>本章ではパート2を通じて常に暗黙的だったブロックを扱う: ネットワーク自体だ。これまで構築してきたすべてのビルディングブロックは自動化チームによって設計され、ドキュメント化されたインターフェースに従って動作する。ネットワークは受け継いだものだ。それには癖があり、多様なインターフェースがあり、ファームウェアの不整合があり、ベンダー、プラットフォーム、ソフトウェアの世代によって異なる機能がある。第9章は2つの問いを扱う: 自動化を確実にするためにネットワークに何が必要か、そして本番に触れる前に自動化ロジックをどう安全に検証するか？&lt;/p>
&lt;h2 id="91-基礎">9.1. 基礎&lt;a class="anchor" href="#91-%e5%9f%ba%e7%a4%8e">#&lt;/a>&lt;/h2>
&lt;h3 id="911-コンテキスト">9.1.1. コンテキスト&lt;a class="anchor" href="#911-%e3%82%b3%e3%83%b3%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88">#&lt;/a>&lt;/h3>
&lt;p>&lt;a href="../../part1-rethinking-networking-with-automation/03-architectural-thinking/">第3章&lt;/a>では、&lt;a href="https://designingnetworkautomation.com/ja/glossary/#naf_framework" class="glossary-term" title="Network Automation Forum Framework. A community-driven, vendor-agnostic reference architecture that defines seven building blocks for organizing network automation solutions: Intent, Executor, Collector, Observability, Orchestrator, Presentation, and Network Infrastructure.">NAF Framework&lt;/a>の7つのブロックの1つとしてネットワークを導入した: 自動化チームが「所有」しない唯一のブロック（ネットワークエンジニアリングのスコープにある）。彼らはそれを設定し、観察し、そのインテントをモデル化するが、オペレーティングシステム、データモデル、またはAPIインターフェースは構築しなかった。その依存関係は、その上のプラットフォームのすべての設計決定を形作る。&lt;/p></description></item></channel></rss>