Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS CDKを4〜5年使ってたどり着いた最新構成
Search
soso
December 06, 2023
1
1.4k
AWS CDKを4〜5年使ってたどり着いた最新構成
soso
December 06, 2023
Tweet
Share
More Decks by soso
See All by soso
TiDB Serverless ~理想のServerless DBを考える~
soso_15315
1
370
Next.jsで作ったブログ内に リンクカードを実装したときの知見
soso_15315
3
730
Reactにおける再レンダリングパフォーマンスチューニングの考え方と実践
soso_15315
2
340
React Hooks公開から1年で得られた知見
soso_15315
1
480
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Practical Orchestrator
shlominoach
186
10k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Designing Experiences People Love
moore
138
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Transcript
@sosomuse AWS CDKを4~5年使って たどり着いた最新構成
自己紹介 OSSコントリビュート: Storybook, i18next, ...etc 最近はAWS CDKとAtCoderにハマってます。 西村 爽 So
Nishimura フロントエンド: Next.js バックエンド: Go インフラ: AWS @sosomuse
アジェンダ 2. 改善してよかった点 3. 現在のディレクトリ構成 1. ざっくりAWS CDK
ざっくりAWS CDK CloudFormationに変換され、デプロイされる AWSのインフラ定義をプログラミング言語を用いて定義できる TypeScript(JS) Python Go etc... https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/home.html
CDKを構成するために参考になるもの https://github.com/aws-samples/baseline-environment-on-aws https://www.youtube.com/watch?v=BmCpa44rAXI AWSのセキュリティベストプラクティスやよくある実装サンプルが提供されている ベースライン的なテンプレート AWS BLEA AWS Black Belt
公式ベストプラクティス https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/introduction.html
GemcookにおけるAWS CDK 2019年中頃(GA)から技術検証を始める 2021年末にCDK V2リリース ~2023まで色々な改善や構成変更をしながら使用を続けている TypeScriptを使用 CDK自体もTypeScriptで書かれており、サンプルも基本TypeScript このあたりはコンストラクトが足りてないなど、CDKに対する不満点も多かった L2コンストラクトもかなり整備され、使用感が大きく向上
大きな構成変更の議論が始まる
GemcookにおけるAWS CDK 2019年中頃(GA)から技術検証を始める 2021年末にCDK V2リリース ~2023まで色々な改善や構成変更をしながら使用を続けている TypeScriptを使用 CDK自体もTypeScriptで書かれており、サンプルも基本TypeScript このあたりはコンストラクトが足りてないなど、CDKに対する不満点も多かった L2コンストラクトもかなり整備され、使用感が大きく向上
大きな構成変更の議論が始まる 私はこの辺から
アジェンダ 2. 改善してよかった点 3. 現在のディレクトリ構成 1. ざっくりAWS CDK
(1)cdk.jsonではなくTSで環境別設定を管理 cdk.jsonのcontextを用いて設定を管理 BLEAでもcontextを使っていた時期があり、公式感があった
contextの問題点 型が効かない!! 分割し辛い 必要な値が分かり辛い etc... TSにしよう
TSで環境設定を管理するように TSで管理することにより型が効くように パラメータの追加時に型エラーが出ることによって、足りない値が明示的になるように
(2)スナップショットテストの導入 (2)スナップショットテストの導入 スナップショットテストの導入 その瞬間のCFnテンプレートをスナップショットとして差分テスト 変更による依存がわかりやすくなる renovateやdependabotによるライブラリのバージョンアップでリソースに対して変更を検知できる https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/testing.html
アジェンダ 2. 改善してよかった点 3. 現在のディレクトリ構成 1. ざっくりAWS CDK
現在のディレクトリ構成
lib以下の階層説明 stack resource pattern スタックを配置するディレクトリ L1,L2コンストラクトから作った各リソースの 独自L2コンストラクトを配置するディレクトリ 共通的で使用する 独自L3コンストラクトを配置するディレクトリ 特定の機能を押し込めたものを単位とする
(2)スナップショットテストの導入 まとめ ディレクトリ構成に絶対の正解は無いが、日々改善する意識を持つこと ベストプラクティスは移ろいゆくもの キャッチアップを怠らずに良い構成を求め続ける 以下の2つはプロジェクトですぐにおすすめできる改善 環境設定をcdk.jsonではなくTypeScriptで管理する スナップショットテストの導入
ご静聴ありがとうございました