あなたが親なら(親でなくても、ここでは批判しませんが)、おそらく『レゴムービー』を観たことがあるでしょう。 複数回。
DevOps の導入を検討している企業であれば、おそらくこれを必ず見るべきだと私は考えています。
真剣に。
なぜなら、学んだ(多くの)教訓の 1 つは、特定の分野の専門家であるマスター ビルダーであっても、アプリケーションを目的のデプロイ済み状態に移行して世界を救うためには、他の人と協力する必要があるということだからです。 つまり、手動プロセスという恐ろしい技術的クラッグルによって生産が滞留していないということです。
マスタービルダーは、個々に、自分が構築したいものだけでなく、それを構築するために必要なすべての複合部品を思い描くことができます。 そして彼らは、映画の中で、破壊したり、飛んだり、競争したり、撃ったりして世界を救うことができる完成した作品を作り出すことで、頻繁にそして見事にそれを実行します。 しかし、より大きな構想に基づいて行動する段階、つまり個々の作品を構築するだけでなく、一連のイベントを編成して(何をしたのかお分かりですか?)、邪悪な悪者の陰謀を阻止する段階になると、彼らはそれを実行できませんでした。 彼らには、指示書を参照し、全員が同じ方向に進むために必要な手順を記したチェックリストを持ち歩くのが好きな人が必要でした。
私たちの場合、その方向は生産です。
継続的なデプロイメントが現実的な可能性となり、開発と「IT の残りの部分」の間の壁を乗り越えて DevOps の究極の目標となるにつれて、各サービスとシステムのマスタービルダーが孤立して作業することがないように、4 つの運用ドメイン (セキュリティ、ストレージ、コンピューティング、ネットワーク) すべてにわたる調整が本当に必要になります。
「コードはローカルで、他のサービスから独立している」という特徴を持つマイクロサービスを採用している開発者でさえ、そのような考え方とアプローチが機能するのは、他のサービスが通信できるインターフェース (API)が明確に定義され、文書化されている場合のみであることを知っています。 これらのインターフェースは、他のサービスがインターフェースをどのように呼び出すかを理解せずに、単独で開発されるべきではありません。
同じことが壁の生産側でも当てはまります。継続的なデプロイメントを実際に実行できるようにするには、4 つの運用領域すべてが、ある時点で通信する必要があります。 マスター プラン、つまり、個々のサービスまたはサービス セットがどのように構築されるかの詳細であっても従わなければならない一連の指示が存在します。 これらは、ある時点で、生産パイプラインの一方の端からもう一方の端まで展開を推進する包括的なプロセスに調整される必要があります。
各ドメイン内のマスタービルダーは、互いに完全に独立して作業することはできません。 彼らは調整し、協力し、自分たちのパズルのピースが、今日のビジネスの基盤となっている(アプリの)世界を救うための壮大な計画にどのように当てはまるかを検討する必要があります。
それを始めるための方法の 1 つは、影響セットをグラフ化することです。 セキュリティに配慮したコード結合に関する最近の記事「プログラム結合の 80% ルール」を読んだ後、このことを思い出しました。 この記事はコードに重点を置き、開発志向の人に特有の依存関係グラフの構築に焦点を当てていますが、これをさらにレベルアップして(抽象化して)、関数/手順/メソッドを運用中のシステムとして考えると、これがどのように役立つかがわかってきます。 アプリケーション展開が特定のサービスにどの程度依存しているか(または、そもそもドメイン レベルにどの程度依存しているか)を理解することで、展開を完了するためにグループ間でどの程度の調整が必要になるかを理解し、その目標を達成するための計画を立てる上で貴重な洞察が得られます。
最も良い例の 1 つは、ほぼすべてがコア ネットワーク サービスが最初に展開されることに依存しているということです。 これは、アプリケーションとその依存コンポーネントだけでなく、アプリケーションを提供するセキュリティや高次 (アプリ) サービスにも当てはまります。負荷分散、Web アプリケーション セキュリティ、さらにはファイアウォールも、ネットワーク属性に依存して機能します。 IT 内の異なるグループ (サイロ) によって管理されるシステムとサービス間の依存関係 (結合係数) を理解することは、継続的な展開に似たものを達成するためにコミュニケーションとコラボレーションを行う必要性を促進するのに大いに役立ちます。
マスタービルダーであっても、自分の作品が全体像の中でどのように位置づけられるかを理解する必要があります。 ますます自動化され、コードベース化が進む IT 全体の運用の世界に開発手法とツールを適用すると、継続的なデプロイメントという壮大な構築作業にパズルのピースを統合するために必要なインターフェースをより適切に構築できるようになります。