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
630
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
200
社内でのサーバーレスアプリケーション開発を、プラットフォームエンジニアリングを整備して 迅速化・安定化させる取り組み
wakatsuki
0
3.5k
Matterport を使ってクラスメソッド各拠点のバーチャルオフィスツアーを作成してみた
wakatsuki
0
530
ブログを書く際に 意識していることや工夫していること (公開版)
wakatsuki
1
500
AWS IoT FleetWise のアップデートについて
wakatsuki
0
540
フレームワークから考える AWS IoT TwinMaker とデジタルツインの What と How
wakatsuki
0
840
5分で分かる AWS IoT TwinMaker とデジタルツイン
wakatsuki
0
970
AWS IoT TwinMakerとはどんなサービスなのか。その魅力について語ります
wakatsuki
0
1.3k
AWS CDK on CI/CD パイプライン
wakatsuki
0
1.7k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Building Your Own Lightsaber
phodgson
103
6.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Making the Leap to Tech Lead
cromwellryan
133
9k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
KATA
mclloyd
29
14k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Raft: Consensus for Rubyists
vanstee
137
6.7k
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