文系プログラマの雑記

文系プログラマの考え、プログラミングの紹介

【AWSの前提知識】クラウドサービスとは

f:id:ShotaNukumizu_1000:20210718063627j:plain

おはようございます。Shotaです。

今日も昨日に引き続き、AWSについて徹底解説します。

AWSクラウドサービスの一つです。そのようなことはわかっていても、そもそも「クラウド」がわからない人はいると思います。

クラウドサービスについて質問してみると

「だいたいのことはわかっているけど、わかりやすく説明できない」

というような曖昧な答えが返ってくる人も少なくないでしょう。

そこで、今日の記事ではクラウドサービスについて解説します。



クラウドとは

f:id:ShotaNukumizu_1000:20210714061839p:plain

クラウドとは、いつどこでもインターネットにアクセスできる環境のことを意味します。クラウドサービスの代表例として、Microsoft社のOneDriveが挙げられます。

f:id:ShotaNukumizu_1000:20210819095310p:plain

ユーザはスマートフォンやパソコンから、インターネットを経由して利用します。従来であれば、自分の端末にインストールしたアプリや、保存したデータしか使うことができませんでしたが、クラウド環境であればインターネットを介して自分のデータやソフトウェアをクラウド上に保存することができます。

クラウド環境は自分で作って利用できますし、借りることもできます。


インフラをそのまま借りる「クラウドコンピューティング

クラウドの中でも、サーバーやネットワークなどのインフラ一式を貸してくれるサービスにAWSMicrosoft Azure, Google Cloudのようなプラットフォームがあります。これらのような、クラウド上に用意されたインフラを利用するサービス、またはそれを利用することをクラウドコンピューティングと言います。単にクラウドというと、このクラウドコンピューティングを一般的に指します。

クラウドコンピューティングでは、仮想化技術(後述)を使っていつでもどこでも好きなようにサーバやインフラを作って運用できる仕組みができています。使うときは、これらのサーバやインフラをレンタルすることが主流になります。レンタルなら、ハードウェアやネットワークなどのような物理的な設備を自信で用意する必要がないからです。

クラウドコンピューティングに関する詳細な記事は次の記事で書かれていますので、良ければ確認してください。

shotanukumizu-1000.hatenablog.com


クラウドのサービス提供方式

クラウドサービスは、サービスとしてどこまでを提供するかによって次の3つに分類されます。

  • SaaS(Software as a Service)
  • PaaS(Platform as a Service)
  • IaaS(Infrastructure as a Service)


それぞれ順番に解説していきます。これらは「どこまでを提供するクラウドサービスなのか」という基準で分類されます。

これらを総称してEaaS(Everything as a Service)という言葉もあります。ネットワーク経由で通信からソフトウェアまでを提供するサービスです。まさにAWSは、EaaSと言っても過言ではないでしょう。


SaaS

おそらくこれが最も馴染み深いクラウドサービスでしょう。これは、インフラやプラットフォームだけではなくアプリケーションまでを提供します。具体例として、SNSサービス、ブログサービスなどのような顧客向けのWebサービスが挙げられます。

【特徴】

  • 自由度が低い
  • 端末さえあればすぐに使える
  • 特別な知識は不要


PaaS

PaaSはプラットフォームまでを提供します。OSが入ったサーバに、ユーザがアプリケーションなどをインストールして使います。「お名前.com」のようなレンタルサーバがこれに該当します。

【特徴】

  • 好きなアプリをインストールできるが、対応していないアプリがある
  • サーバ管理に必要な知識がいる
  • アプリが必要な場面がある


IaaS

IaaSはインフラのみ、言い換えればネットワークやサーバのマシンなどを提供します。

【特徴】

  • セッティングが必要
  • サーバ管理に必要な知識がいる
  • アプリが必要な場面がある
  • 自由度が非常に高い


仮想化

f:id:ShotaNukumizu_1000:20210819101644p:plain

クラウドを支える上で重要な技術の一つに、仮想化があります。仮想化は次のように定義されています。


仮想化とは、ソフトウェアによって複数のハードウェアを統合し、自由なスペックでハードウェアを再現する技術で、限られた数量の物理リソース(CPU、メモリ、ハードディスク、ネットワーク等)を、実際の数量以上のリソース(論理リソース)が稼働しているかのように見せかけることです。
引用: 仮想化とは | VMware 仮想化ソリューション |富士ソフト株式会社


仮想サーバに割る当てるメモリやストレージは自由に増減できます。そのため、後で必要になった時に容量を増やしたり減らしたりしてメモリやストレージの性能を調整できます。とは言っても、仮想サーバの性能を上げるには限界があります。 性能を限界まで引き上げても、それ以上の負荷がかかった場合はサーバの台数を増やす必要があります。このような場合にも仮想化は有効で、サーバを簡単に複製することができ台数の増減がしやすくなっています。

要は、仮想的なサーバの場合は一台の物理サーバに何台も仮想のサーバを作成することができます。


分散処理

クラウドを支える上で重要な技術の一つに分散処理があります。分散処理とは、複数のデバイスに分散させて行う処理を指します。このような技術がよく使われているのがWebサイトで、複数のサーバに処理を分散させていきます。

万が一サーバに膨大な数のアクセスがあった場合、同じ機能や情報を持った複数のサーバに処理を振り分けることで一台あたりのサーバの負担を軽減したり、サーバがダウンしたりするような状況を防げます。

複数のサーバに対し情報を振り分けるのをロードバランサー(LB)といいます。ロードバランサーはそれぞれのサーバを見て負荷を分散させます。時と場合に応じて、負荷が高くなりすぎてしまったサーバを切り離すこともします。

AWSではロードバランサーとしてELB(Elastic Load Balancing)が導入されています。


まとめ

f:id:ShotaNukumizu_1000:20210713093812p:plain

今日の記事では、AWSを理解する前提知識として「クラウドサービス」について徹底解説していきました。AWSを利用する際に、このような概念を一通り押さえておくとより適切にサービスを選ぶことができます。

今日の記事がクラウドサービスへの理解を深める手助けになれば幸いです。

今日の記事はこれで終了です。

【参考】

jpn.nec.com