学習のアウトプット(サーバーとデプロイ)
【サーバーの定義】
サーバーという言葉は2種類の意味で用いる。
①クライアントの要望に応じたデータを送るソフトウェア・プログラム。
Ruby on Railsで作成したWEBアプリケーションなどがこれに当たる。
②WEBサービスなどを提供するパソコン本体。
Herokuなどがこれに当たる(レンタルして、作成したアプリを展開するパソコン)
【サーバーの種類】
大きく分けて4つある。
・レンタルサーバー
インターネット上に情報を公開するためのサーバーを、業者からレンタルするもの。
自分で環境を持たなくて良いので、手軽・低コストで利用できる。
・VPS
レンタルサーバーは1台のパソコンで複数のユーザーに環境を提供するが、
VPSでは1人に1台のパソコン環境を提供する。
これにより使用方法の自由度が増す。
・オンプレミス
サーバーやソフトウェアの環境を自身の管理下に置く運用形態。
・クラウド
コンピュータの利用形態を指す言葉。
ストレージのイメージが強いが、ソフトウェアやハードウェアの提供も行なっている。
【クラウドの種類】
・SaaS(Software as a Service)
クライアント側に導入せず、サービスを提供しているサーバーに直接アクセスして利用するサービスのこと。
例)Office 365・Gmail・Dropbox・サイボウズ
・PaaS(Platform as a Service)
作成したアプリケーションなどを公開するための環境を提供するサービスのこと。
例)Heroku
・IaaS(Infrastructure as a Service)
仮想化したストレージやCPU、メモリなどをユーザーに提供するサービス。
使用するごとに料金が発生する。
例)Microsoft Azure・Google Compute Engine
【仮想サーバー】
通常は1台のサーバーで1つのOSを運用するが、1台で複数のサーバーを稼働させることを仮想サーバーという。
メリット:処理速度の向上・保守コストの削減
デメリット:メモリが膨大になる・高度な技術が必要・設定や管理の負荷がかかる
【コンテナ】
他のユーザーから隔離された実行環境のことで、ホストOS上で作成される。
使用するメモリ容量が少ないので、仮想サーバーに比べて起動速度が速く、1つのハードウェアで複数起動することができる。
実現するためにはコンテナ管理ソフトウェアが必要。
【Docker】
コンテナ化を用いて開発・配置・実行をするためのオープンソースのコンテナ管理ソフトウェアで、圧倒的なシェアを占めている。
【デプロイの手段】
大きく分けて3種類ある。
・カナリアリリース
新しいバージョンを一部のユーザーだけに提供し、問題がないかどうかを確認する手法。
問題が発生したとしても全体のユーザーへの影響が出ないメリットがある。
・ブルーグリーンデプロイメント
仮想サーバーを利用して、あるバージョン(ブルー)をリリースしている間に、もう1つのバージョン(グリーン)を構築し、完成したらバージョンを切り替える手法。
問題が発生した場合はブルーに切り替えを行い、容易にロールバックできる。
ただし常に2つのサーバーの管理コストがかかる。
・イミュータブルデプロイメント
コンテナの技術を使った手法。
新しい環境を提供し、問題がなければ古い環境を削除する方法。