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
Renovateを活用した手離れの良いCDKプロジェクトの作り方
Search
すみや
July 09, 2025
0
9
Renovateを活用した手離れの良いCDKプロジェクトの作り方
すみや
July 09, 2025
Tweet
Share
More Decks by すみや
See All by すみや
VIM × AIエージェントで始める記録の好循環
sumiyae
3
1.1k
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
5
1.1k
遅延読み込みの歩みから理解するSeekable OCI
sumiyae
2
350
CDKとLambda Aliasで実現する、SQS+Lambdaの、安全なリリース手法
sumiyae
1
130
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Site-Speed That Sticks
csswizardry
10
690
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Done Done
chrislema
184
16k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Facilitating Awesome Meetings
lara
54
6.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Rails Girls Zürich Keynote
gr2m
95
14k
Code Reviewing Like a Champion
maltzj
524
40k
Designing Experiences People Love
moore
142
24k
Gamification - CAS2011
davidbonilla
81
5.4k
Transcript
Renovateを活用した 手離れの良いCDKプロジェクトの作り方 2025年07月11日 江口 純矢 JAWS-UG CDK支部 AWS CDK Conference
Japan 2025
2 経歴 2021年、コドモンにエンジニアとして新卒で入社 アプリケーションエンジニアを経て、現在はSREとして働いています 最近ハマっていること 豚バラブロックを塩漬け&乾燥して作る自家製パンチェッタ 自己紹介 江口 純矢 えぐち
すみや X:@egusumi1219
すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、こども施設職員の業務を支援するWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。 3
4
5 「手離れの良い」とは? 放置してもライブラリの更新など よしなにしてくれる状態
6 話すこと 話さないこと • CDKライブラリのバージョンアップ • LambdaのRuntimeのバージョンアップ ※ TypeScriptを例にして説明します •
Stack、 Construtをどう使い分けるか等のCDKの設計の話
7 3 今日話すこと CDK導入後の課題 Renovateの基本情報と導入方法 スナップショットテストの併用で安全にライブラリ更新 おまけ:Jest→Vitestに移行しテストを高速化 1 2 4
8 CDK導入後の課題 Renovateの基本情報と導入方法 スナップショットテストの併用で安全にライブラリ更新 おまけ:Jest→Vitestに移行しテストを高速化 4 3 2 1
9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 CDKのメリット 馴染みの言語でリソースが構築できる
表現の幅が広くカスタマイズ性が高い リソース 構築時 のメリットが大きい 引用:「使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説 」 https://aws.amazon.com/jp/builders-flash/202309/awsgeek-aws-cdk/
10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 CDK導入後の課題 •
構築時のメリットが大きい分、運用に関して後回しにされがち ◦ ライブラリのバージョンアップはその典型 ▪ CDKのライブラリの更新は約週1ペース この更新作業を楽にするのが今日のテーマ Renovate
11 1 CDK導入後の課題 Renovateの基本情報と導入方法 スナップショットテストの併用で安全にライブラリ更新 おまけ:Jest→Vitestに移行しテストを高速化 4 3 2
12 CONFIDENTIAL - © 2022 CoDMON Inc. 12 Renovateとは?
Renovateの基本情報と導入方法 npm、pip、Docker等の依存関係を検知して 更新PRを自動作成する OSSツール 類似サービス: • 自動マージ可能で条件などを細かく設定可能 • 対応ライブラリ数が多い (Renovate:約90 Dependabot:約20) • ライブラリバージョンアップ PRのグループ化が可能 引用:「Renovate > Bot comparison」 https://docs.renovatebot.com/bot-comparison/#dependabot-gitlabdependabot →Renovateはカスタマイズの幅が広い
13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 Renovateの基本情報と導入方法
14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 導入方法
Renovateの基本情報と導入方法 基本的には Github Appとして使用 CLI , Docker Image , github actionsなどでも可能 引用:「Renovate > Running Renovate」 https://docs.renovatebot.com/getting-started/running/ Appを使うリポジトリを選択
15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 導入方法
Renovateの基本情報と導入方法 Renovate Appインストール後 初期設定PRが自動作成 renovate.json が以下設定で新規作成される 初期設定PRをマージ後に RenovateによってPRが作成され始める
16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 Renovate.jsonの設定
Renovateの基本情報と導入方法 • セマンティックバージョンごと • パッケージごと で細かく設定可能 複数の設定をまとめたプリセットも利用可能 代表的な設定項目 prConcurrentLimit (default:10) - 1度にopenできるPRの最大数 prHourlyLimit (default:2) - 1時間にRenovate Appが作成するPRの最大数 automerge (default:false) - オートマージするかどうか 引用:「Renovate > Configuration Options」 https://docs.renovatebot.com/configuration-options/#configuration-options
17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 押さえておきたいプリセット config:recommended
config:recommended の中身 Renovateの基本情報と導入方法 PRマージ状況を確認できる ISSUEの作成 内容に応じて PRタイトルにプレフィックスを 自動的に付与 node_modules, bower_components, vendor, test のディレクトリを対象から除外 内容に応じて PRタイトルにプレフィックスを 自動的に付与 PRを良い具合にグループ化 ※この設定で不十分な時は自前でグループ化
18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 押さえておきたいプリセット :mergeMinor
:mergeMinor の中身 Renovateの基本情報と導入方法 package.lock.jsonなどのlock ファイルを定期的に再作成 (defaultは週1) PRを良い具合にグループ化 ※この設定で不十分な時は自前でグループ化 PRを良い具合にグループ化 ※この設定で不十分な時は自前でグループ化 メジャーバージョン以外をオートマージ
19 1 CDK導入後の課題 Renovateの基本情報と導入方法 スナップショットテストの併用で安全にライブラリ更新 おまけ:Jest→Vitestに移行しテストを高速化 4 今日話すこと 2 3
20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 スナップショットテストとは?
スナップショットテストの併用で安全にライブラリ更新 引用:「AWS Cloud Development kit (CDK) Advanced #1 「AWS CDKにおける開発とテスト」 https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Advanced-1-Testing_1227_v1.pdf
21 CONFIDENTIAL - © 2022 CoDMON Inc. 21 スナップショットテストとは?
スナップショットテストの併用で安全にライブラリ更新 引用:「AWS Cloud Development kit (CDK) Advanced #1 「AWS CDKにおける開発とテスト」 https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Advanced-1-Testing_1227_v1.pdf
22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 事前準備1
スナップショットテストの併用で安全にライブラリ更新 パッチ、マイナーバージョン メジャーバージョン
23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 事前準備2
スナップショットテストの併用で安全にライブラリ更新 スナップショットテストを PR単位で実行できるようにする
24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 スナップショットテストを併用した安全な更新 スナップショットテストの併用で安全にライブラリ更新
スナップショットテストを PR単位で実行できるようにする ステータスチェックが通らなければ RenovateはPRをオートマージしない
25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 スナップショットテストを併用した安全な更新 スナップショットテストの併用で安全にライブラリ更新
スナップショットテストを PR単位で実行できるようにする ステータスチェックが通らなければ RenovateはPRをオートマージしない デフォルト設定の ignoreTests: false による挙動
26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 実際の動作を確認
スナップショットテストの併用で安全にライブラリ更新 ライブラリ更新によりスナップショットに差分発生
27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 実際の動作を確認
スナップショットテストの併用で安全にライブラリ更新 スナップショットを更新しコミット PRにRenovate App以外による変 更が含まれている場合 自動マージを実行しない 動作確認した上で 自分のタイミングでマージ
28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 応用:NodeLambdaのバージョン更新
スナップショットテストの併用で安全にライブラリ更新 事前準備 Node.jsのバージョン指定に determineLatestNodeRuntime() を使用 →CDKのバージョンリリース時の リージョンの最新のランタイム が選択される • v2.146.0: Node.js 20 , v2.204.0:Node.js 22
29 CONFIDENTIAL - © 2022 CoDMON Inc. 29 snapshot更新 &
動作確認完了次第手動でマージ 応用:NodeLambdaのバージョン更新の流れ スナップショットテストの併用で安全にライブラリ更新 ライブラリバージョンアップと共に ランタイムもバージョンアップ
30 ちょっと脱線
31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 応用:NodeLambdaのバージョン更新
スナップショットテストの併用で安全にライブラリ更新 事前準備 Node.jsのバージョン指定に determineLatestNodeRuntime() を使用 →CDKのバージョンリリース時のリージョンの最新のランタイム が選択される • v2.146.0: Node.js 20 , v2.204.0:Node.js 22 NODEJS_LATEST で良いのでは???
32 CONFIDENTIAL - © 2022 CoDMON Inc. 32 応用:NODEJS_LATESTの挙動
スナップショットテストの併用で安全にライブラリ更新 NODEJS_LATEST 「全リージョンで利用可能なバージョンのうちの最新」 2025年7月現在、東京リージョンでも未だ nodejs18が選択される 引用:「aws-cdk-lib: NODEJS_LATEST still points to nodejs18.x」 https://github.com/aws/aws-cdk/issues/28125
33 1 CDK導入後の課題 Renovateの基本情報と導入方法 スナップショットテストの併用で安全にライブラリ更新 おまけ:Jest→Vitestに移行しテストを高速化 今日話すこと 2 4 3
34 CONFIDENTIAL - © 2022 CoDMON Inc. 34 おまけ:Jest→Vitestに移行しテストを高速化 テストが遅いとメンテナンスされなくなりがち
これを回避すべく Vitestを用いてスナップショットテストを高速化 信頼性の高いスナップショットの維持が必須
35 CONFIDENTIAL - © 2022 CoDMON Inc. 35 おまけ:Jest→Vitestに移行しテストを高速化 テストが遅いとメンテナンスされなくなりがち
これを回避すべく Vitestを用いてスナップショットテストを高速化 信頼性の高いスナップショットの維持が必須 割愛
36 CONFIDENTIAL - © 2022 CoDMON Inc. 36 おまけ:Jest→Vitestに移行しテストを高速化 https://zenn.dev/sheero/articles/077b2b25d20ba4
37 まとめ
38 CONFIDENTIAL - © 2022 CoDMON Inc. 38 まとめ •
Renovateで依存関係の更新を自動化 • スナップショットテストとの組み合わせで安全にバージョンアップ ◦ determineLatestRuntime()でLambdaランタイムのバージョンアップ も追従 • Vitestでのテスト高速化により信頼性の高いスナップショットテストを保つ
39 最後に
40 コドモン採用ページ 開発ブログ コドモンでは一緒に働きたい仲間を募集しています!
41 ご清聴ありがとうございました!
None