#本記事について
プログラミング初心者がサーバーとデプロイに関する知識を学んだので、その備忘録として載せております。
どうかお手柔らかにお願いいたしますm (- -)(_ _)ペコリ
##サーバー
・サービスや機能を提供する側のコンピュータのこと
・クライアントの要望に応じたデータを送るプログラム・ソフトウェア
(Ruby on Railsの開発、サーバーサイド開発)
・Webサービスなどを提供するパソコン本体
(Herokuではレンタルして、作成したアプリを展開するパソコン本体)
・例)レンタルサーバー、VPS、オンプレミス、クラウド
##クラウド
・「クラウドコンピューティング」の省略表現
・外部にデータを置いて、ネットワークを介して利用する形態になっているシステム
・インターネットなどのネットワーク経由で接続できる様々なサービス
・コンピュータ資源の利用形態
・クラウドもどこかにハードで自社製のサーバーをおいて管理しており、ソフトウェアを運用している。ソフトとハードはセット。
・例)SaaS、PaaS、IssS
##デプロイ
・使用できる状態にすること
・ネットワークを通じて、アプリケーションのシステムを公開し、利用可能な状態にすること作ったプログラムをしかるべき場所に置いたり、設定して、使える状態にすること
例)カナリアリリース、ブルーグリーンデプロイメント、イミュータタブルデプロイメント
##レンタルサーバー
・インターネット上に情報を公開するためのサーバーを、業者からレンタルして利用するサービス。
・業者からサーバーをレンタルして使う。低コスト。
・1台のパソコンを複数のユーザーでわけて使うような仕組み
##VPS(Virtual Private Server)
仮想的なパソコン環境を1人1台用意し提供する。
レンタルサーバーに比べ使用方法の自由度は高い。
##オンプレミス
サーバーなどの情報システムを使用者が管理する設備内に物理的に設置して運用すること
自社の中で情報システムを保有し、自社内の設備によって運用すること(自社で完結。メンテナンス等は省く)
##SaaS(Software as a Service)
・インターネット経由で提供されるソフトウェアパッケージ(既存品のソフトウェア、既にあるソフトウェア)
・クライアント側に導入せずにサービスを提供しているサーバーに直接アクセスをしてサービスを利用する状況を指す
##PaaS(Platform as a Service)
作成したアプリケーションなどをネットワーク上に公開するためのプラットフォーム(動かすために必要な土台となる環境、土台)を提供するサービス
##IaaS(Infrastructure as a Service)
ユーザーに仮想化したCPUやメモリ、ストレージなどをインターネット経由で提供するサービス
##仮想サーバー
・1台のサーバーで仮想的に複数のサーバーを稼働させる仕組み
・処理速度の向上やコストの低減などの利点
・一般的なサーバーは1つのサーバーに1つのOSが稼働する
##コンテナ
・他のユーザーから隔離された実行環境
・コンテナはホストOS上に作成されるもの
→コンテナは1つのOSで稼働するためメモリの消費は少なく、ストレージの使用もわずかで済む。
したがって、仮想サーバーのデメリットを解決する。仮想サーバーに比べ起動時間が短く、同じ性能のハードウェアであればより多くのコンテナを同時に動かす。
##Docker(コンテナの1種)
コンテナ化を用いてアプリケーションを開発、配置、実行するためのオープンソフトウェア
##カナリアリリース
・一部のユーザーにのみ新機能を公開でき、新しいバージョンにバグがないかを検証する手法
・新しい機能にバグがあったとしても、サービス全体には影響を及ぼさずに済む。
##ブルーグリーンデプロイメント
・仮想サーバーを用いて2つの本番環境を用意する。
・それぞれのバージョンを設定することができるデプロイの運用方法。
・ブルーとグリーンのサバーがあったとして、どちらかに問題があればどちらかにロールバックできる。同じ工程を行うことで継続的なデプロイができる。
・最新でリリースしていない他方の運用コストがかかってしまうこと。
##イミュータブルデプロイメント
・常に変更を行わない環境構築、古い環境を削除し、デプロイ時に新しい環境に切り替える手法
・コンテナの技術を用いることで環境自体を新しく構築する作業が容易
・古い環境は削除するのでコストも低減
以上です