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 の設計では Construct の構造も意識しよう!
Search
CM若槻龍太
November 01, 2024
1
520
AWS CDK の設計では Construct の構造も意識しよう!
2024/11/01 に開催された「クラスメソッドのCDK事情大公開スペシャル#1」の登壇資料です。
https://classmethod.connpass.com/event/332020/
CM若槻龍太
November 01, 2024
Tweet
Share
More Decks by CM若槻龍太
See All by CM若槻龍太
Amazon Managed Grafana で AWS IoT TwinMaker によるデジタルツインアプリケーションを動かしてみた
wakatsuki
0
170
社内でのサーバーレスアプリケーション開発を、プラットフォームエンジニアリングを整備して 迅速化・安定化させる取り組み
wakatsuki
0
3.4k
Matterport を使ってクラスメソッド各拠点のバーチャルオフィスツアーを作成してみた
wakatsuki
0
500
ブログを書く際に 意識していることや工夫していること (公開版)
wakatsuki
1
490
AWS IoT FleetWise のアップデートについて
wakatsuki
0
530
フレームワークから考える AWS IoT TwinMaker とデジタルツインの What と How
wakatsuki
0
810
5分で分かる AWS IoT TwinMaker とデジタルツイン
wakatsuki
0
910
AWS IoT TwinMakerとはどんなサービスなのか。その魅力について語ります
wakatsuki
0
1.2k
AWS CDK on CI/CD パイプライン
wakatsuki
0
1.7k
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
KATA
mclloyd
29
14k
Being A Developer After 40
akosma
87
590k
Unsuck your backbone
ammeep
668
57k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Statistics for Hackers
jakevdp
796
220k
How GitHub (no longer) Works
holman
310
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Scaling GitHub
holman
458
140k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Transcript
若槻⿓太 クラスメソッド株式会社 AWS CDK の設計では Construct の構造も意識しよう!
⾃⼰紹介 2 • 若槻⿓太 • 2019年11⽉クラスメソッド⼊社 • 製造ビジネステクノロジー部 所属 •
主な業務 ◦ 各種アプリケーション開発 ◦ プラットフォームエンジニアリング ◦ 投資領域(デジタルツインなど) • 2024 Japan AWS Top Engineers 選出 • 2024 AWS Community Builders 選出 https://dev.classmethod.jp/author/wakatsuki-ryuta/
AWS CDK で管理しているリソースの情報を マネジメントコンソールから確認したい 3
サービスページのリソース⼀覧から⽬当てのリソースを探す 4
サービスページのリソース⼀覧から⽬当てのリソースを探す 5 ⾟いポイント • リソース名 が CDK で⾃動⽣成され ている •
⼿動での命名でも⻑い似たような 名前になりがち • すべての Cfn スタックのリソースが 表⽰される
どうすれば認知負荷を下げられるか? 6
CloudFormation のツリービューを利⽤する 7
CloudFormation のツリービューを利⽤する 8 ⽬当てのリソースの論理 ID までツ リーを展開し、対応する物理 ID から リソースページに直接アクセスする
CloudFormation のツリービューを利⽤する 9 ⽬当てのリソースの論理 ID までツ リーを展開し、対応する物理 ID から リソースページに直接アクセスする
サービスページから直接リソースを探すよりも良さそう!
CloudFormation のツリービューを利⽤する 10 このリソースのツリー構造は、CDK ではコ ンストラクト構造の作り⽅で決まる
どのようなコンストラクト構造で作るべきか? 11
どのようなコンストラクト構造で作るべきか? 12 https://speakerdeck.com/winteryukky/aws-cdk-construct-partition-strategy-implementing-level-oriented-practice?slide=9 WinterYukky「AWS CDK コンストラクトの分割戦略: レベル指向プラクティス」
どのようなコンストラクト構造で作るべきか? 13 • リソースグループカット ◦ リソース種類単位でのコンストラクト分割 • コンポーネントカット ◦ サービス単位でのコンストラクト分割
例えば、このようなサーバーレスシステムを CDK で構築したい 14
リソース種類単位でコンストラクトを分割する 15 • リソースグループカット ◦ リソース種類単位でのコンストラクト分割 • コンポーネントカット ◦ サービス単位でのコンストラクト分割
こちらを使って やってみる
リソース種類単位でコンストラクトを分割する 16
リソース種類単位でコンストラクトを分割する 17 DynamoDB
リソース種類単位でコンストラクトを分割する 18 Lambda
リソース種類単位でコンストラクトを分割する 19 API Gateway
リソース種類単位でコンストラクトを分割する 20 EventBridge
リソース種類単位でコンストラクトを分割する 21 ⼀⾒良さそうだが、本当にこれで良いのか?
ユースケースを考える:Lambda 関数のログを参照したい 22 500エラーが返る API Function の ログを調査したい
スタック内に Lambda 関数が多数あると... 23
スタック内に Lambda 関数が多数あると... 24 どれが⽬当ての Lambda 関数なんだっけ?
スタック内に Lambda 関数が多数あると... 25 どれが⽬当ての Lambda 関数なんだっけ? やはり⾟さがある...
2つの分割⽅法を組み合わせる 26 • リソースグループカット ◦ リソース種類単位でのコンストラクト分割 • コンポーネントカット ◦ サービス単位でのコンストラクト分割
両⽅を組み合わせ て使ってみたらど うか
2つの分割⽅法を組み合わせる 27
2つの分割⽅法を組み合わせる 28 • リソースグループカット ◦ リソース種類単位でのコンストラクト ▪ 複数のサービスから依存されうるリソース • データベース、ユーザーディレクトリ、ネットワークなど
• コンポーネントカット ◦ サービス単位でのコンストラクト ▪ ある⼀連の処理を実現する⽬的にのみ使⽤される同期的に動作するリソース群 • 複数のサービスが依存するリソースは含まない • ⼀時テーブルやクエリ⽤インデックスは含んでもよいかも
2つの分割⽅法を組み合わせる 29 HogeAPI Service
2つの分割⽅法を組み合わせる 30 FugaBatch Service
2つの分割⽅法を組み合わせる 31 DynamoDB Resource
2つの分割⽅法を組み合わせる 32
2つの分割⽅法を組み合わせる 33 DynamoDB Resource
2つの分割⽅法を組み合わせる 34 HogeAPI Service
2つの分割⽅法を組み合わせる 35 FugaBatch Service
ユースケースを考える:Lambda 関数のログを参照したい 36 500エラーが返る API Function の ログを調査したい
ユースケースを考える:Lambda 関数のログを参照したい 37
ユースケースを考える:Lambda 関数のログを参照したい 38 Service -> HogeAPI -> Function と展 開し、対応する物理
ID からリソース ページに直接アクセスする
ユースケースを考える:Lambda 関数のログを参照したい 39 ⼤きな認知負荷なくアクセスができる! Service -> HogeAPI -> Function と展
開し、対応する物理 ID からリソース ページに直接アクセスする
CDK のコード実装側も合わせて改善できる 40 ディレクトリ構造 スタックコード
CDK のコード実装側も合わせて改善できる 41 ディレクトリ構造 スタックコード 依存⽅向 依存⽅向 リソースの依存関係とサービスの境界が直感的になる!
• CloudFormation のツリービューを活⽤しよう • コンストラクト分割は、リソース種類単位とサービ ス単位を組み合わせて⾏うと良さげ • 上記を意識するとコンストラクト構造が直感的にな り、開発‧運⽤上の認知負荷を低減できる ◦
マネコンからのリソース探索時 ◦ CDK コードによる開発時 まとめ 42
None