【書評】「実践 AWS CDK – TypeScript でインフラもアプリも!」

技術書典応援祭で発売されていた「実践 AWS CDK - TypeScript でインフラもアプリも!」の書評です。これからAWS CDKを始める人や少し触り始めた人には有用な内容だと思ったので、各章でどんなことが書かれているのか簡単に紹介します。
2020.04.30

はじめに

CX事業本部東京オフィスの佐藤智樹です。

先月の技術書典応援祭で買ってからずっと積んであった「実践 AWS CDK - TypeScript でインフラもアプリも!」を読んで、CDKを始める際のイントロとして分かりやすくまとめていると思ったので紹介したいと思います。これからCDKを始めるという方はもちろん、既にAWS CDK使い始めてますという方にも体系立って説明が書かれているのでおすすめできる内容でした。

概要

販売ページより学べるポイントを引用します。

本書で学べるポイント ・AWS CDK の基本を紹介 ・AWS Step Functions を使ったサーバーレスワークフローの構築 ・Amazon Comprehend を使った感情分析処理の実行 ・AWS CDK プロジェクトの開発

実践 AWS CDK - TypeScript でインフラもアプリも!

  • 第1章 AWS CDK の概要
  • 第2章 AWS CDK のはじめかた
  • 第3章 TypeScript 入門
  • 第4章 Step Functions 入門
  • 第5章 感情分析システムを作ろう
  • 第6章 AWS CDK のデバッグとテスト
  • 第7章 AWS CDK の CI/CD
  • 第8章 AWS CDK Tips
  • 付録 A

個人的によかったポイント

以下へ個人的に読んでみてよかったポイントを3点ほど列挙します。

Core FrameworkやHigh-level APIなどについての説明がある

1章でAWS CDKに関する概要的な説明されています。AWS CDKについて明確に説明されている文章は日本語だとあまりないので結構貴重だと思います。全体像を最初になんとなく把握したり、ある程度理解してから読むとCDKの各所の実装や活用方法がより理解できるようになると思います。またHigh-level Construct とLow-level Construct の説明もあり、どのように使い分けた方が良いかまで書いてあるので、本番環境で使う前に一読しておくとかなり有用です。

Tipsが豊富

開発・ステージング・本番環境によって環境変数を変更する方法やSSMでのキー情報管理など自分たちも実務で使用しているようなTipsが豊富に書かれています。特にチーム開発で環境を整えたい場合や一人で開発していてどういう環境構成にした方が良いか分からない場合に役立つと思います。

サーバレスなシステムをCDKで開発する手法が分かる

4章まででTypeScriptやStep Functionsなどの紹介が終わって5章で感情分析システムの構築を行います。感情分岐システムの構築を通して、普段自分がやっているようなコンポーネントの追加やAWSリソースの追記などの作業が分かるようになっています。CDKを使ったワークショップは体感だとあまり多くはないので、CDKを始めたいという方はこの本で基本動作を学べると思います。

各章の紹介

以下各章の簡単な紹介と個人的な感想を記載します。

第1章 AWS CDK の概要

CDKの主要なコンポーネントの「Core Framework」、「Construct Library」、「CDK CLI」の紹介から始まります。その後AWS CDKを採用する際のメリット・デメリットが記載されています。メリットとしては一般的なプログラム手法を使用してインフラの記述ができることなどが挙げられています。

個人的にはCDKのメリットは多いと思っていましたが、デメリットに書かれている内容を改めて考えるとAWS自体が初心者だったりプログラム自体の経験が少ないと取っ付きにくい部分ももちろんあるなと振り返れました。

第2章 AWS CDK のはじめかた

CDKはCLIで使用するのでCLIを使用するための設定方法などについて記載されています。Node.js、AWS CLI、AWS CDK CLI、Gitのインストール方法から紹介されているので何も準備していなくても開始することができます。書籍内ではTypeScriptが押されています。TypeScriptについても次の章で説明があるので他の言語について知識があれば無理なく取り組めると思います。

ESLintやPrettierの設定も入っているので、TypeScriptの利点をすぐに感じられるようになっています。自分としてもTypeScriptはおすすめです。普段CDKを書いているとコードバインディングが効くのでドキュメント何度も読み返しにいかなくてもライブラリで記述が完結するのでYAMLでの記述に比べるとかなり楽になったように感じます。

第3章 TypeScript 入門

TypeScript自体に関する入門的な内容が記載されています。内容的には「速習TypeScript」のさらに簡易版のような感じでした。変数や型、配列、タプル、クラス、インターフェースなどの紹介があります。試したい場合は書籍な内部でもPlayGroundが紹介されているのでWebですぐにテストができます。

第4章 Step Functions 入門

AWS Step Functionsに関する入門的な内容が書かれています。CDKで書く場合だけでなく、ステートマシンの図やAmazon States Languageの記載があるのでStep Functionsについてあまり理解していなくても4章を読めば理解できるようになっています。並列実行や分岐などStep Functionsでできる制御の一部が書かれています。

第5章 感情分析システムを作ろう

先ほどまでの章の事前準備を経てAmazon Comprehendなどを活用した感情分析システムの構築が紹介されています。システムを作る中でCDKのモジュールを必要に応じて追加でインストールしたり、デプロイ用のファイルに追加したいAWSリソースを追加したりなど実際の構築時と同じような構成になっているので、本書の通りやることで開発スタイルなどがある程度分かるようになっています。

第6章 AWS CDK のデバッグとテスト

CDKのデバッグやテスト方法が解説されています。方法についてはVSCodeで紹介されています。デバッグでは一般的なコードと同じようにブレークポイントを設定した処理の中断とステップ実行が書かれています。またデバッグ用にコマンドライン引数やcdk.jsonからコンテキスト情報を作成する際の優先度についても記載があります。テストではCDKで提供されている「Snapshot テスト(Golden master テスト)」、「Fine-grained assertions テスト」、「Validation テスト」が紹介されています。こちらは弊社の記事でも紹介があります。

第7章 AWS CDK の CI/CD

開発・ステージング・本番環境それぞれでGitHub、CodePipeline、CodeBuildを使用したCI/CDの構成について書かれています。どの環境でのパイプラインは何を検証したいのか、Code Buildで何のテストを行うかなど大枠の内容から実践する際のソースコードまで記載があるので参考になりそうです。

第8章 AWS CDK Tips

何気に普段のCDK活用だと一番役に立つ章かもしれないです。上記のおすすめポイントでも挙げたように開発・ステージング・本番環境によって環境変数を変更する方法やSSMでのキー情報管理、スタック呼び出し時にカスタム値を渡す方法などすぐに使えるようなノウハウが書かれています。開発の中で培ったノウハウがたっぷり書かれているのでここだけでも結構な価値があると思います。

感想

AWS CDKを体系だった説明をする1章から始まり、システム構築に必要な知識の章から現場で使えるTipsまで記載されているので、身近でCDKを触っている人がいないときには非常に有用な本だと感じました。1章のあたりは特に雰囲気でCDKを使っているとあまり理解できていないこともあるので折に触れ見返したいです。Tipsについても今の会社に入らなければ知らないこともあったので、多くの方に有益な内容だと思います。