製品情報

従来の開発・運用課題を解決する「CI/CD」とは?

品質を落とさず、高速な開発リリースサイクルを回すために「CI/CD」を知ろう!
最近では、現場エンジニアの負担軽減、業務効率化、ミスによる手戻り防止などの理由でもCI/CDを導入する企業も増えているようです。

このコラムは、IT関連企業に所属する新入社員や若手社員の皆さんや仮想化は知っているがこれからコンテナ・Kubernetesビジネスを始めたい方に向けてネットワールドが作成した初心者向け入門サイトからの抜粋です。「はじめてのコンテナ・Kubernetesビジネス入門!」にご興味がある方はこちら(ネットワールドページへ遷移)
IT会社に勤務する中堅サラリーマンが社命により初めてコンテナを学ぶ物語が軸となっています。昨今、アプリ開発の新しい技術として注目される「コンテナ」やその周辺技術の関連用語をできるだけわかりやすく解説しています。初めてコンテナやCI/CDなどを学ぶ方に向けた基礎的な内容のため、コマンドやコンポーネントなどのSE向けの技術的な内容はできる限り省略しました。

それでは、主人公サトルと一緒に、コンテナが必要とされる分野の一つ、「CI/CD」の初歩的な概念を理解する旅に出ましょう!

目次:
この旅では、以下の内容を理解していきます。
・新たなアプリケーション開発手法「DevOps」「CI/CD」
・CI/CDの目的とポイント
・自動化ツールとCI/CDパイプラインの関係性
・CI/CDのメリットは「継続的な自動化」にあり
・この節のまとめ

新たなアプリケーション開発手法「DevOps」「CI/CD」

──山の上にあるお城を目指してクラウドネイティブ・ロードを進むサトルたち。最初は遥か彼方にあったお城が少しずつ大きく見えるようになってきた。振り返ると、お城までの道のりの半分は過ぎているようだ。コンテナのことを理解できるようなり、ワクワクした気持ちを持っていたサトルだが、ふとした疑問がわいてきた。

サトル:「コンテナを利用することでアプリケーション開発がより早くなることは分かった。だけど、それだけでいいのかな?」

ディア:「急にどうしたんだ? ビジネスのスピードを上げるためには、アプリ開発の速度を上げるのは重要じゃないか!」

サトル:「そうなんだけど、何か引っかかるんだよ……。思い出したぞ、今度配属された部署の収益を担う重要なアプリに関する機能アップデートの問題だ!」

ディア:「どういうこと?」

サトル:「うちの会社ではアプリの開発部隊とアプリの基盤となるインフラの運用部隊が分かれているのだけど、ことあるごとに喧嘩しているんだ。周りで見ているこっちがいたたまれない気持ちになっちゃうんだよ。何でそんなに意見が分かれてしまうのだろう?」

クラフ:「おお、多くの開発・運用現場が抱えている問題だね。その原因は、同じゴールに向かっているにもかかわらず、それぞれのミッションが異なることにあるんだよ」

サトル、ディア:「え? 同じアプリに携わっているのに、どんなふうに違うの?」

従来のアプリ「開発」「運用」の課題

アプリの開発部隊は、ユーザーの役に立つより良いサービスを作って提供することがミッションなんだ。そのため、頻繁に機能をアップデートしてリリースする開発の生産性にこだわるんだ。

一方、アプリの基盤となるインフラの運用部隊のミッションは、ユーザーがストレスなく使えるように安定稼働させることだ。システムが停止したり、障害発生のリスクを可能な限り回避して、アプリの安定性を保とうとするんだ。

「事業によって収益を上げる」という共通のゴールを持っているにもかかわらず、相反するミッションを持っているために、違う方向を見なければならなかったんだ。

同じゴールに向かっているにもかかわらず、ミッションが異なる

ディア:「お互い一生懸命なのに悲しいな。仲良くなれる方法は無いの?

クラフ:「そうした課題を解決しようという取り組みが『DevOps』なんだ」

ディア:「DevOps? これもよく聞く言葉だけど、どういうことなの?」

従来とは異なる手法「DevOps」とは

DevOpsとは、開発(Development)の「Dev」と、運用(Operations)の「Op」「s」を取った言葉だよ。その意味するところは、開発者と運用者が協業してスピーディーにサービスを提供し、その価値を高めようとするシステム開発における組織的で文化的な取り組みなんだ。

また、DevOpsでは、開発・運用の両者が同じ方向を見て協業することが大事なのさ。そして、そのベストプラクティス(最善策)と言われているのが「CI/CD」だよ。

開発者と運用者が協業し、スピーディーにサービス提供をし、
価値を高めようとするシステム開発の組織的で文化的な取組

CI/CDの目的とポイント

サトル:「CI/CD? また、難しい言葉が出てきた(泣)」

ディア:「焦らずに少しずつ理解していこうよ! CI/CDについて教えて」

クラフ:「了解! CI/CDとは、ソフトウェアの変更を常にテストして、自動で本番環境にリリース可能な状態にしておくアプリケーション開発の手法だよ」


CI/CDとは、まず、CIは「Continuous Integration」の略で、日本語では「継続的インテグレーション」と表現されるよ。CDは「Continuous Delivery/Deployment」の略で、日本語では「継続的デリバリー/デプロイメント」と表現されるんだ。コンテナを作成する際、1つずつコンテナを手動で展開すると素早くアプリをリリースするのは難しいよね。CI/CDによって、アプリの結合テストや本番環境への反映を自動で実施できるサイクルがあれば、それだけリリースが早くなるんだ。

クラフ:「CI/CDは、アプリの品質を落とさず、高速な開発リリースサイクルを回す重要な役割を担っているよ。その目的は、開発(Dev)と運用(Ops)の壁をなくして、ソフトウェアの開発サイクルを効率化し、質の高いシステムを迅速に継続して届けることなんだ。そこでポイントとなるのが「自動化」なんだ。

従来のアプリ「開発」「運用」の課題

品質を落とさず、高速な開発リリースサイクルを回すのに必要

サトル:「具体的に何を自動化するの?」

クラフ:「CI/CDの一連のプロセスである『CI/CDパイプライン』を構築し、自動化することが推奨されているんだ」

ディア:「CI/CDパイプラインについて詳しく教えて!」

 

CI/CDパイプラインとは、アプリ開発からユーザーへリリースされるまでの過程をシンプルに6つのプロセスに分けて、CIとCDがそれぞれ何をやっているか説明しよう。
まず、CIは、新しいアプリケーションのソースコードの変更があった場合、ビルドしてテストして使える状態にする役割までを担っているんだ。
一方、CDの継続的デリバリーは、CIの延長上に合ってCI(継続的インテグレーション)されたアプリをテスト環境まで配置するんだ。また、CDの継続的デプロイメントでは、本番環境への配置までを担うよ。CI/CDでは、自動化ツールを駆使して日常的にサイクルを回していく運用をすることが多いんだ。

CI/CDを行う一連の流れ(パイプライン)

CI/CDパイプラインを自動で行うことが推奨されている

自動化ツールとCI/CDパイプラインの関係性

サトル:「自動化ツールにはどんなものがあるの?」

クラフ:「じゃあ、サトルにもわかりやすいように、ツール例をあげてCI/CDパイプラインの関連イメージを説明しよう。ここで紹介する以外にも多くのツールが存在し、複数にまたがる機能をもつものがあることも覚えておいてくれよな。」

ツールを含めたCI/CDパイプラインの関連イメージ例

ディア:「これらのツールは、どんなふうに連携していくの?」

クラフ:「しょうがないな。CI/CDパイプラインにおける連携イメージも見せてあげよう」

ツールを含めたCI/CDパイプラインの連携イメージ例

CI/CDのメリットは「継続的な自動化」にあり

ディア:「CI/CDを採用する具体的なメリットって何だろう?」

クラフ:「主に挙げられる点としては『時間の短縮』『高頻度なリリースが可能』『ヒューマンエラーの回避』かな。その他にも、バグの早期発見やログを残せるので見直しや調査がしやすいこと、スキル・経験を問わず誰でも同じ結果が残せることもあるね。継続的に実施するためには、何といっても自動化することがポイントだよ」

サトル:「ツールで自動化することで、人の作業負担を減らすことができるんだね。コンテナでアプリケーションを開発する際には欠かせない存在なんだね」

ツールを含めたCI/CDパイプラインの自動化イメージ例

この節のまとめ

●従来の「開発」と「運用」は役割が分かれていたが、両者が連携・協力する開発手法「DevOps」のベストプラクティスとして「CI/CD」が注目されている。

CI=継続的インテグレーション/CD=継続的デリバリー、デプロイメント。

●CI/CDは、ソフトウェアの変更を常にテストし、自動で本番環境にリリース可能な状態にしておく開発の手法。高品質で迅速なアプリ開発のリリースサイクルに必要なもの。

●CI/CDパイプラインの自動化が推奨されている。
そのメリットとしては「時間短縮」「高頻度リリース」「人的リスクの低減」などがある

──コンテナによる継続的なアプリ開発・運用においては、サイクルを自動化できる仕組みが重要だと理解したサトルは、また一歩お城に近づいたのであった。

改めて、本旅路の前章・次章が気になる方は、ぜひ「はじめてのコンテナ・Kubernetesビジネス入門!」へ(ネットワールドページへ遷移)。

 


弊社パートナー様はNetworld Dev Portal アカウント(無料)登録いただくと、GitLabパートナー制度や DevSecOps関連提案資料などのパートナー限定コンテンツがご覧いただけます。

DevSecOps全般、GitLab製品または本サイトについては以下よりお問い合わせ下さい。

関連記事