16K Views
June 01, 22
スライド概要
JAWS-UG CDK支部 #1 でのLT登壇資料です。
https://jawsug-cdk.connpass.com/event/246765/
経済ニュースアプリのSREの仕事をしています。
JAWS-UG CDK支部 #1 LT インフラエンジニアが CDK in TypeScriptを推す理由 2022/6/1 Yuki Ando
Yuki Ando / あんどぅ SIerのインフラエンジニア10年選手→AWS好きの駆け出しSRE 経済ニュースメディアのSREチーム所属 好きなAWSのサービス:ECS、Cost Explorer、CDK 好きなSREのプラクティス:SLO、非難なきポストモーテム文化 @integrated1453 JAWS-UG SRE支部 2
\インフラエンジニアのみなさん/
CDKでTypeScriptのプログラミングをすることに ハードルを感じていませんか??🤔
わ か り ま す 🥺 (インフラエンジニア、スクリプトは得意だけど アプリケーション開発で使うような静的型付け言語に 苦手意識を持ってるイメージ。私もそうでした。)
10年インフラエンジニアの私が CDK in TypeScriptを使って「好き…🥰」 となったポイントをお話します
CDKと私 CDK自体はGA前のβの頃から触っており、かれこれ3年以上になりますが、 TypeScript歴はまだ半年くらいです 2018年夏頃〜 CDK β (JavaScript) コマンドでAWSリソースのdi 取って 適用(deploy)できる!すごい!😍 マネコンぽちぽちから卒業したい! 2019年7月頃(GA後)〜 CDK (Python) Lambdaと同じPythonで書ける! Pythonの勉強がんばるぞ〜〜〜💪 2021年10月〜 CDK (TypeScript) CDKやるならTypeScriptだって みんなが言うから・・・🥺 (転職先がCDKガチ勢だった) ff 7
CDKのいいところ 言語は関係なく、CDKはいいぞ プログラミング言語でAWSリソースを抽象化・モジュール化できる 繰り返しや条件分岐でコードが冗長にならない。関数やモジュールにして再利用が容易。 CFn Stack間の依存関係・デプロイ先行関係をCLIで解決できる CloudFormationの複数のStackを「必ずこの順番で実行する」ということがCDKのCLIだとできる High Level Constructs (L2 Construct) AWSのベストプラクティスがあらかじめ定義されているので必須パラメータが少なく、便利カスタムリソースも作ってくれる AWSサポートが手厚い デプロイの実行/失敗はCloudFormationに記録されるので、マネコンで確認して困ったらサポートに助けてもらうこともできる 8
TypeScript、よさそう プロを目指す人のためのTypeScript入門 より ❞ ❝ 静的型付けを備えた ロ ラミン 言語は多々あります 、 その中 もTypeScriptの型システムは他に類を見ない高い 表現力を持っています。 高い表現力というのは、簡単に言え 型 いろいろなロ ッ クを表すこと きるということを指しています。 が ジ で ば グ グ プ で が で 9
CDK in TypeScriptを推す理由 型があるJavaScriptってすばらしい 1 CDK自体のソースコードがTypeScript CDKにコントリビュートしようと思ったらTypeScriptに慣れていたほうが有利(やったことはないです😇 2 パラメータの補完と渡し間違い防止・早期検出 Stackや関数の引数にConstructを渡すようにすればIDEのIntelliSense・Lintで快適な開発者体験😍 3 インフラのデプロイをする上での環境制約を型に定義できる 「この設定は必ず指定してほしい!」とか「この値しか検証できてません!」を制約としてIDEに表示できます 10
CDK in TypeScriptを推す理由 型があるJavaScriptってすばらしい 1 CDK自体のソースコードがTypeScript CDKにコントリビュートしようと思ったらTypeScriptに慣れていたほうが有利(やったことはないです😇 2 パラメータの補完と渡し間違い防止・早期検出 Stackや関数の引数にConstructを渡すようにすればIDEのIntelliSense・Lintで快適な開発者体験😍 3 インフラのデプロイをする上での環境制約を型に定義できる 「この設定は必ず指定してほしい!」とか「この値しか検証できてません!」を制約としてIDEに表示できます 11
型があると便利だと思った時の例 CloudWatch Container Insightsで、ECSのコンテナごとのCPU,Memory使用率を モニタリングしたい!! サイドカーがどれくらいのリソース使ってるか気になりません? 12
型があると便利だと思った時の例 ECSのコンテナごとのCPU,Memory使用率を表示するには、タスク定義で コンテナごとにソフトリミットを設定する必要がある コンテナ単位でリソースをモニタリングしたいので、サイドカーも含めて漏れなく ソフトリミットを設定することを必須にしたい! 13
型があると便利だと思った時の例 『xxServerContainerResources』という型を作って、Stackのパラメータとして受け取る 型の定義 Stackの引数で記載する時 指定しないとIDEが叱ってくれるし、 プロパティの補完してくれるし、 numberを入力すればいいということがわかる! 14
CDKで型があると便利だと思ったこと 型ってすごい!手元のIDEと対話しながら進められて 開発者体験がすごく良い cdk lsの時にエラーで怒られることがなくなったし、 cdk deploy時に怒られる不安も減った インフラとして期待している入力を型というロジックに 持たせることができるので、もっとTypeScriptの型を 使いこなしてIaCのメンテナンス性を高めたい 15
\ご清聴ありがとうございました/