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
早さを求めて個人アプリをAmplifyからCDKに移行してみた!
Search
Yosuke Suzuki
September 08, 2026
Technology
36
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
早さを求めて個人アプリをAmplifyからCDKに移行してみた!
Yosuke Suzuki
September 08, 2026
More Decks by Yosuke Suzuki
See All by Yosuke Suzuki
connpass LT会検索エージェントを作ってみた話
ysuzuki
0
82
Amazon Quick 入門!
ysuzuki
2
190
3年目エンジニアが企業ブースを担当して気付いた話
ysuzuki
0
100
入門!AWS Blocks
ysuzuki
1
280
amazon-connect-voice-3methods-LT-editable
ysuzuki
0
34
Amazon Connect Customer で日本語要約試してみた〜 標準機能 vs カスタマイズ、どこまでできる? 〜
ysuzuki
0
45
Amazon Connect の MCP Server を作ってみた話
ysuzuki
0
56
Jr. Champions 活動振り返り
ysuzuki
0
80
New CBs New Challenges
ysuzuki
1
250
Other Decks in Technology
See All in Technology
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
290
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.1k
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
220
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.5k
振り返りこそエンジニアの本領
negima
0
270
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
340
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
110
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
180
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
330
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
140
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
190
KAEN Company Deck
kaen
PRO
0
300
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Exploring anti-patterns in Rails
aemeredith
3
490
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
First, design no harm
axbom
PRO
2
1.3k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Statistics for Hackers
jakevdp
799
230k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
590
Speed Design
sergeychernyshev
33
2.1k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Transcript
早さを求めて個人アプリをAmplifyから CDKに移行してみた! JAWS-UG CDK支部 #26 〜CDKに関する真夏のLT大会〜 2026/09/08 鈴木陽介
自己紹介 鈴木 陽介(アマコネ芸人) ◆所属:株式会社ウフル ◆業務内容 • お客様窓口(コンタクトセンター)の構築 ◆好きなサービス • Amazon
Connect Customer , AWS CDK ◆最近ハマっていること • Slack App開発 • Webアプリ開発(Amplify Gen2)
本日の内容について ◆Qiitaに投稿した以下の記事をベースにアップデートした内容です。 ◆ご興味がある方がいらっしゃいましたらこちらから確認いただけると幸いです!
はじめに:作ったもの • AI模試ノート(ベンダー資格対策問題集アプリ) • AWS ANSリベンジのために開発中… • 試験ガイドやSkill Builder (無料サンプル問題),
合格体験記系Techブログをベースに問題生成 • クローズドβテスト中(弊社開発メンバー)
はじめに:作ったもの • AI模試ノート(ベンダー資格対策問題集アプリ) • AWS ANSリベンジのために開発中… • 試験ガイドやSkill Builder (無料サンプル問題),
合格体験記系Techブログをベースに問題生成 • クローズドβテスト中(弊社開発メンバー) • プチ実績:合格実績あり(笑)
システム構成(概要)
Amplify を使ったWebアプリ開発について(所感) • 機能としては大満足! • SSRでの ホスティングと Cognito 認証基盤が揃っている •
Git push だけでビルドからデプロイまで完結(CI/CD)を自前する必要なし • アイドル時ほぼ0円(無料枠範囲)
Amplify を使ったWebアプリ開発について(所感) • 機能としては大満足! • SSRでの ホスティングと Cognito 認証基盤が揃っている •
Git push だけでビルドからデプロイまで完結(CI/CD)を自前する必要なし • アイドル時ほぼ0円(無料枠範囲) • 気になった点:Amplify ビルド時間 • 1回あたり平均 7.5分:build時のキャッシュの往復がネック • 復元 91秒 + 作成・アップロード 109秒 で全体の約半分 • リリース:200回弱/月: • ビルド時間課金が嵩む(0.01 USD・分)ためなるべく短縮したい…
ビルド時間の内訳 (例:新規試験問題追加時) キャッシュ作成・アップロード 109秒 next build (コンパイル・型検査) 98秒 キャッシュ復元 (取得・展開)
91秒 バックエンド deploy (ampx) 44秒 環境キャッシュ・後処理 22秒 npm install 20秒 セットアップ・clone 4秒 キャッシュ関連だけで 3分22秒 = 全体の 51%
ビルド時間の内訳 (例:新規試験問題追加時) キャッシュ作成・アップロード 109秒 next build (コンパイル・型検査) 98秒 キャッシュ復元 (取得・展開)
91秒 バックエンド deploy (ampx) 44秒 環境キャッシュ・後処理 22秒 20秒 npm install セットアップ・clone キャッシュ関連だけで 3分22秒 = 全体の 51% 4秒 もっと劇的に 早くビルドするには・・・
まず Amplify のままビルド時間を短縮するには buildSpecの見直し • キャッシュを対象の選定 • .npm 484MB をキャッシュ対象から外す
: node_modules が復元されるなら不要 • CDK 系依存を devDependencies へ整理 : node_modules 2.2GB を圧縮 • ビルド回数自体を減らす • 文言修正だけなら PR をまとめて 1 ビルドに寄せる
まず Amplify のままビルド時間を短縮するには buildSpecの見直し • キャッシュを対象の選定 • .npm 484MB をキャッシュ対象から外す
: node_modules が復元されるなら不要 • CDK 系依存を devDependencies へ整理 : node_modules 2.2GB を圧縮 • ビルド回数自体を減らす • 文言修正だけなら PR をまとめて 1 ビルドに寄せる • CDKでローカルデプロイ • → コンテナ起動やキャッシュ転送・再生成時間なども無いのではもっと早くなる(はず!)
検証スタックのアーキテクチャ Amplify Gen2 と同種の構成を素の CDK で再現。CloudFront+S3 + Lambda Web Adapter
素の CDK で検証 : 遅さの正体は安定化待ち cdk deploy 301秒 の内訳(LWA 構成・新規作成)
CloudFront Distribution 約156秒 キャッシュ無効化 待ち 約90秒 その他 約55秒 デプロイ時間の 約8割がCloudFront と キャッシュ無効化待ち CONSISTENCY_CHECK (一貫性チェック) + キャッ シュ無効化待ち そもそもCloudFormation は何を待っている? ・リソースを作った後、設定が全リージョンへ行き 渡るのを確認してから次へ進む。 →CloudFront はこの伝播が遅い(初回デプロイ)。 ・他静的アセット配置(BucketDeployment)も Distribution の ID を参照するのでさらに待機時間増
素の CDK で検証 : 遅さの正体は安定化待ち cdk deploy 301秒 の内訳(LWA 構成・新規作成)
CloudFront Distribution 約156秒 キャッシュ無効化 待ち 約90秒 その他 約55秒 デプロイ時間の 約8割がCloudFront と キャッシュ無効化待ち CONSISTENCY_CHECK (一貫性チェック) + キャッ シュ無効化待ち そもそもCloudFormation は何を待っている? ・リソースを作った後、設定が全リージョンへ行き 渡るのを確認してから次へ進む。 →CloudFront はこの伝播が遅い(初回デプロイ)。 ・他静的アセット配置(BucketDeployment)も Distribution の ID を参照するのでさらに待機時間増 Amplify から CDK に移しただけでは・・・ 483秒 → 329秒 の 約1.5倍どまり 待ち時間そのものは残ったまま
解消法:CDK Express モードを使う • 何をするもの? • cdk deploy --express で
CloudFormation の安定化待ち(一貫性チェック)を省略 • 既存の CDK コードはそのまま利用可能
解消法:CDK Express モードを使う • 何をするもの? • cdk deploy --express で
CloudFormation の安定化待ち(一貫性チェック)を省略 • 既存の CDK コードはそのまま利用可能 • 実測 : ほぼ変わらず • デプロイ時間 301秒 → 270秒 で 約1.1倍(全体 329秒 → 281秒) • 理由 : 待ちの正体が Express の対象外 (カスタムリソース) • Custom::CDKBucketDeployment の キャッシュ無効化待ち(120秒) • →カスタムリソースのためスキップ対象外(参考)
解消法:CDK Express モードを使う • 何をするもの? • cdk deploy --express で
CloudFormation の安定化待ち(一貫性チェック)を省略 • 既存の CDK コードはそのまま利用可能 • 実測 : ほぼ変わらず • デプロイ時間 301秒 → 270秒 で 約1.1倍(全体 329秒 → 281秒) • 理由 : 待ちの正体が Express の対象外 (カスタムリソース) • Custom::CDKBucketDeployment の キャッシュ無効化待ち(120秒) • →カスタムリソースのためスキップ対象外(参考) • もっと早いのがあるぞ(神の声)
cdkd (CDK Direct) AWS DevTools Hero の gotoさん が開発した OSS(GitHub
https://github.com/go-to-k/cdkd) • CDK CLI をフルスクラッチで作り直したツール(紹介記事: https://zenn.dev/go_to_k/articles/cdkd-cdk-direct) • 最大 15倍 速いデプロイ • CloudFormationを介さずAWS SDK で直接プロビジョニング • CDK 互換(書き換え不要) • cdk deploy を cdkd deploy に置き換えるだけ。 • CDK CLI を置き換えるものではなく、補完するもの • 開発 ・ テスト向け (本番はCDKを推奨)
cdkd (CDK Direct) AWS DevTools Hero の gotoさん が開発した OSS(GitHub
https://github.com/go-to-k/cdkd) • CDK CLI をフルスクラッチで作り直したツール(紹介記事: https://zenn.dev/go_to_k/articles/cdkd-cdk-direct) • 最大 15倍 速いデプロイ • CloudFormationを介さずAWS SDK で直接プロビジョニング • CDK 互換(書き換え不要) • cdk deploy を cdkd deploy に置き換えるだけ。 • CDK CLI を置き換えるものではなく、補完するもの • 開発 ・ テスト向け (本番はCDKを推奨) 早さ is 正義
cdkd (CDK Direct) やっていき! AWS DevTools Hero の gotoさん が開発した
OSS(GitHub https://github.com/go-to-k/cdkd) • CDK CLI をフルスクラッチで作り直したツール(紹介記事: https://zenn.dev/go_to_k/articles/cdkd-cdk-direct) • 最大 15倍 速いデプロイ • CloudFormationを介さずAWS SDK で直接プロビジョニング • CDK 互換(書き換え不要) • cdk deploy を cdkd deploy に置き換えるだけ。 • CDK CLI を置き換えるものではなく、補完するもの • 開発 ・ テスト向け (本番はCDKを推奨) 早さ is 正義
cdkd はなぜ速いのか(概要) synth までは CDK と完全に同じ。デプロイエンジンが違う(CDK CLIとCFnエンジンをフルスクラッチ) cdk deploy (CDK
CLI + CloudFormation) cdkd deploy (フルスクラッチエンジン) CloudFormation テンプレート作成まではCDKと同じ Asset Build & Publish Asset Build & Publish S3 ZIP アップロード・ECR イメージの push S3 ZIP アップロード・ECR イメージの push ▼ ▼ ChangeSet 作成 cdkd Engine 変更セットを CloudFormation に登録 DAG 解析・Diff 計算・並列実行 ▼ ▼ CFn が順次実行 SDK Provider Cloud Control API 各リソースの安定化を待って進む 各リソースを SDK で直接操作 追加タイプをフォールバック ▼ ▼ 完了 完了 ChangeSet 作成と一貫性チェックの待ち時間がまるごと無くなる
結果 : 全体時間の比較 483秒 Amplify Gen2 CI/CD 素の CDK cdk
deploy 329秒 cdkd cdkd deploy Amplify 比 約4.1倍 1回の push で 6分 返ってくる 281秒 CDK Express --express CDK Express + キャッシュ無効化なし cdkd で 8分3秒 → 1分57秒 214秒 117秒 プロビジョニングだけなら cdkd 101秒 は通常CDK比 約3.0倍 全体時間 = synth + asset 公開 + デプロイ。 Next.js ビルド (約100秒) は含まない
まとめ(結果からわかったこと) Amplify Gen2 → CDK → CDK –express → cdkd
それぞれでデプロイ 01 02 03 プロビジョニングは約3.0倍 全体では約2.8倍 Amplify 比では約4.1倍 デプロイ 301秒 → 101秒 329秒 → 117秒 483秒 → 117秒 CloudFormation を迂回し、一貫性 チェック待ちが消える ※synth・asset 公開は残る 1回の push あたり約6分カット 結論 : 開発・テストや個人アプリのイテレーションは cdkd にガンガン寄せると幸せになる! ここからさらに早くビルドできるようにリファクタリングしていきます!