IBM Cloud Blog
CI/CDおよびCI/CDパイプラインとは
2023年04月04日
カテゴリー IBM Cloud Blog
記事をシェアする:
継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインの実践ガイド
CI/CDとは
継続的インテグレーション(CI)と継続的デリバリー(CD)をを表すCI/CDは、さまざまな人々の作業を組み合わせて1つのまとまりのある製品を作り上げる方法を高速化し、精度を上げます。 アプリケーションの開発および運用(DevOps)において、CI/CDは作業ツールと自動化ツールを保管する単一リポジトリーをチームに提供することでアプリケーションのコーディング、テスト、およびデプロイメントを簡素化し、一貫性をもってコードを組み合わせ、テストしてコードが機能することを確認します。
CI/CDパイプラインとは
継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインは、頻度と信頼性の高いソフトウェア・デリバリー・プロセスに重点を置いたアジャイルなDevOpsワークフローです。 この方法論は線形というよりはむしろ反復型のため、DevOpsチームはコードを作成し、それを組み込んでテストを実施し、リリースして、ソフトウェアへの変更を協力してリアルタイムでデプロイすることができます。
CI/CDパイプラインの主な特性は、コードの品質を確保するために自動化を使用している点です。 ソフトウェアの変更がパイプラインで進行する間、依存関係などの問題を早期に特定し、コード変更をさまざまな環境にプッシュし、アプリケーションを実稼働環境に提供するためにテストの自動化が使用されます。 ここでの自動化の役割は品質管理を行って、パフォーマンスからAPIの使用状況およびセキュリティーに至るまですべてを評価することです。 これにより、チーム・メンバー全員が加えた変更が包括的に統合され、意図したとおりに実行されます。
CI/CDパイプラインのさまざまなフェーズを自動化できれば、開発チームは品質改善、作業の高速化、その他のDevOpsメトリックの改善ができるようになります。
CI/CDパイプラインのメリット
初期テストから最終デプロイメントまでソフトウェア・リリースの自動化は、CI/CDパイプラインの大きなメリットです。 開発チームがCI/CDプロセスから得られるメリットには、他にも以下のようなものがあります。
- 自動化による導入時間の短縮:テストの自動化によって開発プロセスの効率が上がり、ソフトウェア・デリバリー・プロセスの期間が短くなります。 さらに継続的デプロイメントおよびプロビジョニングの自動化で、開発者がクラウド・アプリケーションに加えた変更を作成後数分以内に有効にすることができます。
- 従来のソフトウェア開発に関連するコストの削減:自動化によって促進される開発、テスト、および実動の高速化により、開発にかかる時間が短縮されるためコスト削減につながります。
- 改善のための継続的なフィードバック:CI/CDパイプラインはビルド、テスト、およびデプロイの継続的なサイクルです。 コードがテストされるたびに、開発者はフィードバックに対して迅速に対策を講じ、コードを改善することができます。
- 開発プロセスの早い段階でエラー検出に対処する機能の改善:継続的インテグレーションでは、問題の統合を探すために作成されたコードのバージョンごとにテストが自動化されます。 これらの問題は、パイプラインの早い段階で発生したもののほうが修正が簡単です。
- チーム・コラボレーションおよびシステム統合の改善: チームの全員がコードを変更したり、フィードバックに対応したり、発生した問題に素早く対応したりできます。
自動化およびCI/CDパイプラインの仕組み
継続的インテグレーションとは
CI/CDプロセスは継続的インテグレーション(CI)から始まります。 CIにより、開発者は独立して作業できるようになり、小さな変更を実装するための独自のコーディング「ブランチ」を作成することができます。 開発者は作業中に、通常はGitなどのバージョン管理ツール内でソース・コードのスナップショットを取ることができます。 開発者は新しい機能に自由に取り組むことができます。問題が発生しても、Gitでコードベースを以前の状態に簡単に戻すことができます。
その後、個人の作業は自動化システムにプッシュされ、コード変更のビルドとテストがスクリプトを使って行われます。 ビルド・ステージの後、CIサーバーはソース・コードの変更をマスター・コードまたは「トランク」にコンパイルします。
コードを単独で作成して毎月1回マスターに送信するとバグの修正や不十分なバージョン管理につながる可能性があるため、それは行わずに、CI/CD開発プロセスを採用してチームがコードの変更をより頻繁に送信できるようにします。 この継続的なテストにより、バグ修正が迅速化され、機能性が確保され、最終的にはコラボレーションとソフトウェア品質が向上します。
継続的インテグレーションについて詳しくは、以下のトピックに関するエリック・ミニック(Eric Minick)のビデオ「継続的インテグレーションとは」(英語, 06:21)をご覧ください。
継続的デリバリーとは
パイプラインの次のステップは継続的デリバリー(CD)です。これは、継続的インテグレーションで行われ検証したコード変更を、選んだ環境またはコード・リポジトリー(GitHubなど)に加えます。 ここで、運用チームはそれらを稼働中の実稼働環境にデプロイできます。 ソフトウェアおよびAPIがテストされ、自動化されたプロセスでエラーは解消されます。CDプロセスの最終ステップでは、DevOpsチームは最新のビルドに関する通知を受け取り、それを手動でデプロイ・ステージに送信します。
継続的デリバリー・パイプラインのこのステージの目標は最小限の労力で新しいコードをデプロイすることですが、それでも人間による監視はある程度可能です。
継続的デプロイメントとは
CI/CDプロセスのCDは、継続的デプロイメントのことでもあります。 継続的デプロイメントでは、事前に定義した一連のテスト(コードの整合性を確保するために模倣環境でコードをテストする統合テストなど)に合格後、コード変更がエンド・ユーザーに自動的にリリースされます。
継続的デリバリーと継続的デプロイメント
継続的デリバリーと継続的デプロイメントの違いは、ソフトウェアまたはアプリケーションのリリースで使用される自動化のレベルにあります。 継続的デリバリーでは、コードは実稼働環境に近い環境へ自動的に移動してさらなるテストと品質保証が行われます。テストに合格後、実稼働環境に移動するには、人間の介入が必要になります。 継続的デプロイメントでは、自動化がさらに進みます。 コードがテストに合格すると実稼働環境へのデプロイメントが自動的に行われますが、この際、人間による承認は必要ありません。
継続的デリバリーと継続的デプロイメントの違いについて詳しくは、以下のビデオ(英語, 05:34)をご覧ください。
組織がCI/CDパイプラインを適用し、継続的デリバリーまたはデプロイメントのどちらを使用するかを決定する方法は、ビジネス・ニーズによって異なります。 継続的デプロイメントは、e-コマース・サイトやSaaSプラットフォームを構築するチームなど、迅速な開発ライフサイクルを持つDevOpsチームに最適です。 継続的デプロイメントにより、チームは新規または更新されたソフトウェアを可能な限り迅速にリリースすることができます。 変更は自動的にパブリックにデプロイされるため、このタイプの継続的デプロイメント・パイプラインは通常、実証済みのプロセスを持つDevOpsチームによってのみ使用されます。
医療アプリケーションの構築など、ワークフローで更新をそれほど頻繁にリリースする必要がないチームの場合、一般的に推奨されるオプションは継続的デリバリーになります。 処理速度は遅くなりますが、エンド・ユーザーの機能性を確保するための監視層がもう1つ提供されます。
CI/CDパイプラインのフェーズ
ソース・コードから実動までCI/CDパイプラインの開発ライフサイクルおよびワークフローを構成するのは、以下のフェーズです。
- ビルド:このフェーズは継続的インテグレーション・プロセスの一部で、コードの作成とコンパイルが行われます。 チームは問題や競合を素早く判別しながら、ソース・コードを共同で作り直し、新しいコードを統合します。
- テスト:この段階でチームはコードをテストします。 テストの自動化は、継続的デリバリーと継続的デプロイメントの両方で行われます。 これらのテストには、統合テスト、単体テスト、およびリグレッション・テストが含まれます。
- デリバー:ここでは、承認されたコードベースが実稼働環境に送信されます。 このステージは継続的デプロイメントでは自動化され、継続的デリバリーでは開発者の承認後にのみ自動化されます。
- デプロイ:最後に変更がデプロイされ、最終製品が実稼働環境に移動します。 継続的デリバリーでは、製品またはコードがリポジトリーに送信され、人間の承認によって実稼働環境またはデプロイメントに移されます。 継続的デプロイメントでは、このステップは自動化されています。
CI/CDツールおよび構成
CI/CDツールを選択する際には、ソフトウェア開発プロセスを最適化および自動化する方法に重点を置く必要があります。 効果的なCI/CDパイプラインでは、統合、テスト、およびデプロイメントのためのオープンソース・ツールを使用します。 CI/CDプロセスの適切な構成は、ソフトウェア開発パイプラインの成功にも影響します。
最も一般的なオープンソースのCI/CDツールはJenkinsです。 Jenkinsは、Javaで作成された自動CIサーバーであり、CI/CDのステップおよびレポートを自動化するために使用されます。 統合用のその他オープンソース・ツールには、Travis CIおよびCircleCIなどがあります。
GitHubやAWS CodeCommitなどの統合開発環境(IDE)は、開発者がソフトウェア・パッケージの作成、保守、および追跡をするのに役立ちます。一方、GitLabなどのプラットフォームは、他のツールを含む包括的なプラットフォーム内でIDEを提供しようとします。
クラウド環境で運用する場合、チームはDockerなどのコンテナーを使用してアプリケーションのパッケージ化と配送を行い、オーケストレーションではKubernetesを使用します。 Kubernetesは厳密にはCI/CDパイプライン用ではありませんが、多くのCI/CDワークフローで使用されます。
CI/CDパイプラインとIBM
エンタープライズ対応について言えば、IBM Cloud Continuous Deliveryは、DevOps向けに作成されたクラウド・インフラストラクチャーとエクスペリエンスです。 クラウドのパワーを備えたDevOps用に設計されているツールチェーン、パイプライン、およびツールの統合を使用して、アプリケーションを構築、デプロイ、管理してください。
場所を問わないコード編集、デプロイメント・リスクの評価、およびソース・コードの脆弱性の特定ができる機能ならびにダウン時間の短縮は、クラウド上のDevOpsチームの主なメリットです。 IBM Cloud Continuous Deliveryは、IBM Cloud上で完全にホストおよび管理されるクラウドネイティブのDevOpsツールをサービスとして提供します。
この投稿は2021年9月27日に米国Cloud Blogに掲載された記事 (英語) の抄訳です。
セキュリティー・ロードマップ
IBM Cloud Blog
統合脅威管理、耐量子暗号化、半導体イノベーションにより、分散されているマルチクラウド環境が保護されます。 2023 安全な基盤モデルを活用した統合脅威管理により、価値の高い資産を保護 2023年には、統合された脅威管理と ...続きを読む
量子ロードマップ
IBM Cloud Blog
コンピューティングの未来はクォンタム・セントリックです。 2023 量子コンピューティングの並列化を導入 2023年は、Qiskit Runtimeに並列化を導入し、量子ワークフローの速度が向上する年になります。 お客様 ...続きを読む
ハイブリッドクラウド・ロードマップ
IBM Cloud Blog
コンポーザブルなアプリケーション、サービス、インフラストラクチャーにより、企業は複数のクラウドにまたがるダイナミックで信頼性の高い仮想コンピューティング環境の作成が可能になり、開発と運用をシンプルに行えるようになります。 ...続きを読む