AWS CDK
公式サイトAWS CDKとは
AWS CDK(Cloud Development Kit)は、AWSのインフラ構成をTypeScriptなどの一般的なプログラミング言語で記述し、自動で構築・変更するためのツールです。記述した内容は内部でAWS CloudFormationの定義に変換され、AWSの標準的な仕組みで適用されます。専用の設定言語を使うTerraformと異なり、プログラミング言語の機能をそのまま使えるため、繰り返しの構成や条件分岐を簡潔に書け、よく使う構成を部品として再利用できます。AWSが公式に提供・保守しているため、新しいサービスへの対応も早いのが特徴です。
弊社が採用する理由
弊社では、Next.jsやFastifyなどTypeScriptでアプリケーションを開発する案件で、AWSのインフラ構成をAWS CDKで管理しています。採用の理由は、アプリケーションとインフラを同じ言語で書けるため、開発者が構成を読み書きしやすく、画面やサーバーの変更とインフラの変更を同じ流れで扱えることです。たとえばコンテナの実行環境、データベース、ファイル保存、メール送信、非同期処理の受け渡しといった構成を、型の補完を受けながら記述でき、誤った設定はコードの段階で検出できます。適用はCloudFormationの仕組みを通るため、変更の履歴と切り戻しがAWSの標準機能で管理されます。複数のサービスをまたぐ構成や、汎用性を重視する案件ではTerraformを選ぶこともあり、チームの言語の慣れと構成の性質で使い分けています。
向いている案件
- TypeScriptで開発するアプリケーションのAWS環境の構築
- コンテナやサーバーレスなどAWS固有のサービスを多く使う構成
- よく使う構成を部品化して複数の案件・環境で再利用したい場合
保守・移行の観点
AWS CDK本体と構成部品のライブラリは更新頻度が高く、更新によって生成される構成に差分が生じることがあります。更新後は差分の確認を行い、意図しない変更がないことを確かめてから適用します。内部で使われるCloudFormationの制約を受けるため、変更内容によっては資源の作り直しが発生することがあり、データベースなど消えては困る資源には削除防止の設定を入れておきます。アプリケーションと同じリポジトリで管理する場合は、依存関係の棚卸しをアプリケーションと合わせて計画すると効率的です。
組み合わせて使う技術
よくあるご質問
AWS CDKで作った環境は、他社でも保守できますか?
AWS CDKはAWSが公式に提供するツールで、TypeScriptで記述されているため、AWSとTypeScriptを扱える開発会社であれば対応できます。構成の説明資料も納品物に含めています。
CloudFormationを直接書くのとどう違いますか?
AWS CDKはCloudFormationの定義をプログラミング言語で生成する仕組みです。記述量が減り、再利用や条件分岐が書きやすくなる一方、適用の仕組み自体はCloudFormationと同じです。
関連するサービス
関連する開発ガイド
監修: Unlogical Systems合同会社(杉並区・西荻窪)公開