severless framework vs cdk
22時に寝て1時に起きて5時半に起きた。前日はあまり寝てなかったので知らないうちに寝てしまった。
severless framework と cdk の比較⌗
serverless framework というツールがある。マルチクラウド対応で aws で言えば lambda のような、サーバーレスのアプリケーションを簡単にデプロイするためのツール。よく使われているようで、私がお手伝いしている会社でも lambda 関数のデプロイにこのツールを使っている。いろいろ調べていたら、serverless framework は cdk と真正面から競合になるツールで、cdk をすでに使っているなら cdk に一元管理した方が保守コストが下がっていいだろうと考え、新たに lambda 関数を作る作業を cdk でやってみた。私はほとんど serverless framework を使ったことがないので正しく理解できていない可能性は高いが、ざっくり比較すると次になる。
serverless framework⌗
メリット
- cdk より学習コストが低い
- yaml 設定だけで簡単にデプロイできる
デメリット
- リソース管理のための s3 バケットを必要とする
- lambda に関連するリソースしかデプロイできない
- 開発者が明示的に設定しなくても裏でリソースを勝手に生成するので意図せず適切に管理されていないインフラを作ってしまう懸念がある
- 大半の実務レベルのアプリケーションでは cf テンプレートの dsl を yaml に設定する必要があり、設定が煩雑になったり見通しが悪くなる
cdk⌗
メリット
- 任意の aws インフラのリソースを管理できる
- プログラミング言語で記述できるので動的なリソースの依存関係を定義できる
- cf は裏に隠蔽されているが、serverless framework のような dsl を記述する必要はない
デメリット
- 学習コストが高い
リファレンス
結論から言うと、将来的に cdk を使うならまず cdk を使った方がよい。本当にシンプルな要件で lambda 関数のインフラしか扱わないなら serverless framework でもいいかもしれない。serverless framework は cdk がない時代に作られたツールだろうからいまから新規に導入する場合は、多少の学習コストを払っても cdk を学んでおけば、将来的に役に立つ場面が多いと思う。
Read other posts