IaCはどうやるの?  クラウドインフラの構築をしてみよう架空事例で学ぶクラウドエンジニアのお仕事(3)(1/2 ページ)

クラウドエンジニアの仕事を学ぶ本連載。今回は、クラウド上でのインフラ構築を具体的に解説します。ここで重要なキーワードとなるのが「IaC」。実際に手を動かして設定し、やり方がイメージできるようにしていきます。IaCのメリットとデメリット、注意点についても触れます。

» 2025年06月20日 05時00分 公開
[小原夏々子株式会社マイナビ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 クラウドエンジニアの仕事を、一から具体的に学ぶ本連載前回の記事では架空Webサービス「My-Stack Circle」の要件定義と設計を進めました。今回は設計した環境の構築プロセスを解説し、実際に「My-Stack Circle」の構築を進めていきましょう。

クラウドインフラ環境の構築

 インフラの構築とは、設計書を元に基盤となるシステムを構築するフェーズです。オンプレミスと異なり、クラウドにおけるインフラの構築はインターネットアクセスさえできれば取り掛かることができます。

 クラウドを用いたWebアプリケーションの構築フェーズでは、主に下記のようなリソースやシステムを構築・設定します。

  • インフラリソース構築(コンピューティング、データベース、ネットワーク他)
  • CI/CD
  • 監視

 この中でもクラウドエンジニアの仕事として欠かせないのがクラウドインフラのリソース構築です。ここで重要なキーワードとなるのが 「IaC」です。

IaCって何?

 IaCとは「Infrastructure as Code」の略で、 インフラリソースをコード化して管理する技術を指します。Webサービスなどのシステムを稼働させるためには、ネットワークやサーバ、データベースの他、CDN(Contents Delivery Network)やロードバランサーなどさまざまなリソースの構築が必要となります。これを一から手作業で構築するのは大変ですし、手作業による人為的ミスも増加します。また、新しくサービスを立ち上げるたびに手作業でインフラ環境を構築するのもとても効率が悪いです。

 そこで登場するのがIaCです。インフラの設定をコードで記述することによって、リソースの構築作業を自動化することが可能となり、手作業による設定ミスも防止できます。また、一度コードを作成してしまえば環境の再構築も可能となり、類似した構成であれば軽微なコード修正だけで構築が可能です。

 こういったメリットをもたらすIaCは、今ではクラウドインフラを構築・運用する上で欠かせない技術となっており、AWSに代表されるAWS CDK(Cloud Development Kit)やAWS CloudFormation、さまざまなクラウドサービスで利用可能なTerraformなど、多様なツールが存在します。 マイナビの内製案件においては、AWS CDKやTerraformなどを利用し、インフラをコードで管理・運用するケースが主流となっています。

コード化のメリットとデメリット

 IaCを利用した場合の具体的なメリットとデメリットを見ていきましょう。

メリット

コスト削減
 インフラをコードで管理することで、デプロイの自動化が可能です。また、サーバ設定やミドルウェアなどの設定も不要となるため、構築作業に割く時間が減り、人件費の削減が期待できます。

オペレーションミスの防止
 IaCでは、リソース設定、ネットワーク設定、セキュリティ設定など、全てのインフラ要素を一元的に管理することができます。これにより、本番環境や検証環境のように同一の構成を持つ環境を構築する際に、手作業による差異を防ぐことができます。また、設定変更時の差分をコードで確認できるため、変更履歴の追跡や管理が容易になるというメリットもあります。

構築作業のパターン化が可能
 インフラをコード化することで、同じ構成であれば簡単に再構築ができるようになります。また、標準化した構成のコードを作成し、それをベースにすることで、比較的軽微な修正のみでインフラの構築が可能です。結果的に構築作業に割く時間が減り、人件費の削減にも繋がります。

デメリット

学習コスト
 IaCを導入するには、コード記述のためのプログラミングスキルの他、アプリケーションのコンテナ化を実現するDockerや、CI/CD自動化のためのGitHub Actionsなど、多岐にわたる知識が必要です。また、IaCツールごとに特徴が異なるため、それぞれの特性の理解が重要となり、初期の学習コストが高くなることがあります。IaCを導入する際には、学習コストの見積もりや、小規模システムからの導入検討が必要です。

運用フローの増加
 手動で対応すれば一瞬で終わるような軽微な設定変更に関しても、コード化している場合は コード修正→コードレビュー→デプロイ→反映 といったフローで対応する必要があります。そのため、実際に環境へ反映するまでのタイムラグを考慮して対応することが大切です。

その他のリソースの構築

CI/CD

 CI/CDは、アプリケーションやインフラ開発プロセスを効率化し、品質を向上させるための重要な手法です。CI/CDを導入することで、コードの変更に対して自動的にビルド/テスト/デプロイが可能となるため、アプリケーション開発だけでなくIaCを利用したインフラ開発にも有効です。マイナビでは、CI/CDツールとしてAWS CodePipelineやGitHub Actionsなどのツールを活用するケースが多く、これらによって効率的なデプロイを実現しています。

監視

 システムの安定性とパフォーマンスを維持するためには、クラウドインフラの監視が不可欠です。監視ツールを利用することで、リソースの使用状況やアプリケーションのパフォーマンス状況をリアルタイムで把握し、異常が発生した際には迅速に対応することができます。

 さまざまな監視ツールが存在しますが、AWSのサービスでもAWS CloudWatchやAmazon SNSを組み合わせることで、メトリクスの収集やアラートの設定・通知が可能となります。これにより、ダウンタイムを最小限に抑え、ユーザーに安定したサービスを提供することができます。監視や保守については、次回に詳しくお話しする予定です。

架空サービス「My-Stack Circle」の構築

 クラウドインフラの構築フェーズや、IaCについての理解はできましたでしょうか。より理解を深めるために、早速、架空サービス「My-Stack Circle」のAWSリソースの構築作業を一緒に進めていきましょう。

AWS CDKを利用したインフラ構築

 AWS CDKは、AWSに特化したIaCフレームワークで、TypeScriptやPythonなど6つの言語で記述でき、従来の手動設定やIaCツールのCloudFormationよりも柔軟に、再利用可能なインフラ環境の構築が可能です。CDKのベースはCloudFormationであり、 「ソースコードをもとにCloudFormationテンプレートを作成する」ことがCDKの本質です。

 このようなメリットがあるため、マイナビの内製案件では、AWS CDKを用いるケースが主流となっています。

 加えて、マイナビではベースとなるCDKコードが用意されているため、社内基準に従った標準的なシステム構成であれば、比較的軽微なコード修正でインフラ環境の構築ができ ます。こうした理由から、今回はAWS CDKを利用してインフラ環境の構築を行います。

 CDKを利用した環境構築は、下記のような流れで進めます。

1.開発環境の準備
2.CDKプロジェクトの作成
3.CDKコードの記述
4.デプロイ

 上記の流れに沿って、実際にデプロイまで進めてみましょう。「My-Stack Circle」の全ての構成をこの記事の中で構築することは難しいため、今回はVPCに絞って取り上げたいと思います。

0. 前提条件

  • AWSアカウントとアカウントに対するアクセス権(Administrator Access権限)を持っていること
  • インターネットへの接続環境が整っていること
  • 開発環境に14.15.0以上のNode.jsがインストールされていること

1. 開発環境の準備

 まずは、AWS CDKを使用するための開発環境を準備します。開発環境には、ローカル環境での開発や、クラウド上にサーバを立ち上げて利用するケースがありますが、本記事ではAWS上のEC2で稼働するLinux環境(Amazon Linux 2023)を開発環境として、VSCodeでリモート接続をして開発を進めていきます。

 開発環境に作業ディレクトリを作成し、Node.jsがインストールされていることを確認し、CDKをインストールします。

$ mkdir cdk-workspace
$ cd cdk-workspace
$ node -v  #Node.jsのインストール状況・バージョン14.15.0以上であるか確認
$ npm install -g aws-cdk #CDKのインストール

 続いて、AWS CLIがインストールされていない場合は、インストールを行います。CLIのインストール方法はOS毎に異なるため、AWSの公式ドキュメントをご確認ください。

※Amazon Linux 2023などのOSを利用している場合はあらかじめインストールされているはずなので、この手順は不要です。

$ aws --version  #CLIのインストール状況、バージョン(AWS CLI バージョン2以降であること)を確認
 $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install  #CLIがない場合はインストール
$ aws --version   #AWS CLI バージョン2以降であること

2. CDKプロジェクトの作成

 CDKプロジェクトを作成するコマンドを実行します。

$ cdk init app --language typescript

 実行が完了したら、作成されたファイルを確認します。以下のようなディレクトリ構成になっているはずです。

 ここで、簡単にCDKアプリケーションの説明をします。CDKアプリケーションは「App」「Stack」「Construct」から構成されます。AppはCloudFormationテンプレートの生成とデプロイに利用するCDKアプリケーション全体を指し、Stackは幾つかのリソースをまとめたデプロイの最小単位、Constructはリソースとその設定を表現する構成要素です。

 上の画面で表示されているディレクトリとファイルの説明は次の通りです。

bin:CDKアプリケーションのエントリーポイントとなるファイルが配置されます。ここではlibで定義したAWSリソースを生成するためのコードを記述し、どのスタックをデプロイするかを指定します。

lib:AWSのリソースを定義するファイルが配置され、スタックという単位でAWSリソースの詳細な設定やリソースの依存関係を管理する役割を担っています。

package.json:Node.jsプロジェクトの設定ファイルで、CDKライブラリやその他の必要なパッケージのバージョン情報が記載されています。npm installコマンドでこれらのライブラリを一括でインストールすることができます。

cdk.json:CDKアプリケーションの設定ファイルで、CDKコマンドラインツールがアプリケーションを実行する際の設定が記述されています。

3. CDKコードの記述(VPCリソースの作成)

 それでは、実際にコードを記述していきます。まず、デプロイに必要な設定を行うため、binディレクトリ配下の「cdk-workspace.ts」というファイルをエディタで表示してみましょう。

 表示したファイルの14行目に、「env: { account: ~」という設定がコメントアウトされていると思います。これは、リソースをデプロイする際に、使用するAWSアカウントとリージョンを環境変数から取得するための設定です。デプロイ時に利用する設定なので、この行のコメントアウトを外しましょう。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。