# 本番反映について知ろう

# はじめに

開発したアプリはユーザーが使えるようにインターネットにて使用できるようにしています。 そのためにはどのようなことをする必要があるのか開発の環境、流れ、デプロイについて学びましょう。

# 概要

ローカル環境、本番環境、デプロイについて知ろう。

# 目的

  • 開発の流れ、環境について知ろう
  • デプロイについて学ぼう

# 開発の流れ、環境について知ろう

皆さんはスマホでアプリを利用したことがあると思いますが、もちろんインターネットに繋がらないと開けないと思います。 ということは開発したアプリをユーザーに使ってもらうためには、インターネットに接続する必要があります。 しかし、開発中のアプリケーションをインターネットに繋ぐわけにはいきません。 では開発のときはどうするのかそれを今回学んでいきましょう。

開発には順序があってそれぞれを環境と呼んでいます。それぞれの特徴を理解しましょう。 企業や開発チームによって環境は少し違ったりしますが、環境は以下の 4 つに分類されます。

  1. ローカル環境(開発環境)
  2. 検証環境(テスト環境)
  3. ステージング環境
  4. 本番環境

# 1. ローカル環境(開発環境)について

ローカル環境はインターネットに接続していませんので、基本的に自分の PC 内で見れる環境のことです。

特徴

  • 開発のための環境
  • エンジニアがプログラムを自由に書くことができる
  • 書いたコードの動作を PC で確認できる
  • 共同で開発している場合にも共有することで別のパソコンでも見ることができる

# 2. 検証環境(テスト環境)

検証環境は、開発環境で作られたシステムをテストするための環境で、誤字や表記ミスなどをチェックし、適宜修正する段階です。
開発環境と分けることで、別の開発作業と並行してテストできます。
詳しくは触れませんがチェックするために「単体テスト」「結合テスト」などがあり、これらを用いてテストします。

特徴

  • ローカル環境で開発したものをテストする環境
  • 負荷やバグをあるかチェックする
  • 修正箇所が見つかれば修正する
  • 「テスト」を用いて確認する

# 3. ステージング環境

ステージング環境とは、できるだけ実際に使うときの状況(本番環境)に似せて作った動作確認用の環境です。 本番環境に移行したときにバグだらけだとユーザーは使用してくれません。

特徴

  • 最終確認用の環境
  • データベースや Web サーバはできるだけ本番環境と同じものを使う
  • 開発環境では動いたのに本番環境では動かないこともあるので確認必須

# 4. 本番環境について

本番環境とは、最後の環境であり開発のゴールです。

特徴

  • ユーザーに利用してもらえる状態の環境
  • アプリケーションの完成
  • この時点でインターネットで見れる状態
  • 本番環境では決まっていない作業をしてはいけない

開発の流れ、環境について理解できたでしょうか。 図として見てみましょう。 image

最終的に本番環境を目指すというところですが、みなさんが普段利用しているアプリケーションはこの 4 つ環境を経由して利用されているということです。
では具体的にどうやって一般ユーザーに公開するのか、デプロイという言葉を使いながら説明していきます。

# デプロイについて学ぼう

デプロイとは、特定の環境下でアプリケーションやシステムを使えるようにすることです。
要するに、開発したアプリケーションであればファイルを Web サーバーやアプリケーションサーバーにアップロードして、そのファイルを実行することでサーバー上でアプリケーションが動きユーザーが利用できます。 このファイルをサーバーにアップロードする作業がデプロイです。

特徴

  • 検証環境からステージング環境もしくはステージング環境から本番環境に移行することをデプロイという
  • デプロイすることでインターネットで見れるようになる
  • デプロイする時には。サーバーを止めなくてはならない
  • サーバーを止めなくてもデプロイする方法として、ホットデプロイがある

ではこのデプロイにするには何を使えばいいのかを説明していきます 使い方はココで説明すると長くなるので省きます。

デプロイするにはいくつかクラウドサービスがありますが、今回は代表的な 2 つを紹介します。

# AWS

image

AWS とは、 Amazon が提供するクラウドコンピューティングです。

クラウドコンピューティングとは、インターネット経由でデータベース、ストレージ、アプリケーションなど様々な IT サービスをオンデマンドで利用できるサービスのことです。 Amazon が提供するサーバー、ストレージ、データベースなど 200 以上のフル機能サービスをクラウド上で管理することができます。

特徴

  • シェア率が高い
  • セキュリティレベルが高い
  • 人的リソース不足を解消できる
  • 毎月の利用料が稼働によって変わる

# heroku

image

Heroku とは、いわゆる PaaS 、 Web アプリケーションの構築から保守、スケールの拡張などの運用作業までができるクラウドサービスで、 Salesforce 社の製品の1つです。

特徴

  • インフラに詳しくなくても構築、運用できる手軽さ
  • 無料で基本的な機能が使える
  • 個人向け開発でよく使われている

# まとめ

  • ユーザーがインタネットを経由して利用してもらうには本番環境にデプロイする必要がある。
  • 開発する場合はローカル環境で行う。
  • 開発の流れとしては ローカル環境(開発環境)検証環境(テスト環境)ステージング環境本番環境
  • デプロイするには主に AWS 、 Heroku が使われている。