AWSのIaCを実現する上で、必須であるAWS CDK (Cloud Development Kit)。
利用を検討する上でまず直面するのがプログラミング言語の選択かと思います。
今回は、そんなAWS CDKの言語選択についてまとめてみました。
目次
2023年5月現在、AWS CDK が対応している言語は、JavaScript・TypeScript・Python・Java・C#です。
開発者プレビューでは Go もサポートされています。
あらゆる言語に対応しており、「自分の得意な言語を選択すればよい」と思う方も多いのではないでしょうか。
AWS CDKを使う上では、今現在ではTypeScript一択です。
仮に得意な言語が他にあったとしても、結論は同じです。
主な理由を下記にまとめます。
公式・非公式、また国内・国外問わずリファレンスの数が圧倒的に違います。
発展中であり、技術的な変化が激しいAWS CDKにおいてはこの点が大きな理由となります。
実装をする上で実装例を探すことも多いと思いますが、TypeScript以外だとなかなか見つからないという状況に直面すると思います。
そもそもIaCで定義するのは、インフラリソースつまりオブジェクトです。
そのためオブジェクト指向に向いていることや型定義ができることは重要なポイントです。
この点と記載量のバランスを考慮すると、個人的にはTypeScriptが最も優れていると思います。
AWS CDKをTypeScriptで実装するにあたり、必要なスキル・知識がいくつかあります。
全て必須というわけではなく、触りながら覚えていくことも可能ですが、しっかり使いこなせる状態になるためには以下のようなスキルが必要になると思います。
TypeScriptはそれほど難しい言語ではありません。
ただし、当然使いこすためには書き方や関数に関する知識がない状態で実装し始めるのは好ましくありません。
CDKではCloudFormationを生成し、それがAWSリソースとなります。
インフラリソースというオブジェクトを作成するための言語であるため、オブジェクト指向を理解しておくことは重要です。
たとえソースコードにバグがなかったとしても、既存のリソースを別のリソースとして置き換えるような変更を意図せずに生んでしまった場合、
既存リソースが削除されたり停止するというような不具合が発生します。
CDKではビルドするとCloudFormation (jsonファイル)を生成します。
デバッグをする際にもCloudFormationの画面から確認するため、CloudFormationを記載できる必要はありませんが、画面や仕様の理解をしておくことをおすすめします。
これはCloudFormationと同じですが、インフラリソースは通信制御の設定を誤ったりするとセキュリティリスクがあります。
AWSリソースの課金方式を理解していないと想定以上にコストがかかることもあります。
AWS CDKのリファレンスを読んで、クラスやメソッドの仕様を理解するのも大事ですが、前提として扱うリソースの基礎知識は知っておきたいです。
意外と重要なのがこの点です。
AWS CDKでは、実行速度などを意識する必要がない反面、とにかく読みやすく管理しやすいことが重要です。
コメントを一貫した記法で行うことで、それらを実現できるようになります。
今回は AWS CDK の実装に用いるプログラミング言語としてTypeScriptがおすすめである理由を説明しました。
ただし前述の通り、発展中のサービスなだけあって今後他の言語での利用が使いやすくなっていく可能性はあります。
ぜひ公式リファレンスや実装例を実際に調べてみてください。