Skip to content

Latest commit

 

History

History

chapter_cicd

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

CI/CD

概要

この章では、CI/CDについて理解し、現在のクラウドネイティブ環境でなぜ利用されているか、そしてなぜ必要かを説明します。 現在、Continuous Delivery Fundation (https://cd.foundation/) が設立され、CI/CDのベストプラクティスなど業界仕様をさらに推進しています。


CI/CDとは


CI/CDについてですが、 CI は、(Continuous Integration:継続的なインテグレーション)の略称で、開発者がアプリケーション開発から統合(Intergration)まで、必要なプロセスを自動化します。
開発プロセスとして、ソースコード取得、ビルト、ソースコード取得、アプリケーションの統合、パッケージング、単体・結合テストなどを実施します。

CDは、(Continuous Delivery: 継続的デリバリー)の略称で、アプリケーションのリリースまでの自動化を担います。 また、CDとしては、(Continuous Deploy: 継続的デプロイ)として意味合いも持ちます。

その違いの棲み分けとしては、責任範囲の違いにあります。 継続デリバリーは、上記の通り、アプリケーションのリリースまで自動化しますが、
ユーザが機能を利用可能な状態までにはしません。CIで作成されたアプリケーションやマニフェストなどの
資産を自動的に本番環境に公開可能な上状態まで運びます。

継続デプロイは、デプロイまでの自動化を担い、対象ソフトウェアを本番環境にデプロイした後、ユーザへの公開も自動的に行います。ソフトウェアの有効性をテストし、条件を満たせば規定のタイミングでユーザへ公開し、条件を満たせなければロールバックし、デプロイ前の状態に復旧する責任を持ちます。

image

なぜCI/CDが必要になるのか・・・


アプリケーションのマイクロサービス化が主流になっている中、CI/CDはマイクロサービスはもとより、アジャイル開発が登場する以前から存在した概念です。システムをスケール可能にするクラウドネイティブ環境では、必然的にCI/CD注目度、重要度が増していきます。

なぜならソフトウェアのデリバリプロセスに対して、人の手が都度介入しなければならない状態では、コンテナイメージビルド、バリデーション、テスト、デプロイ、ローンチがあり、あらゆる局面での品質やリードタイムに、ばらつきを産む可能性があります。 その点を、CI/CDを使うことにより、「徹底的な自動化」をデリバリプロセスに提供することから、品質を一定に保つことが可能です。

最近では、クラウドネイティブ環境において、GitOpsを利用したKubernetesへのアプリケーションデプロイが主流です。 例えば、CircleCIのみでもCI/CDの提供が可能ですが、CD部分を専用としてOSSであるArgoCDと 組み合わせた利用事例が増えています。ArgoCDが多く利用される理由としては、GUIを通して設定が可能であり、且つステータスの確認やSync状況などを確認できる優位性があるためです。

ここからは、実際にCI/CDで分けてハンズオンを行っていきます。

<参照: クラウドネイティブで実現するマイクロサービス開発・運用 実践ガイド>

CICDのCI部分の動作確認

CI(Continuous Integration)のハンズオン手順

CICDのCD部分の動作確認

CD(Continuous Delivery)のハンズオン手順

CICDのCD部分の動作確認(ArgoCD Image Updater機能)

CD(Continuous Delivery)のArgoCD Image Uploaderのハンズオン手順