1. ホーム
  2. 記事一覧
  3. 継続的インテグレーション・継続的デリバリー(CI/CD)とは

2022.12.14

継続的インテグレーション・継続的デリバリー(CI/CD)とは

CI/CD(Continuous Integration/Continuous Delivery)とは日本語で継続的インテグレーション・継続的デリバリーと訳されます。

CI/CDは1つの技術を指すものでなく、ソフトウェアの変更を常にテストして自動で本番環境にリリース可能な状態にしておくソフトウェア開発の手法を意味します。また、CDには継続的デリバリーの外に継続的デプロイメントContinuous Deployment)という意味もあるため、それぞれ解説を行います。

CI(Continuous Integration)とは

CI(Continuous Integration、以下CI)とは、継続的インテグレーションのことです。

Integrationは統合という意味で、継続的に行うことをCIと呼びます。継続的インテグレーションは開発者のコード変更を中央サーバー(共有リポジトリなど)に定期的にマージし、その度に自動化されたビルドを実行するソフトウェア開発手法です。

CIについては更に詳しく解説されたこちらの記事をご覧ください。

https://envader.plus/article/43

CD(Continuous Delivery)とは

CD(Continuous Delivery、以下CD)とは、継続的デリバリーのことです。

CDは、CIのプロセスを引き継いでビルド段階の後にコードのテストを自動的に行い、テスト環境や本番環境へいつでもデプロイできるように準備します。CDではコード変更のマージから本番環境に対応するためのビルドのデリバリーまで、すべての段階でテストとコードリリースを自動化します。

CD(Continuous Deployment)とは

CDには継続的デリバリーの他に継続的デプロイメントという意味もあります。

継続的デプロイメントは、継続的デリバリーの次のステップであり、すべてのコード変更が自動的に本番環境に導入されるようにする開発手法です。継続的デリバリーでは新しいコード変更を本番環境に移行させる最終的な作業は人間の手で手動で行われます。ですが継続的デプロイメントを導入することで、その最終的な本番環境への移行も自動化されます。継続的デプロイメントによって、顧客が触れる本番環境へシームレスに移行されるため、顧客からのフィードバックも迅速に受け取れるようになります。

CIは開発者がコードを書いている際に実行する自動化プロセスであり、CDはコードが完成した後に必要な処理を実行する自動化プロセスとイメージすると分かりやすいです。

CI/CDの流れ

  1. 開発したソースコードをGitなどのバージョン管理ツールへコミットします。
  2. CIにより自動的にエラーがないかなど各種テストが行われます。 これにより仕様どおりの機能が実装されているか、既存のコードに影響がないかといった確認が自動的に行われます。テストが終了した場合リリース用ブランチにマージされます。
  3. CDによってビルド、テストされたアプリケーションは自動でステージング環境へデリバリー(デプロイ)されすぐに動作確認が行えるようになります。 なお継続的デリバリーでは変更したコードをステージング環境までは自動でデプロイを行いますが、本番環境へのデプロイは行いません。実際の本番環境へのデプロイは人の手により手動で行わないといけません。この本番環境へのデプロイまでもを全て自動で行う事を継続的デプロイメントといいます。

CI/CDの種類

CI/CDにはオンプレミス型とクラウド型の2種類が存在し、オンプレミス型では一般的に拡張性が高く、自分たちで構築や運用をするための管理コストが発生します。一方クラウド型は拡張性が低く、サーバーなどを自前で用意する必要がなく、すぐに使い始めることができるのが大きな魅力となっています。

それぞれの代表的な製品(サービス)は次の通りです。

オンプレミス型

オンプレミス型を選択するメリットは拡張性の高さやビルドするマシン性能を自分たちで調整出来る点です。デメリットはサーバーを自身で用意しないといけなかったりと運用コストが高いことが挙げられます。

サービス名説明
Jenkins川口耕介氏により開発されたフリーオープンソースのCI/CDサービス
ConcourseGo言語で構成されたパイプラインベースのCI/CDサービス
DroneGo言語で構成されたコンテナベースのCI/CDサービス

クラウド型

クラウド型を選択するメリットはサーバーなどを自身で用意する必要がなく、簡単に始められる点です。デメリットはビルドするマシン性能の調整が行えないことや有料となる点が挙げられます。

サービス名説明
Travis CITravis CI community社によって開発されたGitHub上のソフトウェアのビルドやテストを行うためのSaaS 型のCI/CDサービス
CircleCICircleCI社によって開発されたSaaS型のCI/CDサービス
AWSAmazon Web ServicesのCI/CDサービス ただし、AWSの場合は「AWS CodeCommit」「AWS CodeBuild」「AWS CodeDeploy」など機能によっていくつか種類に分かれます。

まとめ

CI/CDは開発者がコード変更を定期的に共有リポジトリへマージする事で、その後のビルドやテスト、ステージング環境へのデプロイまでを自動で行なってくれるソフトウェア開発手法です。

従来行っていた蓄積したコード変更を一度にマージする手法では、コンフリクト(コードの競合)が起きやすく、バグが発生した場合も複数の変更点が混在するため原因究明までに膨大な時間や労力が必要でした。CI/CDを導入する事で開発者はマージを行うだけでビルドからテストまでを自動で行なってくれるため、開発者の生産性の向上や製品の品質向上を行う事が出来ます。

若干のデメリットとして、初期環境の整備やテストコード自体は作成する必要があるなどが挙げられます。CI/CDにはオンプレミス型とクラウド型で異なるメリット、デメリットが存在するので、導入の際は両者の違いを理解した上で選択する必要があります。

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事