CI/CD リトマステスト: パイプラインは完全に CI/CD ですか? - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CI/CD リトマステスト: パイプラインは完全に CI/CD ですか?

Steven Guggenheimer and Ananya Koduri、Amazon Web Services (AWS)

2023 年 8 月 (ドキュメント履歴)

パイプラインは自動化されていますか? これは簡単な質問ですが、多くの組織は答えにあまりにも単純にアプローチしています。答えは「はい」または「いいえ」よりもはるかに複雑です。

テクノロジーのイノベーションは絶えず発生しており、組織がそれに対応するのが難しい場合があります。この新しいモノはフェードなのか、次の大きなモノなのか。現在のプラクティスを見直すべきか、それとも待つべきか。多くの場合、何かが実際に次の大きなものであることが明確になるまでに、キャッチアップをプレイしていることがわかります。継続的インテグレーションと継続的デリバリー (CI/CD) は継続しますが、必ずしもそうではありませんでした。多くの人が確信するのに長い時間がかかり、一部の人々はまだより確信する必要があります。

CI/CD は、ソフトウェアリリースプロセスのソース、ビルド、テスト、ステージング、本番環境のステージを自動化するプロセスであり、一般的にパイプラインと呼ばれます。現在、CI/CD オートメーションのコスト削減とスピードにより、ほとんどの組織がその価値を確信しています。しかし、この新しいアプローチへの移行は簡単な作業ではありません。スタッフが適切なトレーニングを受けていることを確認し、一部のリソースをアップグレードしてから、テスト、テスト、テストする必要があります。やることはたくさんあります。ほとんどの場合、組織が適応できるように、これらの変更を徐々に加えたいと考えています。

このドキュメントの目的は、完全な CI/CD プロセスを持つことの意味を定義することです。独自のプロセスを評価するツールを提供し、まだ存在しないプロセスの進路を示します。このパスフォワードが夜間変換になることはほとんどありません。これらのプロセスは複雑で、現在の従業員のスキルセットや現在のインフラストラクチャの需要など、多くの要因に依存します。優先順位を付け、小さな段階的な変更を行うことをお勧めします。

目的

このガイドの推奨事項を実装すると、次のような利点があります。

  • 効率 – 完全な CI/CD デプロイプロセスにより、デバッグ、手動プロセスの実行、メンテナンスに費やされる複雑さ、ワークロード、無数の時間を削減できます。詳細については、「継続的デリバリーの利点」を参照してください。TechAhead ブログ記事によると、CI/CD プロセスの実装により、時間、労力、リソースが推定 20% 削減される可能性があります。

  • コスト削減Forbes Insight レポートによると、「4 人のエグゼクティブのうち 3 人は、継続的なメンテナンスと管理に費やされた時間、資金、リソースが、新しいプロジェクト開発や新しいイニシアチブではなく、組織の全体的な競争力に影響を与えていることに同意しています。」 開発サイクルが短いほど、組織が野心的なtime-to-market目標を達成し、適切なタイミングで適切な機会を獲得できる可能性が高くなります。

  • 速度 – 通常、完全な CI/CD パイプラインは数時間以内にソフトウェアの変更を顧客にリリースできます。特に、障害の迅速な分離や小さなパッチプッシュの場合、CI/CD パイプラインは平均復旧時間 (MTTR) の改善に役立ちます。詳細については、「MTTR の削減」を参照してください。

  • セキュリティ — 完全な CI/CD パイプラインは、攻撃のエントリポイントの可能性を減らし、人為的ミスのリスクを減らすことで、リリースプロセスも保護します。完全に自動化された CI/CD パイプラインによるセキュリティ上のメリットは、データ侵害、サービス停止などのコストのかかる結果を回避するのに役立ちます。

  • 削減 — 開発者は、メンテナンスとデバッグの無限のサイクルで、優れた機能の作成により多くの時間を費やし、時間を短縮できると、より満足します。組織の場合、これは上位の人材を長期間取得して保持することを意味します。

  • 優れた品質のコード – 開発者はコードを小さなバッチで共有リポジトリにリリースし、並列テストを実行できます (BrowserStack ブログ記事)。単独で作業するのではなく、ビルドをチームに頻繁に共有し、協力して重要なバグを特定します。これにより、デベロッパーがサポートされるため、不正なコードが本番稼働用になるのを防ぐことができます。開発者の同僚からのサポートは、高品質のリリースに貢献し、組織の成長を促進します。

  • メンテナンス – メンテナンスと更新は、優れた製品を作成する上で重要な部分です。ただし、ピークトラフィック時にはシステムを停止しないでください。CI/CD パイプラインを使用して、ダウンタイムとパフォーマンスへの影響を最小限に抑えるために、使用量の少ない時間帯にメンテナンスを実行できます。