継続的インテグレーションから継続的デプロイメントへの進展 - それともそうではないか?

継続的インテグレーションから継続的デプロイメントへの進展 - それともそうではないか?

  • ITOps・DevOps
6分で読めます 更新日 Jun 27, 2019

ポイント: 継続的インテグレーション(CI)、継続的デリバリー(CD)、および継続的デプロイメント(CD)はDevOpsにおいて重要ですが、厳密な進展には従いません。組織はニーズに応じてこれらのプラクティスを柔軟に実装できます。

  • CIはマージされたコードの自動テストを通じてコラボレーションを強化します。
  • CDはテスト後のデリバリープロセスを自動化し、継続的デプロイメントはデプロイメントフェーズを完全に自動化します。

DevOpsの世界では、専門用語が不足することはありません。日常的な言葉の中で、SCRUMやSME、さらには時折CI/CDを耳にします。最後のものは、部分的に「CD」がDevOpsの世界では「継続的デリバリー」と「継続的デプロイメント」の両方を意味するため、実際には人々が苦労しています。DevOpsは、組織にとって一律の解決策を提供しません。このため、業界用語を理解することが重要です。ビジネスでDevOpsを使用することで、効率、より良いコミュニケーション、および迅速な製品リリースが実現します。ただし、組織にとって意味をなさないDevOps要素を実装するために時間を費やすと、会社に悪影響を及ぼす可能性があります。この記事では、CI/CDおよびCI/CD/CDに関連する進展を探求します。今は文字の塊のように見えるかもしれませんが、私たちがそれをクリアにするまでお付き合いください。

DevOps 101:定義

これを読んでいるあなたは、おそらく百万ドルの質問に対する答えを求めているでしょう:CI/CDは進展ですか?しかし、私たちは基礎に戻り、初心者が私たちの議論を理解するのに役立つ簡単な定義をいくつか提供します。

進展とは何ですか?

この文章の目的のために、進展とは、より大きな効率と迅速なソフトウェアデリバリーという最終目標に到達するために必要なDevOpsの演習の連鎖の中での前進の勢いです。進展は、単なる推奨事項よりも最終結果にとって重要です。性質上、この言葉は、進展の中の1つのことが完了しないと次のことが効果的に機能しないと示唆しています。そのため、進展の順序の要素はCI/CDの名前に寄与しています。

継続的インテグレーションとは何ですか?

継続的インテグレーションは、ソフトウェア開発において、手動コーディングが自動化と出会うコードのマージを含む用語です。複数の人々がDevOpsチームで共同作業を行い、一貫性を提供しながらプロセスを効率化するという単一の目標に向かっています。テストコンポーネントが存在し、コーディングプロセスは通常、いくつかのコードユニットがマージされるのと同時にテスト自動化が行われます。複数のチームメンバーが最終的に全体のコードパッケージとなる部分で作業することにより、リアルタイムでのテスト自動化が生産への時間を短縮します。このコーディング哲学の下で、DevOpsチームは小さな変更を少しずつ実施し、問題のチェックのために頻繁にテストを実行します。現代のコーディングが多くのツール、リソース、およびプラットフォームに分散しているため、特定可能な場所でコードを正常にマージすることはこの実践の重要な要素となります。ほとんどの場合、CIを成功裏に実装するにはバージョン管理リポジトリが必要です。1人のチームメンバーが自分の部分の作業を終えると、彼らは自分のコードをリポジトリに提出して、次のコードの部分とマージされます。CIの根幹にあるのは一貫性です。コードパッケージおよびアプリケーションを一貫して生成、マージ、テストするための実践を導入することで、チームは小さなコード変更に共同作業を行う能力を確信でき、全体のソフトウェアパッケージがさらに良くなります。CIの1つの意味は継続的テストです。これは、コードがマージされるたびに自動テストを実行するだけではありません。代わりに、自動テストをCI/CDパイプラインの構造に統合することで、継続的テストと呼ばれるテストループを作成します。

継続的デリバリーとは何ですか?

継続的インテグレーションのアイデアを理解したので、ここで少し混乱します。多くのDevOps組織では、継続的インテグレーションは最終目標ではなく、最終的な目的への手段です。一部のITリーダーは、CIが最初のステップであり、継続的デリバリー(CD)が自然な2番目のステップであるという考え方で登場します。ビオラ!進展ですよね?しかし、先を急ぐのはやめましょう。理由は以下の通りです:継続的デリバリーは通常、CIフェーズでの厳密なテストの後に発生するプロセスです。要するに、CDはCIサイクルが完了したコードパッケージを自動化された構成された環境にプッシュする自動化された腕です。DevOps組織では、チームが異なるリソースや異なる目的のためにこのような複数の環境を持つことは珍しくありません。包括的なCD環境は、さまざまな自動化と手動実行の程度を持ついくつかのステップから構成されることがあります。これには以下が含まれる場合があります:

  1. バージョン管理からコードを削除し、新しいビルドを実行すること。
  2. コードを1つのコンピューティング環境から別の環境に移動すること。
  3. コードをサポートするための環境と構成を管理すること。
  4. 必要なすべてのクラウドインフラストラクチャステップを実行すること。
  5. 必要に応じてアプリケーションコンポーネントをデータベースサービス、API、またはWebサーバーに移動すること。
  6. ログを作成し、アラートを提供すること。

上記のステップから明らかなように、継続的デリバリーはCIループによって生成されたコードをサポートするために必要な環境とインフラストラクチャを自動化する手段として機能します。多くの企業にとって、CI/CDは継続的デプロイメントの最終目標に到達する手段であり、CDはその2つの間の必要不可欠な仲介役です。しかし、一部のITリーダーが推測するように、CI/CDは進展ではありません。実際、しばしば求められる継続的デプロイメントは、すべての組織にとって必ずしも適切なフィットであるわけではなく、以下でさらに詳しく説明します。DevOps組織は、企業ビジネスのために意味があるCIおよびCDの要素を使用し、彼らにとって最適な順序で適用することが最善です。たとえば、コーディング環境に多くのコンプライアンスと規制の制約がある企業を想像してください。この組織は、CIを完全にスキップし、デリバリーの自動化のみに焦点を当てるかもしれません。このため、CI/CDは上記で定義したように真の進展ではありません。なぜなら、これらの機能は順序を無視して発生する可能性があるからです。

継続的デプロイメントとは何ですか?

これで、継続的デプロイメント(CDとも呼ばれ、混乱しますよね?)が残ります。多くのケースで、企業がCI/CDを実施する際に、本当に望んでいるのはCI/CD/CDです。継続的デプロイメントの哲学は、CI/CD/CDプロセスのすべてのステップを手動の関与なしに自動化することです。たとえば、継続的デリバリーはCIループからマージされたコードをさらなるテスト環境に自動化することを可能にします。しかし、そこで止まると、デプロイメントの行為は依然として手動のものです。継続的デプロイメントの登場です。DevOps組織全体で継続的デプロイメントの実践が成功裏に実施されると、CI/CD/CDの全チェーンが自動化され、最終テストからデプロイメント環境にコードを移動する手動のステップが削除されます。このフェーズでは、各変更が自動テストの対象となります。テストフェーズを通過すると、それは直接生産フェーズに移動し、企業は1日に複数のデプロイメントを行うことができます。ただし、この最終行為はすべてのビジネスに適しているわけではありません。単に継続的デプロイメントを追求するだけで、その利点を考慮しないのは誤った行為です。継続的デプロイメントに一般的に見られる1つの実践は、進行中の作業を機能の背後に隠すことを促すものであり、開発プロセスがより厄介になり、リファクタリングがさらに難しくなる可能性があります。このため、ビジネスリーダーは、CI/CD/CD哲学から得たいものを理解する必要があります。盲目的に何らかのランダムなゴールドスタンダードを追求するのではなく。

要約

結局のところ、CI/CDやCI/CD/CDが真の進展を構成しないことは明らかです。なぜなら、開発を前進させるためにお互いに依存していないため、各々のベストプラクティスを選りすぐり、各コーディングビジネスのニーズに合わせて調整されたコーディング哲学を作成できるからです。良いニュースは、DevOpsを取り入れたすべての企業が、その機能と利点についてもっと学ぶことができるということです。また、CI/CDやCI/CD/CDまたはそれらの変種を実装して、最も一貫して効率的な結果を生み出す方法も学ぶことができます。

DevOpsガイド

  1. DevOpsとは?包括的な紹介
  2. DevOpsの簡潔な歴史
  3. DevOpsアーキテクチャの紹介
  4. DevOpsにおける自動化:なぜ自動化するのか、どのように自動化するのか
  5. CI/CDとは?継続的インテグレーションと継続的デリバリーの解説
  6. Jenkinsを使用してCI/CDパイプラインを構築する方法
  7. CI/CDパイプライン最適化のためのDevOpsメトリクス
  8. 継続的デリバリーメトリクス
  9. 継続的インテグレーションから継続的デプロイメントへの進展 - それともそうではないか?
  10. 継続的インテグレーション(CI)、デリバリー(CD)、およびデプロイメントの違い
  11. DevOpsにおけるソースとバージョン管理
  12. 継続的テストとは?
  13. テスト自動化フレームワーク:究極のガイド
  14. DevOpsにおけるリリース管理
  15. 解説:DevOpsにおける監視とテレメトリー
  16. DevOpsにおけるアプリケーションパフォーマンス管理
  17. SDLCにおけるDevOpsオーケストレーション
  18. データベースDevOpsの紹介
  19. DevOpsにおけるマイクロサービスの役割
  20. DevOpsにおける仮想化の役割
  21. コンテナとDevOps:コンテナがDevOpsデリバリーパイプラインにどのようにフィットするか
  22. コンテナパイプラインとは?
  23. DevOpsツールチェーンとは?
  24. DevOpsのためのコンテナとコードの管理
  25. DevOpsにおけるアジャイルの役割
  26. DevOpsにおけるクラウドの役割
  27. FinDevOpsとは?
  28. 2022年のトップDevOpsトレンド
  29. DevOpsの価値と原則
  30. DevOpsメトリクスとKPI
  31. 小規模、中規模、大規模組織向けのDevOpsアドバイス
  32. DevOpsチーム構造
  33. 今読むべきトップDevOps書籍
  34. 『The Phoenix Project: DevOps For Everyone』の書評
  35. DevOpsインフルエンサー:Twitterでフォローすべき11人のDevOps専門家
  36. GitHub、GitLab、Bitbucket、Azure DevOps:違いは?
  37. ベストプラクティス:Kubernetes用にアプリケーションを設計する方法
  38. DevOpsにおける構成管理
  39. DevOpsブランチング戦略の解説
  40. DevOpsの職務タイトル、役割、責任
  41. DevOpsにおけるテスト:概念、ベストプラクティスなど
  42. 2022年のDevOps認定ガイド
  43. Kubernetesオペレーターパターンとは?

これらの投稿は私自身の見解であり、必ずしもBMCの立場、戦略、または意見を表すものではありません。

ITOps・DevOpsの関連記事

BMCからのさらなる情報に興味がありますか?

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーションに関する月刊メールです:研究、顧客ストーリー、製品ニュース、イベント。

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ザ・ブリーフに登録しました

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーション—BMC AMIおよびControl-M—に関するアナリストの研究、顧客の展開、両者にわたるイベントを網羅しています。