
【セッションレポート】モダンな CI CD ツールボックス:一貫性と信頼性を確保するための戦略(AWS-58)#AWSSummit
はじめに
皆様こんにちは、あかいけです。
AWS Summit Japan 2025 の二日目で行われた、
「モダンな CI CD ツールボックス:一貫性と信頼性を確保するための戦略」に参加してきました。
本記事ではそのレポートをお届けします。
セッション概要
タイトル :
モダンな CI/CD ツールボックス:一貫性と信頼性を確保するための戦略
概要:
ソフトウェアデリバリーの規模と環境が多様化するにつれて、継続的インテグレーションと継続的デリバリー (CI/CD) における一貫性、セキュリティ、信頼性の維持はますます困難になっています。
本セッションでは、ベストプラクティスと最新の手法を採用することで、増大する複雑さに対処する方法を示します。
複数環境に対する一貫したデプロイメント、堅牢な構成管理、プログレッシなブデリバリー戦略の実現、インフラストラクチャのドリフト検出、生成 AI による自動監査を実現する方法を解説します。
統一された CI/CD パイプラインによる変更の一元管理と、デリバリープロセスの標準化を通じて、信頼性、安全性、効率を向上させる実践的なアプローチを提示します。
スピーカー :
伊原 健太
セッションレベル :
Level 300: 中級者向け
資料
AWS公式から資料や動画がアップされたら追記します。
レポート内容
セッション全体のアジェンダ
- CI/CDの採用に関する課題
- CI/CDの基礎
- 変更への対応
- コード署名と構成証明
- GitOps
- デプロイ戦略
- ドリフト
- パイプラインの一貫性
- 継続的コンフィグレーションとフューチャーフラグ
- 依存性の軽減
1. CI/CDの採用に関する課題
現代のソフトウェア開発におけるCI/CD導入時の主要な課題について取り上げられました。
例としては以下のようなものが挙げられます。
- 組織規模の拡大に伴う複雑性の増大
- 多様化する技術スタックへの対応
- セキュリティ要件の強化
- 一貫性の確保の困難さ
- スケーラビリティの課題
2. CI/CDの基礎
CI/CDの基本的な概念について説明されました。
継続的インテグレーション(CI)と継続的デリバリー(CD)の基本的な流れとプロセスが図解されており、自動化されたビルド、テスト、デプロイメントのサイクルが示されています。
主要なポイント:
- ソースコード管理
- 自動ビルド
- 自動テスト
- 自動デプロイメント
- フィードバックループの重要性
3. 変更への対応
変更への対応 - チャンレンジ
まず実務でのCI/CDでの課題として、複数のパイプラインが存在することが挙げられます。
これにより以下のような課題が存在します。
- 設定ミス
- 一貫性のないプロセス
- 断片化された監査証跡
変更への対応 - 理想
次に理想的な状態としては、一つのパイプラインで全てを管理できている状態が挙げられています。
これにより監査証跡の管理が容易となり、結果的にポリシーやコンプライアンスへの準拠といったメリットがあります。
次にバージョン管理の対象についてです。
理想としては、以下のような全てのリソースをバージョン管理の対象とするべきと考えられます。
- アプリコード
- コンフィグ
- インラフ
- シークレット
また以下のアプローチも重要と強調されていました。
- アトミック
- 変更は全て適用されるか、全く適用されないか、のどちらか
- ロールバック
- 統一されたロールバック戦略によって、安全かつ迅速に元の状態に戻せる
おさらい
4. コード署名と構成証明
セキュリティ強化への取り組み
パイプラインにおける安全性の確認方法として、
コード署名と構成証明が挙げられました。
この両方を活用することで、コードとアーティファクト両方の整合性や信頼性、セキュリティを確保することができます。
また、そもそもなぜ全てのコミットに証明を署名するかですが、
それは検証可能な変更履歴を確保することで、保護を提供するためです。
なお具体的なセキュリティ上の利点として、
ソフトウェアの改ざん、不正な変更、サプライチェーン攻撃からの保護が挙げられます。
5. GitOps
GitOpsとは
GitOpsとは、GitとOperationを組み合わせたもの。
Gitで全てをコードとして管理して、運用として自動同期するようにする。
そうすることで、コードと実環境を一致させることができます。
また開発者にデプロイ権限を与え、デプロイのサイクルを短縮することもできます。
重要な点として以下二つが挙げられます。
- 手動操作の排除と自動化の徹底
- 開発者手動の運用
GitOps in AWS
生成AIを活用したGitOpsでの意思決定サポート
ここではCI/CD内でBedrockを活用し、デプロイの意思決定を強化する手法が紹介されています。
6. デプロイ戦略
デプロイ戦略が重要な理由
デプロイ戦略は、スピード、一貫性、リスク軽減を実現するために重要となります。
なぜなら開発者として本番環境へ、迅速に、同じ方法で、安全にデプロイする必要があるからです。
ここでは3つの主要なデプロイメント戦略について説明されました。
- ローリングデプロイ
- 一度に一つのインスタンスを更新
- 常時稼働が必要なアプリケーションに適している
- ブルー/グリーン
- 古い環境、新環境を二つを用意して、切り替えを行う
- ロールバックが迅速にできるが、コストが増加してしまう
- カナリアデプロイ
- 一部のトラフィックから段階的に移行
- デプロイの初期段階で問題を検知することで、リスクを最小限にできる
監視と自動ロールバック
これらのデプロイ戦略に共通する点として、リアルタイムでの
監視と迅速なロールバックが挙げられます。
7. ドリフト検出と管理
IaCにおけるドリフトの定義
IaCにおけるドリフトの定義と問題について説明されました。
想定された構成と実際の構成の乖離がもたらすリスクと、それによって発生する運用上の問題が示されています。
ドリフトを回避する方法として、以下の手法が紹介されていました。
- 開発者への読み取り専用アクセス権限の付与
- 緊急時の対応の仕組みの用意 (ブレークグラス)
ドリフト検出のための戦略
実際にドリフト検出のために活用できる戦略が説明されていました。
まずはAWSの機能として、CloudFormationドリフト検知、またCI/CDとCloudTrailを連携させたドリフト検知です。
次にTerraformのstateを活用した方法、最後に生成AIを活用した方法です。
なお環境への「直接変更の排除」が重要となります。
そのために最小権限の原則に基づいて、ポリシー設計を行う必要があります。
8. パイプラインの一貫性
マイクロサービス環境での課題
マイクロサービスアーキテクチャにおけるパイプライン管理の課題について説明されました。
複数のサービスそれぞれに個別のパイプラインが存在することで生じる複雑さが課題となります。
パイプラインとしての柔軟性と一貫性を担保するために、
パイプラインテンプレートとカスタムフックを活用できます。
- パイプラインテンプレート
- テンプレートによる一貫したプロセスの確立と迅速なパイプライン構築
- カスタムフック
- 処理の前後にフックによる処理や条件付きのステップなどを活用し、固有の要件に対応
集中型パイプラインと分散型パイプライン
これらの具体的なアプローチとして、
集中型パイプラインと分散型パイプラインが示されました。
しかしそれぞれにメリットデメリットが存在するため、専任チームによる混在パターンが紹介されていました。
9. 継続的コンフィグレーションとフューチャーフラグ
デプロイからリリースへの移行
従来のデプロイまでのパイプラインに、「リリース」という考え方を追加する手法について説明されていました。
これは、ユーザーが実際に使い始める部分をリリースとして定義しています。
これらを実現するために、継続的コンフィグレーションが重要となります。
継続的コンフィグレーションにより、デプロイリスクの権限と迅速な機能提供を実現できます。
フューチャーフラグの活用方法について詳しく解説されました。
これにより以下を実現できます。
- 問題発生時に、即時に無効化することで影響を最小限に
- 本番環境の実データを用いた検証
- 機能リリースとコードデプロイの分離によって、デプロイ頻度向上
- ターゲットを限定したロールアウトとA/Bテストによる安全な検証
10. 依存性の軽減
CI/CDへの依存傾向
特定のCI/CDへの依存の問題点が挙げられています。
各ベンダーは独自仕様を持つため、結果的にCI/CD選択の柔軟性の低下が課題となります。
この課題の解決策が挙げられています。
Projen-pipelines とは
これらの解決策を実現するために活用できるツールとして、
「Projen-pipelines」が紹介されています。
ベンダーにとらわれないCI/CDの実装
Projen-pipelinesを活用することで、プラットフォームにとらわれない構成を実現できます。
ただしこのような抽象化を伴う手法の場合、設計もれによる実装複雑化などが発生する可能性が高いため、都度改善を行なっていく必要があります。
まとめ
本セッションのまとめです。
さいごに
本セッションを通じて、CI/CDの全体像と実践的な戦略、モダンなCI/CDツールボックスの選択について学ぶことができました。
- 主要な学び
-
- ツール選択の重要性 - 万能な解決策はなく、状況に応じた適切な選択が必要
-
- セキュリティの組み込み - コード署名や構成証明によるサプライチェーンセキュリティ
-
- GitOpsの価値 - 宣言的なインフラ管理による一貫性と信頼性の確保
-
- 段階的デプロイメント - リスクを最小化しながら確実にリリースする戦略
-
- ドリフト管理 - 設定の一貫性維持の重要性
-
- パイプライン標準化 - 複雑性を管理しながら効率性を向上させる手法
-
- 動的設定管理 - フューチャーフラグによる柔軟なリリース制御
-
- 依存性の低減 - ベンダーに依存しないCI/CD構築の重要性
-
特に印象的だったのは、技術的な解決策だけでなく、組織やプロセス面での考慮事項も含めて包括的にCI/CDを捉える視点でした。
これらの知見を活かして、より効率的で信頼性の高い開発・デプロイメントプロセスの構築に取り組んでいきたいと思います。