Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Avatar for すみや すみや
July 09, 2025
9

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

Avatar for すみや

すみや

July 09, 2025
Tweet

Transcript

  1. 4

  2. 9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 CDKのメリット 馴染みの言語でリソースが構築できる

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

  3. 10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 CDK導入後の課題 •

    構築時のメリットが大きい分、運用に関して後回しにされがち ◦ ライブラリのバージョンアップはその典型 ▪ CDKのライブラリの更新は約週1ペース この更新作業を楽にするのが今日のテーマ Renovate
  4. 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はカスタマイズの幅が広い
  5. 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を使うリポジトリを選択
  6. 15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 導入方法  

    Renovateの基本情報と導入方法 Renovate Appインストール後 初期設定PRが自動作成 renovate.json が以下設定で新規作成される 初期設定PRをマージ後に RenovateによってPRが作成され始める
  7. 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

  8. 17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 押さえておきたいプリセット config:recommended

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

    :mergeMinor の中身   Renovateの基本情報と導入方法 package.lock.jsonなどのlock ファイルを定期的に再作成 (defaultは週1) PRを良い具合にグループ化 ※この設定で不十分な時は自前でグループ化 PRを良い具合にグループ化 ※この設定で不十分な時は自前でグループ化 メジャーバージョン以外をオートマージ
  10. 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

  11. 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

  12. 22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 事前準備1  

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

    スナップショットテストの併用で安全にライブラリ更新 スナップショットテストを PR単位で実行できるようにする
  14. 24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 スナップショットテストを併用した安全な更新 スナップショットテストの併用で安全にライブラリ更新

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

    スナップショットテストを PR単位で実行できるようにする ステータスチェックが通らなければ RenovateはPRをオートマージしない デフォルト設定の ignoreTests: false による挙動
  16. 26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 実際の動作を確認  

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

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

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

    動作確認完了次第手動でマージ 応用:NodeLambdaのバージョン更新の流れ   スナップショットテストの併用で安全にライブラリ更新 ライブラリバージョンアップと共に ランタイムもバージョンアップ
  20. 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 で良いのでは???
  21. 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

  22. 34 CONFIDENTIAL - © 2022 CoDMON Inc. 34 おまけ:Jest→Vitestに移行しテストを高速化 テストが遅いとメンテナンスされなくなりがち

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

    これを回避すべく Vitestを用いてスナップショットテストを高速化 信頼性の高いスナップショットの維持が必須 割愛
  24. 38 CONFIDENTIAL - © 2022 CoDMON Inc. 38 まとめ •

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