CI/CDのCIとは継続的インテグレーションを、CDとは継続的デリバリーまたは継続的デプロイメントを指すもので、ビルドやテスト、デプロイを自動化し、継続的に行っていく手法です。
パイプラインは、タスクや作業が流れていく『管』をイメージしていただければ良く、CI/CDを目的としたものに限らず、広い意味で使われます。
DevOpsにおけるCI/CD パイプライン構築の一般的な定義から、より早く正確に新しいサービスを提供する「生産性の向上」が、その目的にあげられます。
この「生産性の向上」を進めていく上での課題として、開発担当者によってCIが進められていく一方で、CDが進んでいない点を挙げました。
ソースコード管理がリポジトリ化され、ビルド・テストの自動化が進んでいるのに対し、アプリケーションや機能をリリースしていくデリバリー段階においては、運用担当者任せになり足踏み状態となるケースが多くあります。
開発担当者だけでなく、基盤担当者や運用担当者の視点を組み込むことが重要となります。
パイプラインのイメージとして管とお伝えしましたが、実際の管の様にCIからCDを一直線の流れで実行する必要はなく、要所で人を介入させることや、作業によって独立したスパンで回すという選択も可能です。
【Zoom開催】「クラウドネイティブ新時代」さあ、次のステップへ… SEASON3
パイプラインがつなげる世界
【Zoom開催】「クラウドネイティブ新時代」さあ、次のステップへ… SEASON3
パイプラインがつなげる世界
本セミナーはZoomでのオンライン配信です。ぜひご自宅よりご参加ください!
前々回のWebinarではクラウドネイティブの全体像について、企業の情報システムを支える
3つの柱として「基盤構築」「アプリ開発」「運用」を上げさせていただき、それぞれの視点から
「壁」となる課題や、その壁を乗り越えるヒントとなる考え方についてお話させていただきました。
今回は主に「運用」の観点から、「CI/CDおよびパイプライン」を取り上げ、現状の自動化の課題を踏まえ、
どのように次のステップを踏み出していくか、デモを踏まえながら一例を紹介いたします。
■視聴方法
動画視聴方法は、お申し込みいただいた方へのみご案内させていただきます。
お申し込み後、ご案内メールが届かない方はお手数ですがお問い合わせください。
■ご注意
・Wi-Fi環境など高速通信が可能な電波の良い所でご視聴ください。
Zoomのシステム要件について、より詳細な情報は、こちらをご参照ください。
・申込フォームにご登録いただいたメールアドレスでZoomに登録させていただきます。
Zoom参加可能なメールアドレスでお申し込みください。
日程詳細
-
- 開催日程
- 2020年8月25日
-
- 時間
- 15時00分~16時00分 <受付開始:14時55分>
-
- 会場
- オンライン配信
-
- 定員
- 100名
-
- 参加費
- 無料
-
- 対象者
- ・クラウドサービスやコンテナ技術の利用、自動化の推進を検討されている方
・クラウドサービスやコンテナ技術、自動化を取り込んだ環境構築を検討されている方
講演者
- 株式会社カサレアル 技術部 次長
- 植草 克友
実施報告
SEASON1、SEASON2に引き続き、長く企業の情報システムの運用管理の現場に携わってきた植草が、登壇をいたしました。
いまシステム運用管理の自動化に取り組んでいる現場から、植草の耳にはクラウドネイティブのDevOpsについて「本当にDevOpsで運用フェーズの生産性が向上できるのか?」「CI/CDのデプロイの自動化のイメージがわかない」といった悩みが多く届いて来ています。
そこで今回のセミナーでは、システム運用管理の側面からDevOpsの具体的なイメージを把握していただくための、2つのパイプラインをデモで紹介しました。
CI/CD パイプラインとは
自動化ツール ”Jenkins” を使用したデモ
自動化ツール”Jenkins”を利用して、2つのデモを行いました。
”Jenkins”とはフリーでオープンソースの自動化ツールで、プラグインを豊富に持つことが特徴です。
◆◆デモ1:ディスク残量の監視→自動ディスク拡張
1つ目のデモでは、稼働中の仮想マシンのディスク拡張を自動化するパイプラインをご紹介しました。
AWSのインスタンスに立てられた監視サーバーが、監視対象となるサーバー(Jenkinsノード)の残量を監視し、閾値を下回ることで呼び出されるJenkinsサーバーが、ディスクを拡張するという流れが、自動で行われます。
監視モニターツールと組み合わせることによって、運用管理コストの削減が期待できると解説しました。
*トリガー*
Grafanaでディスクの空きスペースが不足(しきい値を超過)を検知しパイプライン(JenkinsのJob)をコール。
*パイプライン*
空きスペースが不足したディスクを拡張するスクリプトを実行。
◆◆デモ2:CI~ゼロダウンタイムのデプロイ
2つの目のデモでは、Dockerコンテナのゼロダウンタイムデプロイを自動化するパイプラインを紹介しました。
開発プロセスのCI(統合)と運用プロセスのCD(デリバリ)を連携させた代表的なCI/CDのパイプラインです。
システムを停止することなく、アプリケーションのバージョン更新(または切り戻し)ができることを、重要なポイントとして解説しました。
*トリガー*
ソースコードを変更しGitリポジトリへのプッシュを検知しパイプライン(JenkinsのJob)をコール。
*パイプライン*
ソースコードをPullしDockerイメージをビルド、DockerイメージリポジトリへのPushし、デプロイツールを実行。
*Blue/Greenデプロイ*
Dockerイメージリポジトリから新DockerイメージをPullし、旧Dockerコンテナと新Dockerコンテナを並列状態で実行し、ロードバランサーが新Dockerコンテナへとトラフィックを切り替える。
*デプロイのロールバック*
デプロイした新Dockerコンテナから旧Dockerコンテナへトラフィックを切り替える形で切り戻す。
2つのデモから、パイプラインのトリガーが必ずしもソースコードのリポジトリへのプッシュではなく、監視しているメトリクスの変化や他のイベント等もトリガーになること、およびCDにおけるBlue/Greenデプロイや切り戻しについて、イメージしていただけたのではないかと思います。
ご質問もいただきました
ご質問もいただきましたので、ご紹介します。
セミナー中にお答えできなかったものもございますので、ぜひこちらでご確認ください!
Q1. | CI/CDに関わる製品が無料から有償まで沢山あるが、導入する製品の選定基準を教えてほしい。 |
A1. | CI/CDに関する製品は、クラウドベンダーのマネージドサービスを使用するのが、一番確実だと思われる。
クラウドベンダー・ロックインというリスクを回避する場合は、以下の基準で製品を検討されても良いと思う。 1. 複数のデプロイ戦略(Blue/Green)のオプション 2. デプロイのロールバック 3. 様々なプラットフォームに対応している(仮想マシン、Docker、サーバレス) 4. 学習コスト(サポート) |
Q2. | 以前、Jenkinsを導入。
最初は良かったが、ジョブが増えてからJenkinsの動作が遅くなり、プロジェクトが停滞することがあった。 回避する方法はあるか? |
A2. | Jenkinsサーバ本体をマスターとして、実際にジョブをこなす目的でノード(エージェント)をマスターとは別に複数台構成することができる。
このような構成にすることで、ジョブを分散、振り分けて実行する事が可能となり、Jenkinsのパフォーマンス改善につながる。 |
Q3. | 弊社ではまだDockerは導入していないが(仮想マシンで運用している状況)、今回のCI/CDの様な自動化することはできるか? |
A3. | 今回のセミナーで使用しているCD製品(AWSCodeDeploy)は、仮想マシン(EC2)へのデプロイにも対応している。
今回のケースでは、仮想マシンでもCI/CDの自動化は可能。 |