IaCの学習|Infrastructure as Code

前から興味のあったIaCについて学ぶ

今週は1週間ほどかけてIaCの学習をしていました。IaCというのは、イミュータブルインフラストラクチャを始めとして、コードベースでサーバーインフラの定義を書き、反復性や再現性を持って、使い捨てにできるステートレスで自動化されたインフラ環境を構築・運用するための方法論のことです。

クラウドネイティブな環境について学習しているとIaCのアプローチについて、自然と興味が湧くようになってくると思うので、その興味のままに勉強して、実際に実装してみようと考えているところです。自分自身で、今後長期的に運用保守をしていくような自社プロダクトができたときには、力を発揮してくれる技術だと思いますので、その時に向けて地道に準備を進めていこうと思います。

Infrastructure as Codeの書評

第I部 基礎

第一部の基礎では、課題と原則、ダイナミックインフラストラクチャプラットフォーム、インフラストラクチャ定義ツール、サーバー構成ツール、主要なインフラストラクチャサービスという構成でした。

IaCを実現する上で必要な環境やツールなど、基本的なことを学ぶことができました。本書籍は2017年初版で、2019年第2版なので、2023年現在では、少しだけ古さを感じることがありましたが、まだまだ基本的なことは使えるとは思います。AWSなどのクラウド環境のことをダイナミックインフラストラクチャプラットフォームという表現を使っていましたが、IaCを実現する上では、基本的にモダンでクラウドネイティブな開発環境を前提にしているということがわかってきました。

第II部 パターン

第二部のパターンでは、サーバーのプロビジョニングのパターン、サーバーテンプレート管理のパターン、サーバーのアップデート/変更のパターン、インフラストラクチャ定義のパターンという構成でした。

第二部では、具体的な設定の内容について、4つの目線から解説されておりました。具体的にIaCのツールを使ったことがない人にとっては、どのような設定値を書くものなのかを垣間見ることができて、少しイメージを沸かせることができたと思います。第1部と第2部の2つを読めば、IaCの基本的なことは理解できるので、時間がない方は前半の1~2部を学ぶと良いと思いました。

第III部 プラクティス

第三部のプラクティスでは、インフラストラクチャのためのソフトウェア工学プラクティス、インフラストラクチャの変更のテスト、インフラストラクチャの変更管理パイプライン、インフラストラクチャチームのワークフロー、継続性とダイナミックインフラストラクチャ、Infrastructure as Code のための組織という構成でした。

第三部では、継続的インテグレーションやデプロイパイプライン、DevOpsに関すること、運用に関すること、チームや組織での取り組み方など、IaCを取り巻く開発現場の全般的な内容でした。他のオライリーの書籍を読んだことがある方にとっては、当たり前の環境について述べているセクションなので、特に読む必要はないと思いますが、米国での開発現場についてあまりよく知らない方からすると、勉強になることも多いかもしれません。全体的に初心者向けに開発環境や開発組織のことについて、学ぶ上で有益な内容になっていると思いました。

今秋の製品開発に向けてIaCの学習を

コンテナ技術の発展に合わせて、着目されるようになった手法だと思いますが、実際に今秋から始める予定の自社製品にはコンテナ技術を用いてIaCの構築を行う予定ですので、今回基本的な内容を学習してみました。今勤務している大手のSI企業の案件でも、クラウドネイティブな案件には参画をしていないため、まだまだ今回学んだ知識を生かす機会は少ないかもしれませんが、いつか役に立つ将来に向けて準備を地道に進めていこうと考えています。

大手のエンタープライズ向けのアプリケーションをクラウドネイティブに構築する際に、インフラの定義から入れるような案件がもしあれば、その時は提案に含めていこうと思います。それはさておき、まずは自社製品に適用することで経験を積んでいきたいと思います。

習うより慣れろとは言いますが、まずは習う派なので、地道に学習を積み上げていこうと思います。次の学習書籍もオライリーの書籍で「モノリスからマイクロサービスへ」を読んでいきます。積読は残り11冊。頑張って読み進めていきましょう。