はじめに
はじめまして。エンジニアのちゅげです。
ここ数年クラウド開発で、環境構築からアプリケーション開発まで担当することが多くなりました。
そこで、Infrastructure as Code(IaC) を使うことのメリットを多く感じるようになったので、昨年7月にGAとなった AWS Cloud Development Kit(AWS CDK)を1年程使用して感じた事を紹介したいと思います。
AWS CDKとは
AWS Cloud Development Kit (AWS CDK) は、使い慣れたプログラミング言語を使用してクラウドアプリケーションリソースを定義するためのオープンソースのソフトウェア開発フレームワークです。https://aws.amazon.com/jp/cdkより
簡潔に説明すると、CloudFormationテンプレートでJSONやYAML等を使用した構造化ファイルでなく、使い慣れた言語(TypeScript, Python, .Net etc…)でリソースの定義が可能となるフレームワークになります。
メリット
CDKを使用して感じているメリットを紹介します。
よく見かけるようなメリットかもしれませんが、実際に使用していくと小規模案件でも何故使わないのかと思うようになってきます。
- 構築時のヒューマンエラーが少ない
手動でリソースを作成する場合と比べて、環境構築時の作業漏れが殆ど発生しません。
- (CloudFormation と比べて) 学習コストが低い
最終的に出力されたテンプレートを確認するので、知識が不要という訳にはいきませんが、普段書きなれている為、導入障壁は低いと思います。
- 実装量が少なくすむ
CDKの Constructs を使用することで、CloudFormation よりも少ない記述でAWSのベストプラクティスに従った設定をすることが可能になります。
- レビューが容易
普段のアプリケーション開発と同様の言語を使用する為、コードレビューが容易になります。
- 使用しているリソースが一目でわかる
こちらはCDKに限った話ではありませんが、コードでリソースを定義している為、AWS マネジメントコンソールから手動で作成した場合と比較して使用しているリソースが明確です。
- 環境構築が容易
こちらもCDKに限ったことではありませんが、開発・本番環境等に素早く同じ設定のリソースをデプロイすることが可能となります。
デメリット
CDKを褒めちぎりたいところではありますが、使用していて感じているデメリットについても紹介させて頂きます。
- バージョンアップが早い
開発が活発な事は喜ばしいのですが、ハイクラス Constructs を使用していると破壊的変更により型が変わる事があります。その為、バージョンアップを長い間放置しておくと、メンテナンスコストが高くなります。
おわりに
今回はAWS CDKのメリット・デメリットについての紹介をさせて頂きました。
導入時の初期コストが多少高くなりますが、それ以上にメリットが大きいと感じています。
そろそろインフラ定義もコードにしてみようかなと思った方は是非、CDKを試してみて下さい。
次回はCDKを使った環境構築についての例を紹介させて頂きたいと思います。