8.0

View in English

8.0 第8部の導入: 自動化

ソフトウェアは、ユーザーに届いたときにだけ価値を生みます。コミットされた変更から稼働中の本番コードへの経路は、大きな組織が速度、安全、正気を最も失いやすい所です。数百人のエンジニア、数十のチーム、数千のインフラストラクチャのリソースの規模では、小さなグループには機能する非公式な習慣は、完全に崩れます。手作業のビルド、手で設定されたサーバー、一回限りのデプロイのスクリプトは、あなたを遅くし、さらに悪いことに、繰り返せず、文書化されず、監査できなくなります。この部は、その脆さを自動化で置き換えることについてです。ソフトウェアを構築し、プロビジョニングし、デプロイし、運用する、乱雑で間違いやすい仕事を、体系化され、繰り返し可能で、レビュー可能なシステムに変える。

大きなチームと、企業および政府の組織にとって、賭け金は具体的です。多くのチームが重なるシステムを共有するとき、手作業の統合と手作業の運用のコストは非線形に増え、レビューされない一つの変更が、別のチームの仕事やリリース全体を静かに壊しえます。規制対象の組織は追加の負担を負います。監査人、セキュリティ責任者、規制当局は、変更がレビューされ、テストされ、承認されたこと、本番で動いている成果物が、まさに構築され検証されたものであることの証拠を必要とします。自動化は、これらのコンプライアンスの義務を、書類仕事の負担から、通常のエンジニアリングのワークフローの自動的な副産物に変えます。違反を事後に捉えることから、何かがプロビジョニングあるいは出荷される前に防ぐことへと移ります。

第8部は、デリバリーの仕組みを端から端までたどります。変更を統合してリリースするパイプラインから、それが動く体系化されたインフラストラクチャ、それをホストするコンテナのプラットフォーム、これらすべてを普通のチームが使えるようにする内部のプラットフォーム、そして規模のもとで品質と統制が崩れないようにする自動化まで。筋道は単純です。繰り返し予測可能に行うことはすべて体系化し、一貫して、素早く、人間の苦役なしに走るようにする。

この部の章

  • 8.1 CI/CDとデリバリー: あらゆる変更を共有のメインラインに統合し、テストし、デプロイ可能な状態に保つ自動化されたパイプラインを築き、リリースが、エンジニアリングの大慌てではなく安全なビジネスの決定になり、監査可能なものにもなるようにします。

  • 8.2 インフラストラクチャ・アズ・コードと構成: 手作業のクリックではなく、バージョン管理されレビュー可能な機械可読の定義でインフラストラクチャを定義しプロビジョニングし、環境が一貫し、再現可能で、使い捨てになり、何かが存在する前にガバナンスのルールが埋め込まれチェックされるようにします。

  • 8.3 コンテナ、オーケストレーション、クラウドネイティブ: アプリケーションとその依存関係を、可搬で隔離された単位にパッケージ化し、Kubernetesのようなオーケストレーションのプラットフォームで規模で動かし、出所、隔離、コストを統治しながら、多くのチームにデプロイ、スケーリング、レジリエンスの共通の基盤を与えます。

  • 8.4 プラットフォームエンジニアリングと開発者体験: 選り抜きのセルフサービスのゴールデンパス(妥当な既定が組み込まれた、意見のあるサポートされた経路)を提供する内部開発者プラットフォームを築いて運営し、共有の複雑さを吸収して、チームが自分のドメインに集中しながら、セキュリティ、信頼性、コンプライアンスの組織の標準を既定で引き継ぐようにします。

  • 8.5 テストとプロセスの自動化: 反復的な手作業のテストと運用の仕事を、継続的なテストスイートから、ランブック、是正、コンプライアンスの証拠の収集まで、信頼できる機械が実行するワークフローに置き換え、品質と統制がスケールし、熟練したエンジニアが判断を要する問題に解放されるようにします。

  • 8.6 リリース管理とプログレッシブデリバリー: デプロイをリリースから切り離し、コードを出荷することを機能を露出することから分け、フィーチャーフラグ、カナリアとブルーグリーンのデプロイ、自動化されたヘルスチェックとロールバック、エラーバジェットでゲートされたリリースで変更を段階的に展開し、あらゆる変更の影響範囲を縮めます。

  • 8.7 ビルドシステムと成果物管理: ビルドを再現可能で、速く、キャッシュ可能にし、成果物を不変で、バージョン管理され、署名されたものとして扱い、一度構築して、出所とサプライチェーンの完全性とともに環境にわたって昇格させます。

これらの章の相互関係

これらの章は、単一のデリバリーシステムの層を描き、それぞれがその下のものの上に乗っています。継続的インテグレーションと継続的デリバリー(CI/CD、8.1章)は、変更をコミットから本番に運ぶ結合組織です。しかしパイプラインにはデプロイ先が必要で、インフラストラクチャ・アズ・コード(8.2)は、その目標を、手作りの雪片ではなく、バージョン管理された再現可能な定義として提供します。コンテナとオーケストレーション(8.3)は、パイプラインと体系化されたインフラストラクチャの両方がますます前提とする実行時の基盤で、すべてのチームに一貫したパッケージングとデプロイの契約を与えます。プラットフォームエンジニアリング(8.4)は、これらすべてを一貫した内部プロダクトに包み、普通のチームが、ゼロから組み立てるのではなく、舗装された道を通じてパイプライン、インフラストラクチャ、オーケストレーションを使えるようにします。テストとプロセスの自動化(8.5)はあらゆる層にわたって走り、パイプラインに品質のゲートを埋め込み、資産群全体を健全に保つ運用とコンプライアンスの仕事を体系化します。どの層の弱さも、その上のものを損ないます。脆いパイプライン、雪片の環境、統治されないプラットフォームはそれぞれ、自動化が取り除くために存在するまさに手作業のリスクを再導入します。

この部は外にもつながります。ここでのデリバリーの規律は、第11部、特に11.2章のフローとデリバリーパイプラインの考え方のエンジニアリング上の実現で、あらゆる高スループットのシステムを統べるのと同じ待ち行列のダイナミクスに依存します。これらの章が築くものは運用されることを意図しているので、自動化がデプロイする稼働中のシステムを扱う、第9部の運用と信頼性(サイトリライアビリティエンジニアリングの9.1章とオブザーバビリティの9.2章)に直接つながります。第8部を通じたガバナンスとコンプライアンス・アズ・コードのテーマは、本書の他の箇所で設定されたセキュリティと規制の制約を満たし、ここで述べられるプラットフォームは、AIとデータのワークロードがますます動く場所でもあり、この部を第6部のMLOps(機械学習運用)とインフラストラクチャの関心事に結びつけます。合わせて読むと、これらの章は、大きな組織が、安全、一貫性、統制を手放さずに、どうソフトウェアを素早く出荷するかを示しています。