ソフトウェアデプロイメント

ソフトウェアデプロイメントとは



ソフトウェアデプロイメント(Software deployment)は、開発されたソフトウェアシステムをユーザーが利用できる状態にするための一連の活動を指します。これは単にソフトウェアを配置するだけでなく、リリースからサポート終了まで、ソフトウェアのライフサイクル全体に関わる重要なプロセスです。

デプロイメントの構成要素



デプロイメントは、開発者側と顧客側の両方で協力して行う、複雑で相互に関連する活動で構成されています。ソフトウェアの種類や目的によって具体的な手順は異なりますが、一般的には以下のような作業が含まれます。

リリース



ソフトウェア開発が完了した後、顧客に配布可能な状態にすることをリリースと呼びます。市販のソフトウェアの場合、注文を受けてから出荷するものと、見込み生産して大量に出荷するものとがあり、それぞれリリース手順が異なります。

インストール



顧客の環境にソフトウェアを導入する最初の作業がインストールです。専用のインストーラを用いて、ファイル群の転送や設定を行います。

アクティベート



インストールされたソフトウェアを使用可能にする作業がアクティベートです。多くの場合、ソフトウェア実行ファイルを起動することを指します。プロプライエタリソフトウェアでは、ライセンス認証のためにシリアル番号などを入力し、キーコードを取得するなどの手順を踏むことがあります。

ディアクティベート



アクティベートの反対で、実行中のソフトウェアを停止させることをディアクティベートと呼びます。ソフトウェアの更新時に、古いバージョンを停止させる際などに必要になります。

アップデート(更新)



既にデプロイされているソフトウェアを、新しいバージョンに更新したり、パッチを適用したりする活動をアップデートと呼びます。データベースのバージョンアップなどもアップデートに含まれます。

アンインストール



不要になったソフトウェアをシステムから削除する作業です。インストールの逆の作業となります。

サポート停止



ソフトウェア製品のライフサイクルが終了し、開発元からのサポートが打ち切られることを指します。

アップデートの重要性と課題



ソフトウェアのアップデートは、バグの修正や新機能の追加のために不可欠ですが、デプロイ済みのソフトウェアが提供するサービスに様々な影響を与える可能性があります。例えば、一時的なサービス停止や、アップデート版のバグによるサービスレベルの低下などが考えられます。最悪の場合、アップデートによって重要な既存サービスに悪影響が出てしまう(デグレード)可能性があり、その場合はアップデート前の状態に戻すロールバックが必要になります。

アップデートに伴う課題



  • - 一時的なサービス停止
  • - サービスレベルの低下
  • - アップデートの失敗によるデグレード
  • - ロールバックの困難性

これらの課題を解決するため、様々なデプロイメント手法が開発されています。

様々なデプロイメント手法



ローリングアップデート



新バージョンを段階的にデプロイし、旧バージョンと並行稼働させることで、サービス停止時間を最小限に抑える手法です。旧バージョンを段階的に停止させていくことで、無停止でのアップデートを実現します。

カナリアリリース



新バージョンを一部のユーザー(カナリア)にのみ提供し、本番環境での動作を検証する手法です。問題がなければ徐々に提供範囲を広げていきます。ローリングアップデートと似た構成になります。

Blue-Greenデプロイメント



稼働中の環境(Blue)とは別に、新バージョンを導入した環境(Green)を用意し、テスト後にDNSルーティングなどを切り替えて、Green環境にリクエストを切り替える手法です。これにより、切り替え時のダウンタイムを短縮できます。

Immutable InfrastructureとInfrastructure as Code



これらのデプロイメント手法は、Immutable Infrastructure(不変インフラ)の考え方に基づいています。これは、既存のソフトウェアに手を加えるのではなく、新しいインスタンスを作成し、旧インスタンスと切り替えることで、常に安定した環境を保つというものです。また、コードによるインフラ構成(Infrastructure as Code)を組み合わせることで、構成の再現性を高めています。

コンテナオーケストレーションシステム



コンテナ化されたアプリケーションの場合、Kubernetesなどのコンテナオーケストレーションシステムを用いて、より高度なアップデート管理が可能です。例えばKubernetesは、ローリングアップデートに対応しており、自動的に新バージョンをデプロイすることができます。

まとめ



ソフトウェアデプロイメントは、ソフトウェアのライフサイクルにおいて不可欠なプロセスであり、その手法は多岐にわたります。それぞれの状況や要件に合わせて最適な手法を選択し、効率的かつ安全なソフトウェア運用を目指すことが重要です。

参考文献



Carzaniga A., Fuggetta A., Hall R. S., Van Der Hoek A., Heimbigner D., Wolf A. L. — A Characterization Framework for Software Deployment Technologies — Technical Report CU-CS-857-98, Dept. of Computer Science, University of Colorado, April 1998. http://serl.cs.colorado.edu/~carzanig/papers/CU-CS-857-98.pdf

関連項目




外部リンク



  • - Solution Installation Schema Submission request to W3C
  • - OASIS Solution Deployment Descriptor TC
  • - OMG Specification for Deployment and Configuration of Component-based Distributed Applications (OMG D&C)
  • - JSR 88: Java™ EE Application Deployment

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。