Renovateを活用した手離れの良いCDKプロジェクトの作り方

1K Views

July 09, 25

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

JAWS-UG CDK支部 AWS CDK Conference Japan 2025 Renovateを活用した 手離れの良いCDKプロジェクトの作り方 2025年07月12日 江口 純矢

2.

自己紹介 江口 純矢 えぐち すみや X:@egusumi1219 経歴 2021年、コドモンにエンジニアとして新卒で入社 アプリケーションエンジニアを経て、現在はSREとして働いています 最近ハマっていること 豚バラブロックを塩漬け&乾燥して作る自家製パンチェッタ 2

3.

こんなプロダクトを開発しています すべての先生に 子どもと向き合う 時間と心のゆとりを メインプロダクトは、こども施設職員の業務を支援するWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。 3

5.

「手離れの良い」とは? 放置してもライブラリの更新など よしなにしてくれる状態 5

6.

話すこと ● CDKライブラリのバージョンアップ ● LambdaのRuntimeのバージョンアップ ※ TypeScriptを例にして説明します 話さないこと ● Stack、 Construtをどう使い分けるか等のCDKの設計の話 6

7.

今日話すこと 1 CDK導入後の課題 2 Renovateの基本情報と導入方法 3 スナップショットテストの併用で安全にライブラリ更新 4 おまけ:Jest→Vitestに移行しテストを高速化 7

8.

1 CDK導入後の課題 2 Renovateの基本情報と導入方法 3 スナップショットテストの併用で安全にライブラリ更新 4 おまけ:Jest→Vitestに移行しテストを高速化 8

9.

CDKのメリット 馴染みの言語でリソースが構築できる 表現の幅が広くカスタマイズ性が高い リソース 構築時 のメリットが大きい 引用:「使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説 」 https://aws.amazon.com/jp/builders-flash/202309/awsgeek-aws-cdk/ CONFIDENTIAL - © 2022 CoDMON Inc. 9 9

10.

CDK導入後の課題 ● 構築時のメリットが大きい分、運用に関して後回しにされがち ○ ライブラリのバージョンアップはその典型 ■ CDKのライブラリの更新は約週1ペース この更新作業を楽にするのが今日のテーマ Renovate CONFIDENTIAL - © 2022 CoDMON Inc. 10 10

11.

1 CDK導入後の課題 2 Renovateの基本情報と導入方法 3 スナップショットテストの併用で安全にライブラリ更新 4 おまけ:Jest→Vitestに移行しテストを高速化 11

12.

Renovateの基本情報と導入方法 Renovateとは? npm、pip、Docker等の依存関係を検知して 更新PRを自動作成する OSSツール 類似サービス: ● ● ● 自動マージ可能で条件などを細かく設定可能 対応ライブラリ数が多い (Renovate:約90 Dependabot:約20) ライブラリバージョンアップ PRのグループ化が可能 →Renovateはカスタマイズの幅が広い 引用:「Renovate > Bot comparison」 https://docs.renovatebot.com/bot-comparison/#dependabot-gitlabdependabot CONFIDENTIAL - © 2022 CoDMON Inc. 12 12

13.

Renovateの基本情報と導入方法 CONFIDENTIAL - © 2022 CoDMON Inc. 13 13

14.

Renovateの基本情報と導入方法 導入方法 基本的には Github Appとして使用 CLI , Docker Image , github actionsなどでも可能 Appを使うリポジトリを選択 引用:「Renovate > Running Renovate」 https://docs.renovatebot.com/getting-started/running/ CONFIDENTIAL - © 2022 CoDMON Inc. 14 14

15.

Renovateの基本情報と導入方法 導入方法 renovate.json が以下設定で新規作成される Renovate Appインストール後 初期設定 PRが自動作成 CONFIDENTIAL - © 2022 CoDMON Inc. 初期設定 PRをマージ後に Renovateによって PRが作成され始める 15 15

16.

Renovateの基本情報と導入方法 Renovate.jsonの設定 ● ● セマンティックバージョンごと パッケージごと で細かく設定可能 代表的な設定項目 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 CONFIDENTIAL - © 2022 CoDMON Inc. 16 16

17.

Renovateの基本情報と導入方法 押さえておきたいプリセット config:recommended config:recommended の中身 内容に応じて PRタイトルにプレフィックスを 自動的に付与 内容に応じて PRタイトルにプレフィックスを 自動的に付与 PRを良い具合にグループ化 ※この設定で不十分な時は自前でグループ化 PRマージ状況を確認できる ISSUEの作成 node_modules, bower_components, vendor, test のディレクトリを対象から除外 CONFIDENTIAL - © 2022 CoDMON Inc. 17 17

18.

Renovateの基本情報と導入方法 押さえておきたいプリセット :automergeMinor :automergeMinor の中身 package.lock.jsonなどのlock ファイルを定期的に再作成 (defaultは週1) PRを良い具合にグループ化 PRを良い具合にグループ化 ※この設定で不十分な時は自前でグループ化 ※この設定で不十分な時は自前でグループ化 メジャーバージョン以外をオートマージ CONFIDENTIAL - © 2022 CoDMON Inc. 18 18

19.

今日話すこと 1 CDK導入後の課題 2 Renovateの基本情報と導入方法 3 スナップショットテストの併用で安全にライブラリ更新 4 おまけ:Jest→Vitestに移行しテストを高速化 19

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 CONFIDENTIAL - © 2022 CoDMON Inc. 20 20

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 CONFIDENTIAL - © 2022 CoDMON Inc. 21 21

22.

スナップショットテストの併用で安全にライブラリ更新 事前準備1 パッチ、マイナーバージョン メジャーバージョン CONFIDENTIAL - © 2022 CoDMON Inc. 22 22

23.

スナップショットテストの併用で安全にライブラリ更新 事前準備2 スナップショットテストを PR単位で実行できるようにする CONFIDENTIAL - © 2022 CoDMON Inc. 23 23

24.

スナップショットテストの併用で安全にライブラリ更新 スナップショットテストを併用した安全な更新 スナップショットテストを PR単位で実行できるようにする ステータスチェックが通らなければ RenovateはPRをオートマージしない CONFIDENTIAL - © 2022 CoDMON Inc. 24 24

25.

スナップショットテストの併用で安全にライブラリ更新 スナップショットテストを併用した安全な更新 スナップショットテストを PR単位で実行できるようにする デフォルト設定の ignoreTests: false による挙動 ステータスチェックが通らなければ RenovateはPRをオートマージしない CONFIDENTIAL - © 2022 CoDMON Inc. 25 25

26.

スナップショットテストの併用で安全にライブラリ更新 実際の動作を確認 ライブラリ更新によりスナップショットに差分発生 CONFIDENTIAL - © 2022 CoDMON Inc. 26 26

27.

スナップショットテストの併用で安全にライブラリ更新 実際の動作を確認 スナップショットを更新しコミット PRにRenovate App以外による変 更が含まれている場合 自動マージを実行しない 動作確認した上で 自分のタイミングでマージ CONFIDENTIAL - © 2022 CoDMON Inc. 27 27

28.

スナップショットテストの併用で安全にライブラリ更新 応用:NodeLambdaのバージョン更新 事前準備 Node.jsのバージョン指定に determineLatestNodeRuntime() を使用 →CDKのバージョンリリース時の リージョンの最新のランタイム が選択される ● v2.146.0: Node.js 20 , v2.204.0:Node.js 22 CONFIDENTIAL - © 2022 CoDMON Inc. 28 28

29.

スナップショットテストの併用で安全にライブラリ更新 応用:NodeLambdaのバージョン更新の流れ ライブラリバージョンアップと共に ランタイムもバージョンアップ CONFIDENTIAL - © 2022 CoDMON Inc. snapshot更新 & 動作確認完了次第手動でマージ 29 29

30.

ちょっと脱線 30

31.

スナップショットテストの併用で安全にライブラリ更新 応用:NodeLambdaのバージョン更新 事前準備 Node.jsのバージョン指定に determineLatestNodeRuntime() を使用 NODEJS_LATEST で良いのでは??? →CDKのバージョンリリース時のリージョンの最新のランタイム が選択される ● v2.146.0: Node.js 20 , v2.204.0:Node.js 22 CONFIDENTIAL - © 2022 CoDMON Inc. 31 31

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 CONFIDENTIAL - © 2022 CoDMON Inc. 32 32

33.

今日話すこと 1 CDK導入後の課題 2 Renovateの基本情報と導入方法 3 スナップショットテストの併用で安全にライブラリ更新 4 おまけ:Jest→Vitestに移行しテストを高速化 33

34.

おまけ:Jest→Vitestに移行しテストを高速化 信頼性の高いスナップショットの維持が必須 テストが遅いとメンテナンスされなくなりがち これを回避すべく Vitestを用いてスナップショットテストを高速化 CONFIDENTIAL - © 2022 CoDMON Inc. 34 34

35.

おまけ:Jest→Vitestに移行しテストを高速化 信頼性の高いスナップショットの維持が必須 テストが遅いとメンテナンスされなくなりがち 割愛 これを回避すべく Vitestを用いてスナップショットテストを高速化 CONFIDENTIAL - © 2022 CoDMON Inc. 35 35

36.

おまけ:Jest→Vitestに移行しテストを高速化 https://zenn.dev/sheero/articles/077b2b25d20ba4 CONFIDENTIAL - © 2022 CoDMON Inc. 36 36

37.

おまけ:Jest→Vitestに移行しテストを高速化 実行時間を大幅に短縮 CONFIDENTIAL - © 2022 CoDMON Inc. 37 37

38.

まとめ 38

39.

まとめ ● Renovateで依存関係の更新を自動化 ● スナップショットテストとの組み合わせで安全にバージョンアップ ○ determineLatestRuntime()でLambdaランタイムのバージョンアップ も追従 ● Vitestでのテスト高速化により信頼性の高いスナップショットテストを保つ CONFIDENTIAL - © 2022 CoDMON Inc. 39 39

40.

最後に 40

41.

コドモンでは一緒に働きたい仲間を募集しています! コドモン採用ページ 開発ブログ 41

42.

ご清聴ありがとうございました! 42