Infrastructure as Codeに関する技術書籍を執筆しました(Part.2)

(2021.06.28更新) 物理本入庫しました! booth.pm

Overview

非常に久しぶりのエントリとなります。タイトルの通り、Infrastructure as Codeに関する書籍を執筆しました。 A5版で122ページ1500円で販売中です!

booth.pm

Part.2としているのはすでに共同執筆者の Masaya Arai (iselegant) (@msy78) | Twitterさんが概要と目次、少し書籍について触れたエントリをしているためです。

iselegant.hatenablog.com

私のエントリではその続きとして、目次の再掲とCloudFormation、CDKの章について少し触れていきます。

目次

まずは目次についてです。今回、期間が短かったにもかかわらず執筆ブーストしたことでかなり盛りだくさんな内容になりました。本文に加えて、各IaCで作成したサンプルコードもつけているところがポイントです。 また各章の書き口を可能な限り揃えることで読者の方が前の章と比較して読みやすいように意識をしました。


  • まえがき
  • 第1章はじめに
    • 1.1 Infrastructure as Codeとは
    • 1.2 なぜInfrastructure as Codeが必要か
      • 1.2.1 構築における再利⽤性と冪等性
      • 1.2.2 コード〜ドキュメントにおけるパラメータ値の乖離
      • 1.2.3 改定証跡の担保
      • 1.2.4 アプリケーション開発者とのコラボレーション
    • 1.3 本書の位置づけと構成
    • 1.4 各章のサンプルコードで取り上げるAWS構成
    • 1.5 本書で扱うバージョン情報
  • 第2章 CloudFormation
    • 2.1 概要
    • 2.2 基本編
      • 2.2.1 CloudFormation のアーキテクチャ
      • 2.2.2 テンプレート
      • 2.2.3 スタック
      • 2.2.4 変更セット(Change set)
      • 2.2.5 CloudFormation の基本動作と基本⽂法
    • 2.3 応⽤編
      • 2.3.1 クロススタック参照
      • 2.3.2 ドリフト検出
      • 2.3.3 CloudFormation Resource Import
      • 2.3.4 カスタムリソース
      • 2.3.5 その他
      • 2.3.6 注意すべき点
    • 2.4 筆者のオススメポイント
      • 2.4.1 特殊なツールいらず
      • 2.4.2 定期的なドリフト検出による整合性の担保
      • 2.4.3 cfn-lint による記述内容のチェック
    • 2.5 まとめ
  • 第3章 AWS Cloud Development Kit
    • 3.1 概要概
    • 3.2 基本編
      • 3.2.1 CDK Toolkit
      • 3.2.2 Core Framework
      • 3.2.3 Construct Library
      • 3.2.4 AWS CDK の基本動作と基本⽂法
    • 3.3 応⽤編
      • 3.3.1 クロススタック参照
      • 3.3.2 環境に応じた設定値の注⼊
      • 3.3.3 困ったときはL1 に変換する
      • 3.3.4 注意すべき点/制約事項
    • 3.4 筆者のオススメポイント
      • 3.4.1 AWS CDK Roadmap が公開されている
      • 3.4.2 制御構⽂やエラーハンドリング、テストコード
      • 3.4.3 diff が簡単に確認できる
      • 3.4.4 少し⾵変わりなAspects という機能
    • 3.5 まとめ
  • 第4章 Terraform
    • 4.1 概要
    • 4.2 基本編
      • 4.2.1 Terraform のアーキテクチャ
      • 4.2.2 リソース作成までの流れ〜Write, Plan, Apply
      • 4.2.3 モジュールによるリソース定義の集約
      • 4.2.4 モジュール利⽤に必要な標準構成
      • 4.2.5 Terraform Registry の活⽤
    • 4.3 応⽤編
      • 4.3.1 tfstate のバックエンド管理と排他制御
      • 4.3.2 リポジトリ統合によるCI/CD
      • 4.3.3 注意すべき点/制約事項
      • 4.3.4 さらなるプラクティスに向けて
    • 4.4 筆者のオススメポイント
      • 4.4.1 ナレッジが⾮常に豊富
      • 4.4.2 多様なクラウド・PaaS・SaaS のプロバイダに対応
      • 4.4.3 Terraform Cloud やその他OSS ツールの充実
    • 4.5 まとめ
  • 第5章 Pulumi
    • 5.1 概要
    • 5.2 基本編
    • 5.3 応⽤編
      • 5.3.1 ステートの管理
      • 5.3.2 Github Actions によるCI/CD 統合
      • 5.3.3 注意すべき点/制約事項
      • 5.3.4 プラクティス
    • 5.4 筆者のオススメポイント
      • 5.4.1 IaC の中で最も⾃由度の⾼いサービス
      • 5.4.2 クラウドが提供するAPI を100% サポート
    • 5.5 まとめ
  • 第6章 IaCサービスの選びかた
    • 6.1 どの IaCサービスもそれぞれの良さがある
      • 6.1.1 優れた開発者体験の重要性
      • 6.1.2 ビジネス要件への配慮  6.2 開発者体験を重視した評価軸からの考察
      • 6.2.1 言語の選択性
      • 6.2.2 ドキュメントや情報の充実さ
      • 6.2.3 シンプルで高速な開発
      • 6.2.4 コミュニティの充実性
    • 6.3 ビジネス要件観点からの考察
      • 6.3.1 コンプライアンス要件
      • 6.3.2 コスト
      • 6.3.3 開発体制とサポート
      • 6.3.4 セキュリティ
      • 6.3.5 効率性
    • 6.4 各IaC利⽤のユースケース
    • 6.5 よりよいIaCライフを送るために
      • 6.5.1 まずはIaC を試してみる
      • 6.5.2 事前に⼿作業でクラウドを構築してみる
      • 6.5.3 Dry Run が成功してもうまくいくとは限らない
      • 6.5.4 全リソースのIaC 化は本当に必要か
    • 6.6 まとめ
  • 付録A IaCのサンプルコード
  • おわりに

2章:CloudFormationについて

すこし書籍の内容に踏み込んで行きます。 2章では、AWSを使ってIaCをするときに真っ先に選択肢にあがる「CloudFormation」を題材として取り上げています。 CloudFormationを実行する流れと裏側の簡単な仕組みに加え、10年もの間の歴史を誇るなかで順次開発されてきた機能を応用編として取り上げました。 運用をする際に役立つドリフト検出カスタムリソースインポートなど、ユーザがIaCをする上で悩んでいた機能にも触れています。 数年前にCloudFormationに触れていた人にとっては「こんな進化してるんだ!」となる機能が盛り沢山なCloudFormationです。

f:id:horsewin:20210627181304p:plain

3章:CDKについて

3章ではAWSが開発したOSSである、CDKに触れています。 CloudFormationでは実現できない、プログラミング言語でリソースを定義するIaCサービスです。プログラミング言語で各リソースを定義できることにより、大きく次のメリットがあります。

  • IDEによる補完の恩恵を最大限受けられる
  • デフォルト設定が組み込まれたAWS Construct Libraryといった抽象化部品の活用

特に2つ目のAWS Construct Libraryにより、CloudFormationと比較して記述量を圧倒的に減らしてシンプルにコーディングもできます。基本編からEscape hatchとしてCloudFormationのAPIをコールする使い方、ハマりどころなどについて触れています。個人的にはAWSでIaCをするならばぜひ勧めてみたいIaCサービスです。

f:id:horsewin:20210627181755p:plain

サンプルコード

本書には4つのIaCサービスのサンプルコードリンクを付録でつけてます。 ちなみにサンプルコードで作成されるAWSリソースはこちら↓

f:id:iselegant:20210619225336p:plain

シンプルな構成ですが、一応ECS/Fargateのモダンな構成上に、Go言語APIをデプロイするためのリソースを一式作ってくれるものを用意しました。 サンプルコードは全てCloud9で動かせるので、AWS上で完結します。 READMEにそれぞれの実行方法とかも載せています。 本書で特徴を掴みながら、ハンズオン感覚でぜひ体験していただければと思っています。

最後に

今まで時間があったら書きたかった内容を今回共同執筆者の Masaya Arai (iselegant) (@msy78) | Twitterさんと夜中までともにブーストしながら書き上げました。我ながら良い内容になったと感じており、満足しています。表紙は前作と同じ方に可愛くしたててもらいました。 本の内容と購入可能な経路は現在下記のとおりです。気になる方は是非お買い求めください。A5版で122ページ1500円、別途サンプルコード付きです。

個人的には、ぜひIaC好きな人とお話しもしたいので、技術書典11オフラインイベントにお越し下さい!ではではー。

BOOTH

物理本は現在倉庫で入庫作業中です。物理本を求めている方は他の経路も参考にください。

(2021.06.28) 物理本入庫しました! booth.pm

技術書典11

オンライン/オフラインともに参加予定です。オフラインイベントは7/11(Sun)に開催されます。オンライン/オフラインともに物理本も取り扱う予定です。

techbookfest.org

メルカリ

メルカリ分は2021/10/18現在、完売しています。