コードとしてのインフラストラクチャを詳しく知る

完了

コードとしてのインフラストラクチャは、モダンなソフトウェア開発および運用のプラクティスに不可欠なコンポーネントです。 これには、プログラミング手法を使用してインフラストラクチャ サービスをプロビジョニングおよび管理することが含まれます。 IaC は、サンプル シナリオで取り上げているようなクラウドベースの環境で役立ちます。 ただし、その機能は、収益を得るためにコンピューティング資産に依存しているどの組織も活用できます。 このユニットでは、IaC の主な原則と、これらの原則を実装する最も一般的な手法について学びます。

IaC の主な原則は何ですか?

IaC の個々の実装は大きく異なる可能性がありますが、どれも次のような、一連の共通する原則に従う傾向があります。

  • バージョン管理: IaC は、コードを使用してコンピューティング、ストレージ、ネットワーク リソースなどのインフラストラクチャ コンポーネントを定義します。 このコードは一般的に VCS 内に存在しているため、インフラストラクチャに対する変更の追跡を、ソフトウェア バージョンの追跡と同じ方法で行うことが容易になります。
  • 宣言構文: IaC は、インフラストラクチャの望ましい状態を記述するために 宣言構文 に依存します。 これは、より従来の 命令 型構文とは対照的です。これには、その状態につながるステップ バイ ステップ プロシージャを定義するコードの記述が含まれます。 宣言型アプローチのほうが効率が高くなる傾向がありますが、それには多数の理由があります。 1 つは、インフラストラクチャのコンポーネントをホストするプラットフォームのインテリジェンスに依存していることです。これで、プログラミング エラーや非効率性の可能性を最小限に抑えることができます。 加えて、べき等性が保証されます。
  • べき等性: この用語は、アクションが実行される回数に関係なく結果が常に同じであるという特性を指します。 宣言型構文で記述されるのは最終状態のみであるため、これを使用すると、コード実行のたびに常に同じ結果が得られることが保証されます。 これによって、ターゲット環境の一貫性が確実になるとともに、中間の変更によって意図しない副作用が発生する可能性が排除されます。
  • 自動化: コードを使用すると、プロビジョニングと構成の自動化が容易になり、効率、一貫性、スケーラビリティが向上します。 また、手作業によるエラーの潜在的な影響も排除されます。
  • CI/CD 統合: IaC を CI/CD と統合し、アプリケーションのビルド、テスト、デプロイを 1 つの連続した完全に自動化されたシーケンスに組み合わせることで、包括的なソフトウェア配信戦略を実現できます。
  • 再利用性: IaC は、最適なプログラミング プラクティスに従って、再利用可能なコード モジュールの使用を促進します。 これによって、標準化されたインフラストラクチャ ビルディング ブロックで構成されるソフトウェア ライブラリの開発が容易になり、プロジェクト間で共有できるようになります。 その結果として組織が得られる利点としては、一貫性の向上、保守の単純化、作業の重複の最小化があります。

IaC を実装する方法は?

IaC を実装するには初めに、インフラストラクチャの要件を特定します。これにはコンピューティング、ストレージ、ネットワークのコンポーネントが含まれます。 詳細のかなりの部分は、そのインフラストラクチャをホストするプラットフォームに依存しており、たとえばパブリックとプライベートのどちらのクラウド環境を使用するかによって大きく異なる可能性があります。

コード フローとしてのインフラストラクチャの図。

プラットフォームの選択は、IaC のテクノロジとツールの選択にも影響します。 たとえば、パブリック クラウド プロバイダーはそれぞれ、独自の IaC 機能を提供しています。 Microsoft Azure の場合は、これらの機能は Azure Resource Manager (ARM) と Bicep のテンプレートに基づいています。 Terraform のように、マルチクラウド サポートを提供するソリューションもあります。 ツールを選択すると、プロジェクトのファイルの種類と、それに対応するディレクトリ構造が決まります。 これで、選択したバージョン管理システム内にリポジトリを設定できるようになります。 VCS リポジトリを利用すると、インフラストラクチャの変更の追跡、チーム内およびチーム間のコラボレーション、デプロイとロールバックの自動化に加えて、CI/CD ワークフローとの統合が容易になります。

リポジトリの用意ができたら、IaC コード ライブラリの構築を開始します。このライブラリは、今後のインフラストラクチャ デプロイのビルディング ブロックを表すモジュールで構成されます。 このようなブロックの例としては、個々のサーバー、ネットワーク、またはデータ ストアを表すものがあり、これらを自由に組み合わせてマルチリソース ソリューションを構築できます。

次のステップでは一般的に、IaC 環境と CI/CD ワークフローの統合が行われます。 一般的に、これには同じリポジトリのセットが使用されるので、インフラストラクチャのデプロイと、そのインフラストラクチャ上でホストされるソフトウェアのビルド、テスト、デリバリーとの結合が容易になります。 ただし、この統合をさらに拡張して CI/CD プラクティスを IaC デプロイに適用する必要があります。 特に、CI/CD と同様に、開発とステージングの環境を利用すること、テストを自動化すること、監視とフィードバック ループを実装すること、およびインフラストラクチャ コードと IaC プロセスを適切にセキュリティで保護することを確実にする必要があります。