0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ステージング

0
Posted at

ステージング環境とは?ローカル・本番との違いから基本的な使い方まで

Web開発をしていると、よくこんな言葉を見かけます。

  • ローカル環境
  • ステージング環境
  • 本番環境

最初は「環境って何が違うの?」となりやすいですが、それぞれ役割が違います。

この記事では、ステージング環境とは何かを中心に、ローカル環境・本番環境との違いや、Railsを例にした基本的な使い方まで整理します。


1. ステージング環境とは何か?

一言でまとめると

ステージング環境とは、本番公開する前に、本番に近い状態で動作確認をするためのテスト環境です。

Webサービスでは、開発した機能をいきなり本番環境に公開するのは危険です。

例えば、新しくログイン機能を追加したとします。

自分のPCでは正常に動いていても、本番では、

  • APIがうまく通信できない
  • DB接続に失敗する
  • 環境変数が設定されていない
  • 画像が表示されない
  • 本番用サーバーでだけエラーが発生する

といった問題が起こる可能性があります。

そこで、本番環境に出す前に本番に近い環境で最終確認する場所としてステージング環境を用意します。


なぜステージング環境が必要なのか?

一番大きな理由は、

本番環境で問題が起きる可能性を減らすため

です。

Web開発では、次のような流れで機能を公開することがあります。

┌─────────────────┐
│  ローカル環境       │
│  自分のPCで開発     │
└────────┬────────┘
         │
         │ 実装完了
         ↓
┌─────────────────┐
│ ステージング環境    │
│ 本番に近い環境で確認 │
└────────┬────────┘
         │
         │ 問題なし
         ↓
┌─────────────────┐
│   本番環境          │
│ ユーザーが利用する   │
└─────────────────┘

例えばECサイトに「お気に入り機能」を追加する場合、

ローカル環境
↓
お気に入り機能を実装

ステージング環境
↓
実際のサーバー上で動作確認

本番環境
↓
ユーザーに公開

という流れになります。


ローカル・ステージング・本番の違い

環境 主な目的 主に使う人
ローカル環境 開発・修正 エンジニア
ステージング環境 本番前のテスト エンジニア・社内メンバー
本番環境 実際のサービス提供 一般ユーザー

イメージとしては、

ローカル環境
= 練習

ステージング環境
= リハーサル

本番環境
= 本番

と考えると分かりやすいです。


2. 基本的な使い方

ここからはRailsを例にして考えてみます。

例えば、Webアプリに新しく

お気に入り機能

を追加するとします。


① ローカル環境で開発する

まずは自分のPCでRailsを起動します。

bin/rails server

ブラウザから、

http://localhost:3000

にアクセスします。

ここで、

  • ボタンを押せるか
  • DBに保存されるか
  • エラーが出ないか

などを確認します。


② Gitにコードを保存する

実装が終わったら、変更したコードをGitに記録します。

git add .
git commit -m "お気に入り機能を追加"
git push origin main

会社では、直接mainブランチにpushするのではなく、

featureブランチ
↓
Pull Request
↓
レビュー
↓
mainへマージ

という流れになることも多いです。

例えば、

git switch -c feature/favorite

で作業用ブランチを作成します。


③ ステージング環境へデプロイする

コードをステージング環境へ反映します。

イメージとしては、

GitHub
  │
  │ デプロイ
  ↓
ステージングサーバー

となります。

サービスによっては、GitHubにpushすると自動的にデプロイされる場合もあります。

例えばステージング環境のURLが、

https://staging.example.com

だった場合、このURLへアクセスして実際の動作を確認します。


④ ステージング環境で動作確認する

例えば、お気に入り機能なら、

商品ページを開く
↓
お気に入りボタンを押す
↓
APIリクエストが送信される
↓
ステージングDBに保存される
↓
画面にお気に入り状態が表示される

という一連の流れを確認します。

ここでは単に画面だけを見るのではなく、

  • フロントエンド
  • API
  • DB
  • サーバー
  • 環境変数

なども確認します。


ステージングDBとは?

ステージング環境には、ステージング用のDBが用意されていることがあります。

┌────────────────┐
│ ローカル環境       │
└────────┬───────┘
         ↓
     ローカルDB

┌────────────────┐
│ ステージング環境   │
└────────┬───────┘
         ↓
    ステージングDB

┌────────────────┐
│ 本番環境           │
└────────┬───────┘
         ↓
       本番DB

それぞれ別のデータベースです。

例えば、

ローカルDB
→ 自分の開発用データ

ステージングDB
→ テスト用データ

本番DB
→ 実際のユーザーデータ

という違いがあります。


Railsでは環境によってDBが変わる

Railsでは環境を指定してコマンドを実行できます。

例えば、

RAILS_ENV=development bin/rails db:migrate

なら開発環境です。

RAILS_ENV=staging bin/rails db:migrate

ならステージング環境です。

RAILS_ENV=production bin/rails db:migrate

なら本番環境です。

つまり、同じ

bin/rails db:migrate

という操作でも、

どの環境に対して実行しているのか

によって影響するDBが変わります。


環境変数も環境ごとに違う

ステージング環境と本番環境では、環境変数も分けられていることがあります。

例えば、

DATABASE_URL=...
API_KEY=...
APP_URL=...

などです。

イメージとしては、

ローカル環境
DATABASE_URL=localhostのDB

ステージング環境
DATABASE_URL=ステージングDB

本番環境
DATABASE_URL=本番DB

となります。

そのため、

ローカルでは動く

↓

ステージングでは動かない

ということも普通にあります。

例えば、

ローカル
API_URL=http://localhost:3000

ステージング
API_URL=https://api-staging.example.com

本番
API_URL=https://api.example.com

のように設定が違うからです。


ステージング環境で確認すること

ステージング環境では、例えば次のようなものを確認します。

確認内容 具体例
画面 レイアウトが崩れていないか
API 正常にレスポンスが返ってくるか
DB データが保存されるか
ログイン 認証処理が正常か
環境変数 正しく設定されているか
外部サービス APIなどと接続できるか
エラー サーバーログに問題がないか

特に注意したい「今どの環境なのか」

実務でかなり重要なのが、

今、自分がどの環境を操作しているのかを確認すること

です。

例えば、

bin/rails db:reset

のようなDBを操作するコマンドがあります。

ローカル環境なら問題なくても、本番DBに対して間違えて実行してしまうと、大きな問題になる可能性があります。

そのためコマンドを実行する前には、

今いるのはローカル?

ステージング?

本番?

どのDBに接続している?

を確認する癖をつけることが大切です。


全体のイメージ

最後に、開発から本番公開までの流れをまとめます。

┌─────────────────────┐
│        開発者PC          │
│                       │
│      ローカル環境        │
│                       │
│ React / Rails / DB     │
└──────────┬──────────┘
           │
           │ git push
           ↓
┌─────────────────────┐
│        GitHub          │
└──────────┬──────────┘
           │
           │ deploy
           ↓
┌─────────────────────┐
│    ステージング環境     │
│                       │
│ 本番に近い状態でテスト   │
│                       │
│ ステージングDB          │
└──────────┬──────────┘
           │
           │ 問題なし
           ↓
┌─────────────────────┐
│        本番環境          │
│                       │
│ 実際のユーザーが利用     │
│                       │
│        本番DB           │
└─────────────────────┘

まとめ

ステージング環境とは、

本番公開する前に、本番に近い状態で動作確認をするための環境

です。

開発の流れとしては、

ローカル
↓
開発

GitHub
↓
コード共有・レビュー

ステージング
↓
本番前の確認

本番
↓
ユーザーに公開

と考えると分かりやすいです。

特に実務では、

「今どの環境を操作しているのか?」

「今どのDBに接続しているのか?」

を意識することが非常に重要です。

最初は「ステージング」「本番」「DB」「デプロイ」など知らない単語が多く感じますが、それぞれ単体で覚えるよりも、Webサービスが開発されてからユーザーに届くまでの流れの中で覚えると理解しやすくなります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?