COLUMNニューソンコラム

2024.03.15

クラウドネイティブ開発における運用効率化 ~クラウドインフラ運用の課題を Terraform Cloud で解決~

  • Terraform Cloud
  • Terraform
  • IaC
  • クラウド
  • クラウドネイティブ
  • インフラ管理
img_CloudService

2018年に日本政府が発表したクラウド・バイ・デフォルト原則、クラウドファーストの方針を受け、官公庁、地方公共団体のみならず多くの民間企業でもクラウドサービスの利用が一般的となりました。また、新型コロナウイルスの影響や働き方改革を受け、テレワークが当たり前になった今日、クラウドサービス利用はランニングコスト削減だけでなくサービス品質の向上も見込め、事業を支える各種ITサービスを効率的に提供していくために有効な手段の一つでもあります。

クラウドサービスは変化の激しいビジネス環境で競争力を維持するにも有効です。IoTやAI技術などの最新技術導入から現行システムの老朽更新など、クラウドサービス上で開発、構築する事で、スピード感を持ってITサービスを提供、更新、改善していく事が可能になります。

クラウドネイティブ開発に関して、より詳しい紹介やクラウドサービスの特性を生かした解決などは こちら の記事でも紹介しておりますので、併せてご覧いただければと思います。

そのような中で、実際にクラウドサービスを導入してみると、理想と現実のギャップを感じることはないでしょうか。クラウドサービスのメリットを求めて導入したものの、セキュリティの担保、運用コストの増加、それらを補う人材確保の面で課題が見えて、思ったよりも効率が上がってない、予想以上にコストがかかっていると感じることがあるのではないでしょうか。

運用開始後に見えてくる理想とのギャップ

クラウドサービスのメリットを最大限に活用するためには、クラウドサービス上に各種ITサービスの開発や検証、商用環境を構築することも当然ながら、その環境を維持/管理/運用することも重要になります。

主に環境の維持/管理/運用において押さえておくべきポイントは以下の点です。
 ①実環境の設定値の把握
 ②構成と更新履歴の把握
 ③セキュリティの担保
 ④運用コストの把握
これらを管理簿の作成/整備を行って管理をするとなると、クラウドサービス有識者の要員を確保したうえで、それなりに工数も必要となってきます。

そのため、せっかくのクラウドサービス利用のメリットであるリソースの柔軟性、従量課金やリザーブドを利用した割り引きなどのコスト削減が可能な料金体系があったとしても、環境を更新する前には構成変更管理簿の準備、環境構築手順書の作成・更新、セキュリティ担保などに工数が掛かり、簡単にスピード感をもって環境を構築、更新する事が出来なくなってしまいます。これではクラウドサービスのメリットを十分に発揮できません。

例えば複数の環境構築を考えた際に、「セキュリティレベルの標準化」や、「環境間差分の管理」、「環境固有の設定値管理」などに多くの運用工数がかかっていないでしょうか。また、いざ構築の際には、人が手動で行うことで、ヒューマンエラーが発生する可能性もあります。それに対し安全性の高い構築を実現するためには、影響範囲の洗い出し、設計や実作業での複数人のチェック、承認などさらに多くの時間やコストが必要になってきます。

img_CloudComparison

デジタル庁が提唱する「政府情報システムにおけるクラウドサービスの適切な利用に係る基本方針」の中では、コスト削減やセキュリティのデフォルト化において Infrastructure as Code(以下 IaC )の技術が取り上げられており、インフラ構築/管理に欠かせない技術として認識されています。
本コラムではクラウドサービス利用において、理想と現実のギャップを解消し最小限のリソースで最大のメリットを受けるため、また安全な構築/運用を行うために有効な IaC という技術が、どのように役立っているのかを解説します。

IaC の特性と Terraform Cloud の選択

IaC とは、インフラの環境設定をコードとして記述し、そのコードをシステムに読み込ませる事で自動で環境構築するインフラ構築手法です。アプリケーションを開発する際のソースコードのように、環境構成をテキストで管理することが可能になります。
また、冪等性(※何度実行しても同じ結果が返ってくる)の担保を備えたツールもそろっており、変更が加えられていないコードは何度実行したとしても、同じ結果が返ってきます。

現在は様々な IaC ツールがありますが、当社では Terraform Cloud を使ったインフラ運用/管理に着目しています。

Terraform Cloud は、クラウドサービス個別のツールやサーバレスに特化したツールなどに対して、複数の異なるクラウドサービスを一括して対応するマルチクラウド管理を可能にします。さらに、単一のクラウドサービス内でもアカウント間を横断してリソースを管理できます。そのため、IaC ツールにおいてデファクトスタンダードとなっています。

Terraform Cloud を使用することで、構築環境を一元管理できます。それにより作業者間の差分を排除し、各クラウドサービスへの認証情報を一か所に集約できる利点があります。また、コードの履歴管理を行える Git などの構成管理ツールとの連携も容易で、運用フローの作成がスムーズに行えます。

imageScalability
Terraform Cloud で一元管理し、セキュリティレベルを標準化し環境を複製することも可能

インフラ管理/運用における Terraform Cloud の活用と課題解決

ここからは、Terraform Cloud を活用することで、先述の課題がどのように解消されていくのかについて説明しましょう。

1. 実環境の設定値を把握

Terraform Cloud ではコードを記述して格納する際、デプロイ環境毎にディレクトリを作成して複数環境を管理します。各ディレクトリの中には、それぞれの環境向けの設定値を変数定義ファイルとして配置し、メインとなるプログラムと合わせて実行することで各環境固有の値を設定していくことができます。そして、実際に構築した後にステートファイルが作成され、そのファイルの中には作成された各リソースの設定値が記載されており、ステートファイルを確認するだけで、リソースのパラメータが確認できます。そのため、別途パラメータシートを作成して管理することは不要となります。

2. 変更履歴を把握

Terraform Cloud の仕組みを使って、構築前に現在の構成との差分を確認できます。先述のステートファイルで構築毎に構成を管理しており、そこに記載されている内容と、これから構築する構成との差分を事前確認が可能になります。ステートファイルは履歴管理もされており、過去のステートファイルと構築履歴を確認することで、いつ、だれが、どのような構成変更を行ったのかを確認することができます。

3. セキュリティを担保

IaC は冪等性を担保してくれるため、複数環境への構成にセキュリティ設定を標準化することができます。同じクラウドサービスの各環境のセキュリティレベルを標準化する為に、セキュリティ設定のファイルを使いまわして構築を行うことも可能です。
それに加えて Terraform Cloud では、事前にポリシーを設定することで構築を制御することも可能で、この制御を行うことで、ガバナンスを効かせた構築を行うことが可能になり、セキュリティ要件に沿わない構築は中断させることができます。例えば、AWS でアクセス制限がされていない S3 バケットの作成を禁止すると、構築前のチェックでポリシー違反があるリソースを明確にし、脆弱性のある構築を防ぎます。

4. 運用コストを削減

デプロイコマンド、または GUI 上のボタン押下で構築が可能なため、実行者に特別高いクラウドサービスの知識は求められず、また構築手順書は不要になり、管理、構築の工数を削減できます。
Terraform Cloud は GUI での管理画面も優れており、構成変更点の抽出や構築履歴の可視化、リソース情報が記載されたステートファイルの閲覧、差分の確認ができるため、運用に必要なドキュメント類(環境変更管理簿、パラメータシート、コスト試算表)の作成、更新するといった手間を省きます。
また、構築されるリソースの費用概算も可視化されるため、事前の予算とのギャップや、リソーススペックの見直し、不要なリソース作成の抑止につながります。

imgTerraformCloud
Terraform Cloudには課題解決に有効な機能が備わっている

以上のように、Terraform Cloud の機能は人の手で行っていた運用・管理作業を削減し、クラウドサービスの有識者のみでの運用体制をとらずとも、管理に必要なものは自動的に作成されます。それに伴い、設計から構築までの時間は大幅に短縮され、クラウドネイティブ開発のメリットであるスピード感のある、最低限のコストで、安全な構築を実現していきます。

NTTデータニューソンの Terraform Cloud サポート

NTTデータ ニューソンでは、クラウドサービスを導入、検討している企業向けに、Terraform Cloud の導入をサポート提供しているほかにも、見直すべき不要な管理コスト、Terraform Cloud における設計から構築、そして運用管理方法の提供など、運用体制づくりも支援しています。特に、クラウドサービス運用の内製化をお考えのお客様へは、最低限抑えておくべき設定、お客様の開発特性に合わせたポリシー設定の提案、運用ルールの策定など、運用に必要なルール、弊社の運用ノウハウの提供を行っておりますので、ぜひご検討ください。

執筆者

ToshiyukiYamada
山田 敏幸
地域事業部 九州事業所 クラウドインテグレーション担当
アプリケーション開発やインフラ構築における構成管理検討、CI/CD のシステム構築の支援業務に従事。現在はクラウドネイティブ開発やインフラ運用を自動化、効率化を行う提案、実装、教育を担当。