たとえるなら

このサイトのマスコット、帽子をかぶった青い小鳥のルートンが旗を振っている

完成した商品を倉庫から店頭に並べる作業です。工場で作り終えても(実装が終わっても)、店頭に並べる(デプロイする)までお客さんは買えません。並べて初めて、商品はお客さんの手に届きます。

手元で開発 テスト環境 本番に配置 利用者に届く
手元で完成させただけでは誰も使えない。本番サーバーに配置して初めて届く。

もう少しくわしく

デプロイ(deploy)は「配置する」という意味で、完成したプログラムを、利用者が実際に使うサーバーに配置して動かす作業です。エンジニアが手元のパソコンでプログラムを完成させても、それだけでは世界の誰も使えません。インターネット上のサーバーに送り込み、動き始めて初めてサービスとして届きます。現場では「本番に上げる」と言い換えられることもあります。

現場では、利用者が実際に使う環境を「本番環境」、その手前で動作を確かめる環境を「テスト環境」「ステージング環境」などと呼び分けます。デプロイのときに実際に起きているのは、新しいコードをサーバーへ送る、動かすための準備を済ませる、古い版から新しい版へ切り替える、という一連の手順です。データベースの構造を変える作業が一緒に走ることもあります。

混同されやすいのがリリースとビルドです。デプロイは「サーバーに置いて動かす技術的な作業」、リリースは「機能を利用者に使える状態にすること」で、デプロイだけ済ませて機能は隠しておき、後日リリースする現場もあります。ビルドはその前段で、書いたコードを動かせる形に組み立てる作業です。ビルドして、デプロイして、リリースする、という順番になります。

段取りは現場によって大きく違います。テスト環境で確認を済ませ、日時を決めて本番に反映し、直後に動作を確かめるのが基本の流れです。いまはボタンひとつ、あるいは本体への合流を合図に自動で反映される仕組みを整える現場が増え、1日に何度も安全にデプロイするチームもあります。一方で、利用者が少ない深夜に作業時間を取り、関係者が待機する現場もあります。

事故が起きやすいのは、戻し方を決めずに反映することです。問題が出たときに前の状態へ戻す(切り戻す)手順を用意していないと、その場で慌てて別の壊し方をしてしまいます。もうひとつは、テスト環境と本番環境の設定が違っていて本番だけ動かない事態。金曜の夕方や大事なキャンペーンの直前に反映して、対応できる人がいなくなるのも定番の失敗です。反映したことを関係者に伝え忘れ、問い合わせが来てから気づく事故も起きます。

働きはじめたばかりの人は、本番環境に触るときは手順を声に出して確認してください。手元やテスト環境ならやり直せますが、本番は利用者が使っている場所です。エンジニアではない立場の人は、「デプロイします」と言われた時間帯は一時的に表示が乱れることがあると受け取り、確認を頼まれたら実際の業務の流れで触ってみるのが役に立ちます。いつ反映されるのかを先に聞いておくと、確認の予定も立てやすくなります。

デプロイを安全にする仕組みづくり自体が、いまは重要な仕事のひとつとして扱われます。テストを自動で走らせ、通ったものだけを反映する。問題が出たらすぐ前の版へ戻せるようにする。こうした整備が進むと、「怖いから月に一度」だったデプロイが日常の作業に変わります。小さく頻繁に出すほど一回あたりの変更が小さく、何が原因かも追いやすくなります。

現場での使われ方

「今夜デプロイするので、動作確認お願いします」

今夜、新しいプログラムを本番のサーバーに反映するので、そのあと正しく動いているか確かめてほしいという依頼です。どこを見ればよいかを一緒に聞いておくと、当日すぐ動けます。

「デプロイ直後からエラーが増えてます」

新しく配置したプログラムに問題がありそうだという警報です。原因の調査より先に、前の状態へ戻すかどうかを判断する場面で、対応の速さが影響の大きさを左右します。

「切り戻せる状態にしてから本番に出しましょう」

問題が起きたときに前の版へ戻す手順を用意してから反映したい、という提案です。戻せる備えがあるだけで当日の判断が速くなり、影響も小さく収まります。

「ビルドは通っていますが、まだデプロイしていません」

動かせる形に組み立てる作業までは済んだが、サーバーへの配置はしていないという状態の説明です。この段階では、テスト環境でも本番でも、まだ誰も画面では触れません。

よくある質問

デプロイとリリースの違いは何ですか?

デプロイは「プログラムをサーバーに配置する技術的な作業」、リリースは「サービスや機能を利用者に公開すること」です。デプロイしても機能を隠しておき、後日あらためてリリースする使い分けをする現場もあるため、同じ意味だと思い込まないほうが安全です。

デプロイはどれくらいの頻度で行うものですか?

現場によってまったく違います。仕組みを整えて1日に何度も反映するチームもあれば、日程を決めて月に一度まとめて行う現場もあります。自動化と切り戻しの備えが進んでいるほど、頻度を上げても安全に運べるようになるという関係で、頻度そのものが目的ではありません。

デプロイ中はサービスが止まるのですか?

止めずに切り替える方法が一般的になっていますが、仕組みや作業の内容によっては数分間止めることもあります。止める場合は事前に告知するのがふつうなので、案内の予定があるかを確認しておくと、利用者への連絡も前もって準備できます。利用者が少ない深夜に作業時間を取る現場もあります。

デプロイに失敗したらどうなるのですか?

前の状態へ戻す「切り戻し」を行うのが基本です。だからこそ、反映する前に戻す手順を用意しておくことが大切になります。いったん戻して落ち着いてから原因を調べ、直したうえでもう一度反映する、という順番で進めるのが安全です。その場で慌てて直そうとするのが、いちばん危ない対応です。

本番環境とテスト環境は何が違うのですか?

本番環境は利用者が実際に使う場所、テスト環境は公開前に動作を確かめるための場所です。できるだけ同じ構成にしますが、扱うデータの量や接続先が違うため、テストで問題がなくても本番だけで起きる不具合はあります。だからこそ、反映した直後に本番で確かめる作業が欠かせません。

関連用語

関連する記事

エンジニア職種図鑑

この言葉を使って働く人たちの仕事を、7つの職種で

ITの学び方ガイド

もっと知りたくなったら。教材の選び方を3ステップで