継続的デプロイメント

menu icon

継続的デプロイメント

このガイドでは、継続的デプロイメント戦略の概念と、それが企業にもたらす拡張性についてご説明します。

継続的デプロイメントとは

継続的デプロイメントは、アプリケーションへのコード変更が実稼働環境に自動的にリリースされるようにする、ソフトウェア開発の戦略です。 この自動化は、事前定義された一連のテストによって実施されます。 新しい更新がこれらのテストに合格すると、システムは更新をソフトウェアのユーザーに直接プッシュします。

継続的デプロイメントは、アプリケーションとITポートフォリオの拡張を検討している企業にとっていくつかのメリットがあります。 まず、コーディングと顧客価値実現の間で生じるラグ(通常は数日、数週間、さらには数か月に及ぶ)を解消することで、市場投入までの時間を短縮します。

これを実現するには、回帰テストを自動化することで、コストのかかる手動の回帰テストを排除する必要があります。 実稼働環境の変更をまとめて管理するために組織が導入している体制(リリース計画や承認会議など)も、ほとんどの変更において不要となります。

継続的デプロイメントとの比較

継続的デプロイメントと継続的デリバリーの比較

「継続的デプロイメント」と「継続的デリバリー」は混同されがちですが、実際には、両者は頻繁なリリースに対する別々のアプローチです。

継続的デリバリーとは、ソフトウェアをいつでも実稼働環境にリリースできるようにしながら構築していく、ソフトウェア開発のプラクティスです。 これを実現するために、継続的デリバリーのモデルには、実稼働環境さながらのテスト環境が含まれます。 継続的デリバリーのソリューションで実行される新しいビルドは、あらゆるエラーや不整合についてテストできる自動品質保証テスト環境に、自動的にデプロイされます。 コードがすべてのテストに合格した後、継続的デリバリーでは、実稼働環境へのデプロイメントを承認するための人間の介入が必要です。 その後、デプロイメント自体は自動で実行されます。

継続的デプロイメントは自動化をさらに一歩進め、手動による介入の必要性を排除します。 テストと開発者は十分に信頼できると見なされるため、実稼働環境へのリリースの承認は必要ありません。 テストに合格すると、新しいコードは承認されたと見なされ、そのまま実稼働環境へのデプロイメントが自動的に行われます。

継続的デプロイメントは、継続的デリバリーを究めていくと自然にたどり着くアプローチとい言えます。 結局のところ、手動承認は、ほとんどまたはまったく価値をもたらさず、単に物事の進行を遅くすることとなります。 そこで手動承認が廃止されると、継続的デリバリーは、継続的デプロイメントになります。

継続的デプロイメントと継続的デリバリーの違いについて詳しくは、Eric Minickの次の動画を参照してください。

継続的デリバリーと継続的デプロイメント(07:36)

継続的デプロイメントと継続的インテグレーションの比較

シームレスな継続的デプロイメントを確実に実現する上で、もう1つの重要な要素となるのが、継続的インテグレーションです。 デプロイメント・プロセスの自動化が機能するためには、プロジェクトに取り組んでいるすべての開発者が、発生した変更を効率的に伝達する方法を有する必要があります。 継続的インテグレーションはこれを可能にします。

通常、同じソフトウェア開発プロジェクトで作業する場合、開発者はコードのマスター・ブランチの個々のコピーを処理します。 しかし、開発者が変更をメインコード・ベースにマージした後で、機能の問題やバグが発生する可能性があります。これは、特に開発者がそれぞれ単独で作業している場合に起こりやすくなります。 開発者が単独で作業する時間が長いほど、リスクは高まります。

CIでは、全員が少なくとも1日に1回、コードの変更をリポジトリーにマージします。 更新が発生すると、自動ビルド・テストが実行され、変更がマスター・ブランチとの適合性を維持していることが確認されます。 これは、統合の問題を可能な限り迅速に捕捉するためのフェイルセーフとして機能します。

継続的インテグレーションが、継続的デリバリーと継続的デプロイメントとどう異なるのかについて、詳しくは、ブログ投稿「継続的インテグレーションと継続的デリバリー:早わかり解説」と動画「継続的インテグレーションとは」をご覧ください。

継続的インテグレーションとは(06:20)

継続的デプロイメントのツール

高品質のソフトウェア改良を継続的に開発してデプロイするには、開発者は効果的なDevOpsプラクティスを構築するための適切なツールを使用する必要があります。 これにより、開発部門と運用部門の両方の間で効率的なコミュニケーションが保証されるだけでなく、ソフトウェア配信のパイプラインにおけるエラーを最小限に抑えるか排除できます。

継続的デプロイメントのワークフローで使用される最も重要なツールのいくつかを次に示します。

  • バージョン管理:バージョン管理は、特定のプロジェクトの資産に対する改訂を追跡することで、継続的インテグレーションを支援します。 バージョン管理は、「改訂」管理または「ソース」管理とも呼ばれ、プロジェクトの更新や変更の可視性を向上させると同時に、いつどこで作業を行うかにかかわらず、チームが協力できるよう支援します。
  • コード・レビュー:文字どおり、「コード・レビュー」は、ツールを使用して現在のソースコードをテストするプロセスです。 コード・レビューは、コーディングのバグやエラーを検出することでソフトウェアの整合性を向上させ、開発者が更新をデプロイする前にこれらの問題に対処できるよう支援します。
  • 継続的インテグレーション(CI):CIは継続的デプロイメントの重要なコンポーネントであり、複数の開発者が同じプロジェクトで作業する場合の開発の障害を最小限に抑える上で主要な役割を果たします。 専有のものからオープンソースのものまでさまざまなCIツールが存在し、それぞれがエンタープライズ・ソフトウェアのデプロイメントに固有の複雑さに対応しています。
  • 構成管理:構成管理は、すべてのソフトウェアとハードウェアが一貫した状態を維持することを保証するための戦略と規律です。 これには、すべてのサーバーストレージネットワーキング、ソフトウェアの適切な構成と自動化が含まれます。
  • リリースの自動化:アプリケーションのリリースの自動化(またはアプリケーションのリリースのオーケストレーション)は、継続的デプロイメントを推進するために必要なすべてのアクティビティーを自動化する場合に非常に重要です。 オーケストレーション・ツールは、プロセスを相互に接続して、開発者が新しい変更を実稼働環境にプッシュする前に必要なすべての手順を実行できるようにします。 これらのツールは、構成管理プロセスと緊密に連携して、すべてのプロジェクト環境が適切にプロビジョニングされ、最高レベルのパフォーマンスを発揮できるようにします。
  • インフラストラクチャーの監視:継続的デプロイメントのモデルを運用する際には、テスト環境内のデータを視覚化することが重要です。 インフラストラクチャーの監視ツールは、アプリケーションのパフォーマンスを分析して、行った変更がプラスまたはマイナスの影響を与えているかどうかを確認するのに役立ちます。

Kubernetesでの作業

Kubernetesは、継続的デプロイメントのパイプラインを開発する際に使用できる、優れたオープンソースのソリューションです。 Kubernetesは、柔軟で論理的で直感的なユーザー・インターフェースにより、最新のインフラストラクチャーとマルチクラウドのデプロイメントをサポートすると同時に、サーバーの使用制限や停止に遭遇したときに発生する一般的な問題の軽減を可能にします。

Kubernetesは、DevOpsプロセスの俊敏性を高めます。 Kubernetesでは、そのモジュラー設計によって、サービス内の個々のポッドの変更や、ポッド間のシームレスな移行が可能となっています。 この柔軟性により、開発チームはサーバーのダウンタイムを回避し、マイクロサービスの実行時にリソースを最大限に活用できます。 Kubernetesは、アプリケーションやサービスを一般に公開する前に、その準備状況と全体的な状態を検出できる、非常に信頼性の高いプラットフォームでもあります。

多様なアプリケーション全体での継続的デプロイメント

継続的デリバリーまたは継続的デプロイメントのインフラストラクチャーを作成する際には、企業がソフトウェアのテストとデプロイメントのプロセスを安心して自動化できる、最適なエンタープライズ・ソリューションを調達することが重要です。 IBM UrbanCode Deployは、アプリケーションのデプロイメントの自動化プラットフォームです。このプラットフォームは、企業がソフトウェア開発のニーズを推進する上で必要な可視性、追跡可能性、監査機能を、1つの最適化されたパッケージで提供します。

マルチクラウドのデプロイメント

企業は、UrbanCode DeployのEasy ProcessとBlueprint Designerを使用して、カスタムのクラウド環境モデルを作成し、アプリケーションをパブリッククラウドプライベートクラウドハイブリッドクラウドにどのようにデプロイするべきかを視覚化できます。 Blueprint Designerを使用すると、ユーザーは、クラウド・オーケストレーションの全機能を有効にしながら、フルスタックのコンピューティング環境を作成、更新、分解できます。 その後、すべての環境をプロビジョニングして、アプリケーションのコンポーネントを自動的にまたはオンデマンドでデプロイできます。

分散自動化

UrbanCode Deployは、すべてのミッション・クリティカルなアプリケーションとサービスの動的なデプロイメントをサポートする、非常に拡張が容易なソリューションです。 複数のデータセンターにデプロイする企業の固有の要件を満たすように設計されたUrbanCode Deployは、マスター・サーバーのクラスタリングをサポートし、軽量なデプロイメントを使用してサービスを即時に利用可能にします。

品質のゲートと承認

継続的デプロイメントを成功させるためには、自動化されたテスト環境の精度を信頼できることが不可欠です。 しかし、一部の環境では、正しい情報が確実に正しいタイミングで実稼働環境にプッシュされるようにするために、手動承認にフラグを立てる特定の条件を作成する必要があります。 UrbanCode Deployは、デプロイメントの承認とゲートの機能を備えており、管理者が継続的デプロイメントのプロセスをより細かく制御、可視化、監査できるようになっています。

テスト済みの統合

UrbanCode Deployではユーザー独自のスクリプトの使用もサポートされていますが、出来合いのプラグインを使用すると、デプロイメントのプロセスの設計と管理が容易になります。 テスト済みの統合を使用することにより、開発者は、すでに実績のあるビルド済みの自動化を利用できます。 これにより、UrbanCode Deploy専用のカスタムのスクリプトを作成する必要がなくなります。

IBM UrbanCode Deployは、企業がすべてのデプロイメントのニーズを1つの使いやすくカスタマイズ可能なダッシュボードに編成できるようにする、高度なプロセス・オーケストレーションとコラボレーション用のツールを備えています。 アプリケーションをオンプレミス、オフプレミス、または数千の管理対象サーバーのいずれにデプロイする場合でも、UrbanCode Deployは、企業全体に継続的デリバリーと迅速なデプロイメントを確実に実施するために必要な、あらゆるソリューションを提供します。

IBM UrbanCode Deployの詳細と、このソリューションがデプロイメント・プロセスをどのように進化させられるかについては、IBMのデプロイメント自動化ソリューションをご覧ください

継続的デプロイメントとIBM Cloud

コードの変更を実稼働環境に自動的にリリースできると、市場投入までの時間の劇的な短縮に役立ちます。 これは、IBMツール、さらにはサード・パーティーやオープンソースのプラグインとの統合を使用して行うことができます。 IBMのプロセスとツールは、組織が直面する最も困難なDevOpsイニシアチブの1つ、すなわち、アプリケーションの構築とアプリケーションのモダナイゼーションをクラウド・ジャーニーで行うのを支援できます。

詳細情報はこちら:

今すぐIBM Cloudアカウントを使用して開始しましょう。