【IaC導入を成功させよう】IaCジャーニーマップを作ってみた

2023.12.18

みなさん、IaC(Infrastructure as Code)好きですか?(挨拶

このブログではIaCジャーニーマップをご紹介したいと思います。

IaCジャーニーマップ とは?

一言でいうと「IaC導入を成功させるためのステージ分けされたプロジェクトの全体像、 ロードマップ」です。

私が所属するチームでは様々な企業のIaC導入をお手伝いしていますが、お客様の状況によって「どのように導入するのが良いか?」はもちろん様々です。その中で、我々がオススメする「こういうステップを踏んでいくと良いですよ」「お客様は今この段階なので、次はこれをやりましょう」といった具合に使うことができるロードマップや指針となるものがあると良いと考え、このマップを作りました。

ただし、このIaCジャーニーマップや記事内容は、あくまで現時点のバージョンであり、今後アップデートする可能性がありますので、その点ご了承ください。

ターゲット

  • インフラエンジニアやシステム管理者のチーム
  • IaC入門者・初学者
  • IaCに興味はあるけど、まだ自社に導入できてない人
  • 自分は活用できているが、チームや組織レベルでの活用方法に悩んでいる人
  • IaC導入といっても、どこから手をつけていいのかわからない人 etc

IaCジャーニーマップ

IaCジャーニーマップでは、ユーザーのIaC活用段階に合わせて5つのステージに分けています。

  • Stage.1 クラウド導入
  • Stage.2 IaC導入
  • Stage.3 デプロイパイプライン
  • Stage.4 スキャン・テスト・ビルド
  • Stage.5 発展的なIaC活用

また、各ステージごとに適したツールやサービスをリストアップしています。

それぞれのステージによくある課題や、ToDoリスト、ゴールを以下でご説明します。

おまけ)イメージイラスト

各ステージごとで実現されることのイメージとなるイラストも作っていただきました。 各ステージごとにイメージアイコンとして添えてご説明します。

Stage.1 クラウド導入

すでにパブリッククラウドを活用している場合はこのステージはすでに完了となりますが、まだ経験や実績がない場合(PoCを含む)、まずはクラウドを活用してみるところからスタートします。

課題

  • オンプレミスでの限界を感じてきている
  • クラウド活用が進まない

ToDoリスト

  • AWSやGoogle Cloud,Azureなどのパブリッククラウドを触ってみる
  • クラウド活用のPoCに着手する

ゴール

  • クラウド活用のスタートを切ることができた

Stage.2 IaC導入

続いて、このステージではIaCツールを使用し、実際にクラウドインフラをコントロールしてみます。

課題

クラウド導入を開始したが...

  • 構築作業手順が定まっていない
  • 同じインフラを環境単位で複製する際に、同じものを作るだけなのに時間がかかる
  • 構築手順がUI画面操作ベースなので、作業者によって設定差分が生まれしまう etc

ToDoリスト

  • 各IaCツールを比較検討・選定する
  • ローカル環境からIaCツールによりインフラのデプロイを実施する
  • すでに手作業で作成したクラウドインフラの管理をIaCツールにインポートする etc

ゴール

  • インフラ構築スピードアップ
  • 手作業によるヒューマンエラーの低減
  • 再利用性が向上
  • 個人がIaCツールを利用できている状態

Stage.3 デプロイパイプライン

続いて、デプロイパイプラインのステージです。こちらでは、前のステージでIaCツールによるインフラの個人開発が可能になった状態がゴールとしていますが、このステージではチーム開発が最低限できる状態を目指します。そのために鍵となるのが"デプロイパイプライン"です。

デプロイパイプラインとは、IaCによるインフラのデプロイ方法や設定が共通化され、チームで利用可能なワークフローを1本通すことです。例えばGitHubリポジトリへのコードのプッシュをトリガーに、IaCツール実行環境にてインフラコードが実行し実環境へのデプロイまで完了といったことが可能になります。

課題

IaC導入したはいいが...

  • 複数人での開発で競合・意図しない変更が発生
  • 誰でもローカルからデプロイできてしまう
  • コマンドの手動実行による手間・オペミス
  • 責任者の承認なく意図しないインフラの構成変更が行われてしまった

ToDoリスト

  • 各自がローカル環境から実行するのではなく、共通のIaC実行環境へ切り替える
  • デプロイパイプラインを通す

ゴール

  • インフラ変更/デプロイのプロセスが自動化
  • コード変更をトリガーにインフラ変更までの作業フローが定義されている
  • デプロイに向けた手作業が最小化された
  • 手動承認プロセスを設けることができた
  • チームがIaCツールを利用できている状態

Stage.4 スキャン・テスト・ビルド

このステージでは、↑で開通したデプロイパイプラインの過程で、組織の課題に応じた処理ができる状態を目指します。ステージ3まではほぼどんな組織も同じ道を辿りますが、このステージ4からは組織が持つ課題の優先度によって、やることが分岐します。カテゴリとしてはセキュリティ・ガバナンス・コスト・パフォーマンスといった観点が挙げられます。

課題

デプロイパイプラインも順調に稼働し始めたが...

  • コード量が増えてきたので、潜在的なリスクを排除したい
  • 利用部門が自社のガイドラインに違反したインフラコードのプルリクエストを上げてくる
  • コードレビューの負荷が高まっている
  • 必要かわからないインフラが存在し、コストが増大している
  • デプロイするインフラコードのテストができていない

ToDoリスト

  • インフラコードの静的セキュリティスキャンを取り入れる
  • Policy as Code を導入し、自社ポリシーに違反した変更をはじく
  • インフラのデプロイ前にコストチェックを取り入れる
  • インフラコードのUnit/E2Eテストを取り入れる

ゴール

  • コードレビューの負荷が軽減された
  • 潜在的なセキュリティリスクを検知できるようになった
  • デプロイ前にコストが把握できるようになった
  • テストを通過したシステム変更だけが環境適用されるようになった

Stage.5 発展的なIaC活用

このステージでは、IaC基盤が確立され、運用が回っている状態となります。そうなるとより高度な仕組みづくりに取り組むことができます。以下にはその一例となります。

ToDoリスト

  • インフラのセルフサービス化
  • No-Code Provisioning(Terraform Cloud)
  • AWSアカウント払い出し&ベースライン設定 etc

終わりに

今回は「IaCジャーニーマップ」を紹介しました。IaC導入や活用促進に課題を感じているお客様は、ぜひ一度クラスメソッドに気軽にご相談ください!