hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

クラウドの基礎知識

Webの仕組み

Web とはインターネット上で標準的に用いられている、文書の公開・閲覧システムのこと。文字や画像、動画などを一体化した文書をネット上で公開・配布したり、また、それを入手・閲覧することができる。

“Web”とは「クモの巣」という意味であり、大規模な文書間の繋がりを図示すると、複雑な蜘蛛の巣のように見えることからこのように呼ばれている。

なぜWebアプリケーションを利用できるのか?

私たちは普段、PCやスマートフォンを利用して何気なくインターネットにアクセスしている。この時、様々なURLを通じてインターネットにアクセスしている。
URLを通じて世界のどこかにあるコンピューターに対して見たいページを要求(リクエスト)しているのである。リクエストを受け取ったコンピューターが、そのリクエストに応じたWebページを返すことで、Webページを見ることができる。

リクエストとレスポンス

例えば、ブラウザからYahoo!Japanにアクセスする場合、まずブラウザ上部の細長い枠にYahoo!Japanのネット上の住所であるURLと呼ばれるものを打ち込む。すると、以下のようにyahoo!Japanのトップページに遷移する。
 
https://tech-master.s3.amazonaws.com/uploads/curriculums//34dd35f982695004bf567470bba9458f.gif

ここでは、URLを打ち込んでEnterキーを叩いた瞬間に通信が走っている。通信元、即ち自身のパソコンと、Yahoo!Japanが所有するWeb上で情報を公開するために設計されたコンピューターが相互に通信しているのである。そのコンピューターからYahoo!JapanのTopページの情報が通信元のパソコンに送信されることで、ページの閲覧が可能になっている。

https://tech-master.s3.amazonaws.com/uploads/curriculums//1db457d854e4d85c32b012761840d3d7.jpeg

そのWebで情報を公開しているコンピューターのことを サーバ(server) と呼び、サーバから情報を受信して利用するコンピューターやソフトウェアを クライアント(client) という。

クライアントとサーバ

私たちが普段閲覧しているWebサイトは、クライアントとサーバの間で相互に通信が走ることによって閲覧することが可能になっている。

 クライアント

クライアント(Client)とは「何か(モノやサービスなど)を提供される人」という意味。Webサイトを閲覧するスマホやPCにあるWebブラウザのことを言う。 

 サーバ

サーバ(Server)とは「何か(モノやサービスなど)を提供する人」という意味。サーバという呼び方をするものには、ソフトウェアを格納する倉庫である ハードウェア をあらわすものと、Webサーバなどの ソフトウェア をあらわすもの、2種類がある。
 
Webサーバとは「Webブラウザからコンテンツを閲覧できる状態にしてくれているモノ」を意味する。

クライアントとサーバのやり取りの流れ

クライアントとサーバのやり取りは要約すると以下の3stepである。
 
1.クライアント側がサーバ側にリクエストを送る
2.サーバ側でリクエストを解析・処理してリクエストの答えを作る
3.サーバ側がクライアント側にレスポンス を返す

https://tech-master.s3.amazonaws.com/uploads/curriculums//b7cafb9bf778146c829cf03f86101da2.png

この3ステップを理解できれば、「なぜWebサイトを見ることができるのか」を理解できたも同然である。
 
その閲覧されるサイト、つまりWebアプリケーションは、どこかの誰かが開発し、それをWeb上に公開することで他のインターネットユーザーがそのサイトを閲覧することを可能にしている。しかし、そもそもどのようにしてそのような事をしているのか?

アプリケーションを世界に公開するまでの流れ

アプリケーションをWeb上に公開するためには、アプリケーションを開発する必要がある。そしてそのアプリケーションをサーバ上にデプロイ する必要がある。

 デプロイ

デプロイ(deploy)とは配置する、展開するといった意味の英単語。ここではサーバ上にアプリケーションを配置し、Web上に展開するといった意味合い。

アプリケーションをデプロイするまでの流れ

 
デプロイとはすなわち、「アプリケーションのプログラムをサーバ内に置くこと」である。アプリケーションをサーバにデプロイするまでの流れは、要約すると以下の3step。
 
1.アプリケーションを開発する
2.アプリケーションをデプロイするためのサーバを用意する
3.実際にアプリケーションをデプロイする

https://tech-master.s3.amazonaws.com/uploads/curriculums//619ad2b043e36a8a5547dcff768ee0d1.png
 
AWS は、2つめのステップの「サーバの用意」において必要となる。AWSは、サーバを提供してくれるサービス。

AWSについて知る前に、AWSの根幹の技術となっている "クラウドコンピューティング" という技術がある。
 

クラウドコンピューティング

ソフトウェアやハードウェアの利用権などをネットワーク越しに提供する技術を「クラウドコンピューティング」(Cloud Computing)と呼ぶ。
 
レンタルサーバとは異なり「必要な時に、必要な分だけ使う」事ができるので、スモールスタートでサービスを始める際に重宝する。
 

AWSについて

AWSとはAmazon Web Servisesの略で、通販で有名なあの米Amazonが提供している クラウドコンピューティングサービス の総称。
 
代表的なサービスにAmazon EC2(仮想サーバ)、Amazon S3(クラウドストレージ)、Amazon RDS(データベース)などがある。
 

AWSを使うメリット

クラウドコンピューティングを利用するメリットを先述したが、それ以外にも自社でサーバを購入し管理する「オンプレミス」という運用方法もある。
システムやサービスの導入・運用を検討する上でのクラウドコンピューティングとそれ以外を比較してみる。

  オンプレミス(自社サーバ) クラウドコンピューティング レンタルサーバVPS
コスト 資産 経費 経費
初期費用 サーバを購入する必要がある 特になし 多少の初期費用がかかることがある
ランニングコスト 電気代やサーバ設置賃料 時間あたり使用料 月額費用
調達期間 数週間〜数ヶ月 数分 数分〜数日
カスタマイズ 自由に拡張・交換できる 不可 不可
セキュリティ 隔離したネットワークを構築すれば非常に堅牢になる サービスの用意した仕組みに従う ネットワークやデータ領域が他者と共用になることがある
スペックの変更 不可 / 自分で購入して拡張する必要がある 可能 可能だがサーバ移行が必要なことが多い
既存システムとの連携 回線を用意することで社内アクセスかのように設定可能 オプションの機能で対応可能 不可
障害対応 自分で復旧するか業者に委託 サービスの用意した仕組みに従う サービスの用意した仕組みに従う
パフォーマンス 100%のパフォーマンスを発揮 物理サーバは共用のことが多いため他者の影響を受けることがある 物理サーバは共用のことが多いため他者の影響を受けることが多い

 

一般的に、「必要なリソースが変動しない場合 = 拡大期を終え運用のみとなったサービス」や「特殊なデバイスを利用したい場合」、「セキュリティのためにクラウドコンピューティングを利用できない場合」はオンプレミスを、それ以外の場合には、クラウドコンピューティングを利用することが多くなってきている。