メインコンテンツにスキップ
ブログデベロッパーツールIaCデザインのベスト・プラクティスインフラ

IaCデザインのベスト・プラクティスインフラ

IaCデザインのベスト・プラクティスインフラ

Infrastructure as Code (IaC) は、クラウド時代にネットワークをデプロイおよび管理するための哲学であり、一連のプラクティスです。 IaCは、クラウドコンピューティングのメリットを最大限に活用し、PuppetChefSaltAnsibleTerraformなどの自動構成およびデプロイメントツールの機能を活用するように設計されています。 これらのツールによる完全に自動化されたインストールと設定で、管理者が設定ファイルで完全なシステムを定義することができます。

設定ファイルは、システムを構築して設定する仕様を示した一連の指示です。 この一連の指示は様々な形で提供され、ツールによって異なる名前が付けられています。(例えば、cookbookはChefでの呼び名で、playbook Ansibleでの呼び名です) プラットフォームの違いがあっても事前に完全な設定を定義できるということは、新しいインフラのビジョンに繋がります。このビジョンとは、システムに関する知識をコード化して、従来のインストールやコンソールコマンドによる再構成を必要とせずに、クラウド上に迅速に展開するというものです。

お客様独自のソリューションをデプロイする工程は自動化プラットフォームおよびお客様のネットワーク詳細により異なりますので、IaCの可能性を探る際には以下の原則を念頭に置いてください。

  1. シンプルでモジュラーなシステム

ハードウェアの時代のオフィスでは、電子メールやファイルストレージなどのタスクに単一のサーバシステムを使用していたかもしれません。IaCの最初の教訓は、オールインワンの考え方から脱却することです。 大規模で多目的のシステムでは複雑さが増し、複雑さはエラーやセキュリティの問題につながります。 IaCインフラをシンプルに、合理的に、モジュール化してビルディングブロックのようにデプロイすることで、お客様の環境のニーズに合わせましょう。

  1. 信頼できる唯一の情報源

同じ構成ファイルのバージョンが複数存在すると、混乱や間違いを呼ぶ可能性があります。 各設定は一つのソースのみを持つべきです。 これは、Gitのようなバージョン管理システムを使って、明確で効果的なバージョン管理を実装することを意味します。 しかし、信頼できる唯一の情報源の考え方は、単なるバージョン管理に留まりません。 標準的なテンプレートを中心に据えるとこに焦点を置き、カスタマイズはその場で行うのではなく、明確で予測可能なプロセスを経て行います。

  1. 外部のドキュメントは持たない

設定ファイルには、内容を理解するために必要なすべての情報が含まれている必要があります。 設定に関する指示やコメントを別のドキュメントに記載すると、チームは異なるファイルを並行して追跡管理しなくてはいけません。 まず設定を変えて、それからドキュメントを更新するという昔ながらのやり方では余計な仕事が増え、ミスを誘い、設定とドキュメントが同期しなくなる可能性があります。

ほとんどのIaCプラットフォームには、コードにコメントを追加する手段が用意されていますが、チームメンバーがIaCプラットフォームで使用されるインターフェイスツールと宣言型言語を理解し、構成の詳細を読んで理解することも重要です。

  1. 自動テストによる保証

自動テストは、DevOpsとIaC哲学の柱です。 IaC環境に組み込まれたモジュール性と再現性は、テスト環境で本番環境設定を簡単にモデリングできます。 テストは設定に変更を加えた後に開始するべきで、新しいバージョンのシステムをデプロイする前に、ユニットテスト、機能テスト、統合テスト、回帰テストを体系的に進める必要があります。

  1. 不変の方向へ進む

IaCでは、設定はコードの中に存在します。 目的は、設定の詳細を設定ファイルで表現することです。 システムがいったん動作しだすと、管理や再構成を他のコンピュータシステムと同じように行いたくなるかもしれません。しかし、統一性の原則から言うと、システムはそのままにしておくことが一番です。 局所的なsnowflakeの再構成はエラーを生み、他の人がシステムを安全に維持することを困難にします。 理想的には、稼働中のシステムをいじるのではなく、全ての変更は設定ファイルから行い、アップデートが必要な時にそれを再デプロイします。

  1. 共同作業のためのプロセス設計

全体的な設定に関する知識と目的はチーム間で共有されるべきで、一人のユーザーがボトルネックになってはいけません。 バージョン管理は共同作業環境の重要な要素ですが、それは始まりにすぎません。 適切なセキュリティポリシーと監査ポリシーを維持しながら、情報と責任の共有を最大化する方法で、対話型プロセスと共同作業ツールを導入する必要があります。 共有されていない情報や転送できない情報を持つ人間は、オペレーションの継続を脅かす存在となっています。

これらの原則を念頭に置きながら、IaCの可能性を探り、自社のIaCインフラの展開プロセスを考えてみてはいかがでしょうか。


コメント 

コメントを残す

あなたのメールアドレスは公開されません。必須項目には*印がついています。