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

 
ソフトウェアデプロイメント（英: Software deployment）または単にデプロイとは、ソフトウェアシステムを利用可能にする活動全般を指す用語である。デプロイメント（Deployment）とは「展開、配備、配置」などの意。
一般にデプロイメントは相互に関連したいくつかの活動から構成される。それらの活動は、ソフトウェア開発者の側で行われるものもあれば、顧客側で行われるものも、あるいは両者が共同で行うものもある。ソフトウェアは非常に様々なものがあり、ソフトウェアデプロイメントのプロセスやプロシージャを正確に定義することは難しい。従って、ソフトウェアデプロイメントは、個々の事情や要求に応じてカスタマイズされる「汎用プロセス」と理解されるべきである。ソフトウェアデプロイメントに含まれる個々の活動については以下で解説する。
また、アプリケーションサーバにおいて、各種アプリケーションモジュールを実際に使用される環境に配備することをアプリケーションデプロイメントと呼ぶ。
自動化されたデプロイメント手法を用いた（従来に比べて）素早く高頻度すなわち継続的なソフトウェアデプロイメントを継続的デプロイという。
デプロイメントの中で行われる作業.
アップデート.
既にデプロイされたソフトウェアを、類似する構成のソフトウェアへ更新する活動をアップデートという。例えばソフトウェアを構成するデータベースのバージョンアップはアップデートにあたる。
アップデートには様々な手法がある。なぜならアップデートはデプロイ後のソフトウェアが提供するサービスへ様々な影響を与えるからである。影響の例を以下に挙げる。
例えばアップデートが重要な既存サービスに意図せず影響してしまった（デグレードした）場合、アップデートを取り消すロールバックを行う必要がある。ロールバックを考慮しないアップデート手法を用いた場合、データ形式の不整合や新旧バージョンの並列などによってロールバックが困難になる可能性がある。
これらの問題を解決するための様々なソフトウェアデプロイメント手法が存在する。
既存ソフトウェアに手を加えて（mutableな）アップデートをおこなった場合、問題発生時に元の構成を再現することが難しくなる。上記の手法はコードによるインフラ構成（Infrastructure as Code）やコピーインスタンスへのmutableアップデートと保存による、Immutable Infrastructureが基盤となっている。バージョン管理されインスタンス化可能なソフトウェアの存在が、新旧バージョンの同時稼働やBlue/Green 2系統のリリースを可能にしている。
コンテナ化されたアプリケーションでサービスを構成する場合、Kubernetes等のコンテナオーケストレーションシステムを用いたアップデートが可能である。例えばk8sはローリングアップデートに対応している。