IT業界で、よく耳にする言葉でデプロイという用語があります。デプロイは、英単語としては、「展開する、配置する」といった意味で利用されます。IT業界では、実行ファイル・実行に必要な情報(アーティファクト)を動作を動かしたい環境へ配置して、実行できるようにする。というような意味で用いられています。今回は、IT業界でよく利用されるデプロイという単語と、デプロイ手法について簡単に紹介します。

ホットデプロイ

デプロイは、基本的に稼働中のアプリケーションを一時停止し、サーバの再起動を伴います。このようなアプリケーションが稼働していない期間のことをダウンタイムといいます。このダウンタイムを発生しないようなデプロイ(サーバの再起動を伴い)をホットデプロイといいます。

デプロイの手法について

デプロイで重要なこと

デプロイを無事に終わらせるために重要な点は、

  • ダウンタイム発生期間が短いこと
  • デプロイ失敗時に簡単にもとに戻せる
  • 安定していること

などが上がるかと思います。同じ方法でデプロイしても、毎回成功するかどうかわからないやかかる時間が毎回大きく違うなどのようなケースでは、安定しているとは、言えないです。また、近年では、このようなデプロイを何回も行うという点を考慮して、継続的デリバリー、継続的デプロイ、自動化などと組み合わせて語られることがあります。

デプロイの手法としては、次の4つがよく利用されています。簡単に紹介します。

インプレースデプロイ(In-Place Deployment)

稼働中のサーバに対して、新しいアーティファクトをリリースする。このリリース方法は、ダウンタイムが発生する。

シンボリックリンクデプロイ(Symbolic Deployment)

Linuxのコマンド等でよく利用されている方法です。運用中のサーバ上のアーティストファイルは、特定のパスへ配置し、サービ内で利用するシンボリックリンク(常に一定)を切り替えることで、利用者自体へは、あまり大きな違いがないかのように見せる方法です。
ファイル等によっては、ダウンタイムが発生する。

ローリングデプロイ(Rolling Deployment)

サーバ群を複数の単位に分割し、分割した単位ごとに順次、新しいアーティファクトに置き換える。デプロイ完了までの間には、新旧のバージョンが混在する形で動作を行う。ダウンタイムは発生しない。

ブルー/グリーンデプロイ(Blue/Green Deployment)

イミュータブルな環境を2つ用意しておき、その2つの環境を置き換えることでリリースする。 一般的に、現在稼働している環境をブルー、新しくデプロイする環境をグリーンと呼び、現状稼働中の環境への変更を加えずに、テストを行う。リリース時などは、ロードバランサーなどの向き先をブルーからグリーンへ変えることで、リリースを行う。仮にリリースしたバージョンで障害が発生した場合には、ロードバランサーの接続先をブルーへ切り替えることで、元のバージョンへ簡単に切り替えることができる。

イミュータブルデプロイ(Immutable Deployment)

ブルーグリーンに似ていますが、新環境への切り替え後、問題ないことを確認したら、旧環境は、破棄します。基本的には、環境自体も一つだけ保持する形になるので、運用コストは、1環境分となります。

カナリアデプロイ(Canary Deployment)

稼働中サーバーの一部だけに新しアプリケーションをデプロイ、リリースする方法です。 特定のユーザーだけに新しいアプリケーションを利用してもらうことで新サービスの検証ができます。 デプロイする方法は問わず、デプロイ先の数だけに注目したデプロイ方法です。

今回は、よく聞くIT用語「デプロイ」と代表的なデプロイの方法について、簡単にまとめました。