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
480
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
160
社内でのサーバーレスアプリケーション開発を、プラットフォームエンジニアリングを整備して 迅速化・安定化させる取り組み
wakatsuki
0
3.4k
Matterport を使ってクラスメソッド各拠点のバーチャルオフィスツアーを作成してみた
wakatsuki
0
490
ブログを書く際に 意識していることや工夫していること (公開版)
wakatsuki
1
480
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
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
We Have a Design System, Now What?
morganepeng
50
7.2k
Why Our Code Smells
bkeepers
PRO
334
57k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Done Done
chrislema
181
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
The Language of Interfaces
destraynor
154
24k
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