システム開発には多くの工程があり、工程によって様々な用語が使われます。初心者はそれぞれの意味を理解するのに時間がかかりますが、各用語の意味だけでなく、関連性や細かい違いまで把握すると現場で役に立ちます。
その中でもデプロイは、複数の工程で使われる言葉です。デプロイには手法も複数あるので、それぞれを理解してシステム開発へ生かしましょう。
本記事ではデプロイの意味やほかの用語との違い、手法の違いなどを解説します。
目次
デプロイとは?意味と役割をわかりやすく解説
デプロイは英語で「deploy」と書き、直訳すると「常駐する・配置する」という意味です。ITの分野では、システムにおいて「実行ファイルを実際のWebサーバー上に配置して、利用できる状態にすること」を指します。
通常システム開発においては、以下の環境が用意され、環境ごとにファイルが設置されて、開発作業が行われます。
- 開発環境:テキストエディターやエラーチェックなどの機能が搭載されたツールを使った環境
- テスト環境:プログラミングしたファイルの挙動を確かめるための検証用の環境
- 本番環境:実際にユーザーが利用するための環境
このうちデプロイは、テスト環境・本番環境を利用します。システムが稼働する実際の環境、あるいは、その環境を再現して実際に稼働できる状態にする(ファイルを配置してシステムとして動かせるようにする)のがデプロイです。
デプロイは、相互に関連したいくつかの作業を行うことによって実行できます。各作業ではどのようなことを行うのか、それを行う目的は何なのかを理解しておくことは、デプロイを確実に進めるために重要です。
デプロイに関連する作業とその内容
デプロイでは、「ビルド」や「リリース」「インストール」といった様々な開発作業が発生します。本項では、各作業の具体的な内容と、デプロイとの違いについて解説します。
●ビルド
ビルドとは、ITの分野では「プログラミングファイルを実行ファイルへ置き換える作業」のことです。もともとは、形のあるものを組み立てる際に使われ、英語では「build」と書きます。
通常、私たちは半角英数字や全角文字などを使い、プログラミングを行います。しかしコンピューターにとっては、人間がコミュニケーションするための言葉を理解できません。そこで、コンピューターが理解できる2進数(0か1かでデータを置き換えたもの、バイナリーファイル)の形へデータを変換する作業が求められます。
ただし、2進数のような機械が理解できる言葉に変換しただけでは、ビルドは終わりません。機械が理解できるようコンパイル(置換)されたファイル同士を連携させて、実行できるように調整する「リンク」を行う必要があります。つまり、プログラミングファイルを2進数のような機械の言葉へコンパイルした後、ファイル同士を組み合わせて調整する作業がビルドです。
ビルドが終わった後に、用意された環境へ実行ファイルを配置して、デプロイを完了させます。
●リリース(ローンチ)
リリース(ローンチ)とは、指定されたユーザーが利用できるように商品・サービスを提供開始することで、英語では「release」「launch」と書きます。ちなみにプレスリリースは「企業などが新商品・サービスなどに関する情報をいち早く速報として伝えるもの」のことです。
デプロイは指定の環境へシステムを配置して動かせるようにするだけで、その後の公開や広い範囲で利用できるようにする作業は含みません。デプロイ完了後に調整を行い、問題がなければリリースして、利用できるように公開します。
ちなみに、リリースのことを「ローンチ」と呼称することもあります。リリースと分けて使われるケースもありますが、ビジネスにおいてはほぼ同義ととらえて問題ありません。
●インストール
インストールは、ソフトウェアをダウンロードしてPC・スマートフォンなどのデバイスへ配置、解凍して起動できる状態にすることです。システム開発分野以外でも広く使われており、英語では「install」と書きます。「特にシステム開発分野では「指定環境へシステムを展開する行為」を指します。
インストール段階では環境への展開・導入は済んでいますが、実際に利用できるかどうかはこの段階では問われません。実際の利用にあたっては「アクティベート」を行い、デプロイを完了させます。
●アクティベート
本格的にシステムを起動して、機能をフルに利用できるようにすることです。英語では「activate」と書きます。システムにおいては、以下のような制限が行われることがあります。
- 機能制限
- セキュリティ確保のためのアカウントログイン
こういった制限を指定のフローで解除して、実際に使える状態にするのがアクティベートです。
デプロイはどのタイミングで行うのか
デプロイを行うタイミングは、企業によって異なります。
- アプリケーションのリリースタイミングの直前
- システムの各機能検証が終わって、全体を検証できるようになったタイミング
デプロイはシステム・アプリケーションの、サービス提供目前の段階で行われることが多いです。そのため、どのタイミングであってもソフトウェアとしてシステムが問題なく全体的に起動するか、デプロイで展開した後に入念に確かめる作業が重要です。
また、時間帯に関しては、できれば深夜0時のような夜間帯をおすすめします。夜間帯はユーザーのアクセスが集中せず、トラブルが発生しても着実に対応できます。ただし夜間のトラブルが、連日発生するようなタイミングは避けましょう。
デプロイを実施するうえで大切なこと
デプロイでは、次のようなポイントを押さえておくことが重要です。
●なるべく早く終わらせること
デプロイが終わらないと、リリースや検証環境での動作テストなどができません。そのため、なるべく早くデプロイを終わらせることが重要です。
デプロイにおいては、以下の作業が発生します。
- 環境へのファイル配置
- コンパイル
- リンクを行い実行ファイル化
いずれの作業もファイルのデータ量が多かったり、無駄なファイルがあったりすると、時間がかかってしまいます。システムのプログラミングや構築時には、次の内容を心がけると、デプロイ時にスムーズに作業できるでしょう。
- こまめにデータのエラーチェックを行う
- シンプルなコードに内容をまとめる
- 誰が見てもわかりやすいようにファイル量や配置個所を調整する
●確実に行えるようにすること
デプロイでは、システム展開や構築に失敗する可能性もあります。その際、以下のような確実性が確保できていることも重要です。
- 途中で作業を中断できるか
- ロールバックで問題のない状態まですぐ戻せるのか
途中で作業を中断できるようにするには、たとえば複数サーバーがある場合に、サーバーごとに1個ずつエラーチェックを行いながら配置する、といった対策が有効です。一部のサーバーに問題が出ても、問題の一部分さえ解決できれば大きなトラブルには発展しにくいでしょう。
また、ロールバックするためには、逐一システムのバックアップを行い、一段階前へすぐ戻せるようにすることが重要です。たとえばWordPressの場合、自動的にリビジョンという形でデータのバックアップが更新され、時間経過ごとに蓄積されていきます。指定のリビジョンを選択すれば、その状態までロールバックが可能です。
●安定した状況下で行うこと
日時や開発環境に関係なく、デプロイを完了させられる状況を作っておくことも必要です。デプロイが必要なのにタイミングが悪くできない、といった事態はできるだけ避けましょう。
対策としては、自動化の実行が考えられます。人の手によらず必要なデプロイを都度実行できれば、安定性を確保できます。また、展開の高速性も保証できるので安心です。ただし万が一の際には、自動化エラーを人が介してチェックできるようにしておくことも重要です。
実際の作業の現場ではデプロイで必要なことはまだまだありますが、まずは以上の3点を意識しましょう。
デプロイの手法を解説
デプロイする方法は、実施する環境や要件によって違いがあります。本項では、デプロイによってダウンタイム(システムを停止させること)の少ない手法を4種類解説します。
●ブルーグリーンデプロイメント
ブルーグリーンデプロイメントとは、既存のシステム環境をブルー、新システム環境をグリーンとするデプロイ手法です。
ブルー環境をバックアップとして利用し、グリーンへの移行中も既存システムはブルー環境で起動したままにできます。ブルーグリーンデプロイメントでは、以下のようなメリットが期待できます。
- グリーン環境の構築中もシステムを継続利用できる
- グリーン環境に問題があっても、いつでもブルーへ戻せるのでシステムが停止しない
- 担当者が安心してグリーン環境の構築ができる
その代わり、システム環境を2つ同時に運用する必要があるため、切り替えの際には注意が必要です。また、2システム分のサーバーリソースが必要なため、コストがかかる点にも注意しましょう。
●イミュータブルデプロイメント
イミュータブルデプロイメントは、ブルーグリーンデプロイメントの派生形ともいえるデプロイ手法です。ブルーとグリーンの環境で移行作業をしつつ、グリーンの環境に問題がないと判断できたら、ブルーの環境を消去します。
イミュータブルデプロイメントではブルーグリーンデプロイメントと異なり、システム環境が最終的には1つになります。システムの完全デプロイ環境後にはシステムが統一されるメリットは、以下のとおりです。
- サーバーリソースがブルーグリーンデプロイメントより圧迫されにくい
- 2つ同時に運用する手間が省ける
ただし、環境の統一後に問題が起きた場合、すぐに旧環境には戻せません。そのため、移行完了直後にロールバックを行えるように、システムを構築しておく必要があります。
●シンボリックデプロイメント
シンボリックデプロイメントは、ブルーグリーンデプロイメントやイミュータブルデプロイメントとは違い、最初からサーバー環境が1つなのが特徴です。ただし、サーバー内に仮想環境を2つ用意して、片方を旧システム、もう片方を新システムとしてデプロイを行います。
デプロイが一通り完了したら「シンボリックリンク」により、新システムへ環境を移行します。この手法のメリットは、以下の2点です。
- デプロイ作業の自動化が容易
- ひとつのサーバー環境で複数システムの稼働が可能
サーバー環境が1つで済むので、リソースコストを削減できます。
ただしサーバー自体は1つなので、物理的なサーバーエラーや再起動により、複数のシステム環境が影響を受けてしまいます。サーバーを統一する場合はサーバーそのものが停止しないように、マシンパワーを調整しておく必要があるでしょう。
●ローリングデプロイメント
ローリングデプロイメントは、システム環境を複数のサーバーによって分割し、1つずつデプロイしていく手法です。ロードバランサー手法で、それぞれのサーバー負担を減らす運用を行っている場合に活用できます。
この方法は、例えばサーバーA・B・Cがある場合、Aがデプロイ中でも、BとCの環境は提供されたままになります。すべてのシステムが停止するわけではなく、一部機能が利用できなくなるだけなので、システム自体が停止するリスクは減らせます。そのため、一部機能が一時的に使えなくなっても大きな影響がないようなシステムに関しては有効です。
一方で、サーバーごとに新旧システムが混在するため、間違って新環境をもう一度デプロイしてしまうといったリスクもあります。特に複数の担当者でデプロイする場合は、作業状態を確認しながら無駄な作業が起こらないよう、情報を共有する必要があります。