継続的デリバリー(CD)とは

共に働く2人のコンピュータープログラマー

継続的デリバリー(CD)とは

継続的デリバリーにより、開発チームはソフトウェア開発ライフサイクルを通じてソフトウェアを移行するプロセスを自動化できます。

継続的デリバリーは、統合されたツールボックスをプロビジョニングする際に、以下のような多くのメリットをもたらします。

  • 継続的なテストと開発を通して、デプロイメントまでの時間を短縮

  • 従来のソフトウェア開発に伴うコストを削減

  • プロジェクトの規模に基づいてソフトウェア開発を拡張

  • 開発サイクルの各フェーズにコードを自動的にデプロイ

継続的デリバリーのベスト・プラクティス

継続的デリバリーを使用する際に考慮しておくとよいベスト・プラクティスのセットを以下に示します。

  • すべての変更をリリース可能にする:継続的デリバリーを使用してすべての変更をリリース可能にする場合は、監査の目的で、ユーザー・ドキュメント、操作ランブック、および変更内容に関する情報を含める必要があります。

  • トランクベース開発を取り入れる:継続的デリバリーは継続的統合の上に構築されます。統合を遅らせる分岐をできる限り避けるため、すべての変更を一緒にビルド、テスト、デプロイして、最速のフィードバックを得られるようにします。

  • 自動化されたパイプラインによるデリバリー―継続的デリバリーの実装を成功させるには、すべてのコード・リリースが一貫した方法でテスト環境と実稼働環境に移行することを保証する、適切に構築された自動化されたデリバリー・パイプラインが必要だ。

  • 可能な限り自動化する:継続的デリバリーでは、ソフトウェア開発ライフサイクルの中で可能な限り多くのプロセスを自動化する必要があります。この自動化により、コードのビルドやデプロイメントだけでなく、新しい開発環境の構築においても、信頼性の高い優れたデリバリー・パイプラインが構築されます。

  • ダウンタイムゼロを目指す―アプリケーションの可用性を確保するために、継続的な更新を頻繁に行う場合、新しい機能を実稼働環境にプッシュするときは、まず、公開されているアプリケーション・インスタンスにデプロイする前に、その機能を検証する必要があります。

  • テストの粒度でリリースする:システムの2つの部分を一緒にテストしなければならない場合、システムの各部分に互換性があることがわかるように、一緒にリリースする必要があります。リリース自動化ツールは、この種のデリバリーの調整に適しています。あるいは、完全に分離します。
ビジネス街をバックにスマホを持つ手

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

継続的なパイプライン/フレームワーク

継続的デリバリーのメリットを活用するには、継続的探索、継続的統合、継続的デプロイメント、オンデマンドでのリリースなど、継続的フレームワークの他の要素が必要です。

継続的デリバリー・パイプライン・ステージを使用する場合は、それらをステージ内の実行単位である個別のジョブに分割する必要があります。

  • ジョブをビルドするビルド・ジョブでプロジェクトをコンパイルしてデプロイの準備をし、ビルド・アーカイブ・ディレクトリーに送信できる成果物を生成します。

  • ジョブをデプロイする継続的デリバリー・パイプラインに、URLからアクセスできるアプリとしてプロジェクトをアップロードします。プロジェクトをデプロイした後、ダッシュボードにプロジェクトを表示します。

  • ジョブをテストするサードパーティー・テスト・サービスを使用して、単体テストまたは機能テストのスイートに基づいて、ビルドおよびデプロイ・ジョブの前後にテスト・ジョブをカスタマイズして含めることができます。

継続的デリバリー・パイプラインは、開発チームに次のようなメリットをもたらします。

  • ビルド、ユニット・テスト、デプロイメントを自動化できます。

  • Gitリポジトリー、問題追跡、WebベースのIDE(統合開発環境)を使用してコードを編集およびプッシュできます。

  • 自社サービス、オープンソース・ツール、サードパーティー・ツールを使用してアプリを構築、デプロイ、管理するための統合DevOpsツールボックスを作成できます。

  • IDEを使用してどこからでもコードを編集し、ソース管理タスクを作成、編集、実行、デバッグ、完了できます。

  • 自動化されたパイプラインを使用して、ビルド、テスト、デプロイメントを反復可能な方法で継続的に提供します。

  • ビルド状況、セキュリティー・スキャンの結果、コード・カバレッジ、テスト・カバレッジを把握することで、アプリを次の環境にプロモートするかどうかを評価できるようになり、品質が向上します(ポリシー・ゲートを通ることで、プロモートする前に自動的に品質を確保します)。
IBM DevOps

DevOpsとは

Andrea Crawfordが、DevOpsとは何か、DevOpsの価値、そしてDevOpsのプラクティスとツールがアイデア考案から本番環境までのソフトウェア・デリバリー・パイプライン全体でアプリケーションを動かすのにどのように役立つかについて説明します。IBMのエキスパートが指導するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資の優先順位付けに必要な知識を得られるように設計されています。

継続的デプロイメントと継続的デリバリー

継続的デプロイメントは、継続的デリバリー・パイプラインの一部になり得ます。具体的には、継続的デリバリーとは、開発ライフサイクル(デリバリー・ライフサイクルと呼ばれることもある)を通してコードの移動が自動化されている状態を指します。継続的デプロイメントは、コードが必要な自動テストに合格すると、自動的に実稼働環境に移動することを指します。

継続的デプロイメントをデリバリー・パイプラインの一部にするかどうかは、ビジネス・ニーズによって異なります。ビジネスにおいて、デリバリー・チームが新しいソフトウェアや更新されたソフトウェアを実稼働環境に繰り返し、確実に、あるいは可能な限り迅速にリリースする必要がある場合、あるいはソリューションに複数の依存関係がある場合は、継続的デプロイメントが有益である可能性が高いと言えます。

継続的デプロイメントと継続的デリバリーの違いの詳細については、次のビデオを参照してください。

継続的デリバリー・ツール

継続的デリバリー・ツールを使用すると、オープンソース・ツールを使用してアプリケーションを構築、デプロイ、管理できます。一連のツールを統合することにより、開発チームだけでなく運用チームに対しても、繰り返し利用でき、管理も可能なタスクを作成できます。

ツールボックスには、現在のクラウド・サービス、オープンソース・ツール、サードパーティー・ツールを含めることができますが、以下を含む継続的デリバリー・ツールも検討することをお勧めします。

  • ビルドとデプロイの自動化のための反復可能なテンプレート。あるアプリでうまくいけば、他のアプリでもうまくいくはずです。もう、すべてのチームがそれぞれに設定に四苦八苦する必要はありません。

  • 変更をプッシュするときに自動的にビルドし、クラウドにデプロイし、ビルドとデプロイメントをツール・チェーンに組み込み、ツールチェーン全体でデプロイメントを管理できるパイプライン。

  • チーム・コラボレーション、計画、ソースコード管理、テストのためのツール。

  • チームがどこで急速に進んでいるのか、どこで物事が行き詰まっているのかを明らかにし、「より継続的」になるためのガイドを提供するツール。

強力な継続的デリバリー・パイプラインに使用できるオープンソースの継続的デリバリー・ツールには、Jenkins、Concourse CI、Spinnaker、Travis CI、GoCD、GitLab CIなどがあります。

アジャイルとDevOps

アジャイルな継続的デリバリー

以前は、ソフトウェアを一度リリースして、それを更新するだけでした。その後、最初と最後にのみ顧客に相談して、ソフトウェアが顧客のニーズを満たしているかどうかを確認するようになりました。

アジャイルは、継続的デリバリーのスケジュールに従ってソフトウェアを短い反復作業で制作する方法です。現在のアジャイルな継続的デリバリーのプロセスとは、定義された各機能が利用可能になるたびにコードを顧客にリリースできることを意味します。アジャイル開発と継続的デリバリーは、実稼働環境の準備が整ったらすぐに機能を顧客に提供するための鍵となります。目標は、パイプライン終了時に各機能をリリースできる状態にすることです。

DevOpsと継続的デリバリー

過去20年間で、ソフトウェア開発は標準的なウォーターフォールの概念からより効率的なアジャイル手法に移行し、大きな変化を遂げてきました。適応するには、アジャイル、DevOps、継続的デリバリーに重点を置いたアプローチに移行する必要があります。継続的デリバリー・パイプラインの一部として、これらの集中化されたプロセスにより、より信頼できる高品質なソフトウェアのリリースと更新が可能になります。

アジャイル開発を通じてより迅速かつ小規模なソフトウェア・リリースを行うと、ソフトウェア開発の個々の段階に重点が置かれるようになります。同時に、DevOpsを利用すれば、「全体像」と文化の変化に常に集中できます。このアプローチでは、開発部門と運用部門が密接に融合し、コーディングからテスト、デプロイメント、サポートに至るまで、ソフトウェア開発ライフサイクル全体に取り組む1つのチームが生まれます。

関連ソリューション
IBM DevOps アクセラレート

オンプレミス、クラウド、またはメインフレームのあらゆるアプリケーションのソフトウェア配信を自動化します。

DevOps Accelerateの詳細はこちら
DevOpsソリューション

DevOpsソフトウェアとツールを使用して、複数のデバイスや環境でクラウドネイティブ・アプリケーションを構築、デプロイ、管理します。

DevOpsソリューションの詳細はこちら
クラウド・コンサルティング・サービス 

IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。

クラウド・サービス
次のステップ

継続的な統合とデリバリーにより、DevOpsの可能性を解き放ち、安全なクラウドネイティブ・アプリケーションを構築、テスト、デプロイします。

DevOps ソリューションの詳細はこちら DevOpsの実際の動作を確認する