はじめに
こんにちはSREエンジニアのMakiです。
この記事ではCI/CDの基本的な考え方について紹介します。
CI/CDが何なのかわからないという方におすすめの記事です。
CI/CDとは?
CI/CD ってわかりにくいですよね?
何がわかりにくいって言葉の意味が分かりくい。
- CI = Continuous Integration = 継続的インテグレーション
- CD = Continuous Delivery = 継続的デリバリー
- CD = Continuous Deployment = 継続的デプロイメント
そうです。CDが二つあるんです。
通常はCDというとContinuous Deliveryを指しますが、Continuous Deployment を含めて説明されることもよくあります。
関係性は一言で表すと以下の通りです。
継続的インテグレーション < 継続的デリバリー < 継続的デプロイメント
次にそれぞれの内容についての基本を説明いたします。
Continuous Integration (継続的インテグレーション)
継続的インテグレーションは主に開発、テスト、リリースに関する一連の業務を自動化するプロセスです。そして、そのプロセスに異常が発生した場合は各担当者に対して何が原因で異常が発生したのかをフィーバックします。
CI の具体的な要素
- コミット
- 静的テスト
- ビルド
- 受入テスト
- リリース作業
CIの主な要素にはこのようなものがあります。
例えば開発者がコードをコミットしたらまずそのコードが文法的に正しいかどうかの静的チェックを行います。静的チェックを行い問題がなければコードをビルドして成果物を作ります。出来上がった成果物を検証用の環境に適用できるかを確認します。受入テストを行い最終的に問題がないと判断されたら製品の出荷作業を行います。CIではこういった一連の開発プロセスにフォーカスをして自動化とフィードバックを行うことにより効率化をしていきます。
Continuous Delivery (継続的デリバリー)
CD(継続的デリバリー) はCI (継続的インテグレーション) の拡大概念です。
通常開発が終わった成果物は環境に適用するという作業が発生します。
継続的デリバリーではこの適用作業を自動化して、安定した品質で作業者のミスなく環境に適用できるようにすることが中心になります。
継続的デリバリーのポイント
- リリースされた出荷物を環境へ適用する仕組みを構築する
- リリースされた出荷物の適用開始は人による作業が伴う
デリバリーの自動化をするがそれには人による作業が伴うというのがポイントです。
Continuous Deployment (継続的デプロイメント)
継続的デプロイメントは CD (継続的デリバリー) の拡大概念です。
継続的デリバリーでは適用作業は人による作業を伴うものでしたが、継続的デプロイメントは違います。リリースされた製品を自動で人のてを介さず適用できるようにすることまで視野に入れているという点がポイントです。
継続的デプロイメントのポイント
- リリースされた出荷物を本番環境まで自動的に適用する
つまり
継続的デリバリー = WithOps Delivery
継続的デプロイメント = NoOps Delivery
と言いかえてもいいかもしれません。
まとめ
いかがでしたでしょうか。改めて内容をまとめますと次のようになります。
- 継続的インテグレーションは開発、テスト、出荷プロセスの自動化
- 継続的デリバリーは CI + デリバリーの自動化(人の作業あり)
- 継続的デプロイメント はCI + デリバリーの自動化(人の作業なし)
CI/CD について基本となる考え方を記載しました。本当はもっと奥の深いものなので概要として理解していただければと思います。
参考書籍
継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化
コメント