6章クラウドコンピューティングの世界
クラウドは雲の上にある?
クラウドコンピューティングって何?
さて、最後はクラウドコンピューティングの話をしよう。説明する前にみんなはクラウドコンピューティングって聞いたことあるかな?
あるような、ないような……
ヒントを1つ。クラウドというのは「雲」って意味だ
うーん、インターネットで雨を降らせるとか……?
はずれ。クラウドコンピューティングとは、インターネット上の仮想マシンを借りてサーバーを建てることなんだ
雲関係ないし!
クラウドコンピューティングはとても広い意味を持つ言葉です。全体を表す用語定義としては、「インターネット上のコンピューター資源を利用して仕事をすること」となります。例えば、GmailやGoogleスプレッドシートのようなWebサービスもクラウドと呼ばれます。
しかし、サーバー管理者にとっては、「インターネット上の仮想マシンを借りてサーバーを運用すること」です。実際には世界のどこかにあるコンピューターを使うわけですが、借りる側はそれについて気にする必要はありません。「すべては雲の上で行われるから気にしなくていい」という意味で、クラウドコンピューティングと名付けられています。
仮想マシンというのは前に説明したよね
ソフトウェアで作った仮想のコンピューターだっけ?
そう。実際のコンピューターのメンテナンスは業者まかせ。使う側は必要な性能の仮想マシンを必要な台数だけ借りればいいんだ
クラウドのメリット
でも、仮想マシンを借りるってことはお金がかかるんだよね? だったら、コンピューターを買って自分で持ってたほうがよくないのかな?
それも一理あるね。じゃあ例えば、君が何かオンラインゲームの会社を立ち上げて、サービスを展開すると想像してみよう
オンラインゲームといっても幅広く、サーバー用コンピューター内の仮想空間で対戦するものや、ゲームの成績をオンラインで共有するもの、シナリオや武器などが追加配信されるものなど、さまざまです。しかし、サーバー用コンピューターが必要という点は共通しています。その他に、ネットワーク機器や開発・運営用の人員なども必要ですが、今回はサーバー用コンピューターだけに絞って考えましょう。
さて、サービスを始めるにあたって、サーバー用コンピューターを用意しよう。何台必要だと思う?
えっ? 1台じゃだめなの? え~と、余裕を見て20台ぐらいにしておこうかな……
残念なことに20台のサーバーをそろえるお金がなかった。全財産はたいても10台しか買えない
じゃあ、10台でいいよ! 初期投資はバーンといこう!
では、全財産をはたいて10台買ったとしよう。さて、どうなるかな……。残念! 君のサービスは人気が出なかった。サーバーにお金を使いすぎて肝心のゲームがショボかったんだ
何だよ、それー!
だったら最初は1台にして、あとから増やすことにしたら?
そういうときにクラウドは便利なんだ。仮想マシンを増やすときも、Webブラウザ上の画面で設定を変えるだけでいい。逆に多くなりすぎたら減らすこともできる
クラウドの最大のメリットは、サービスの成長に応じて掛けるコストを増やせるコスト最適化です。どれぐらいの収益が得られるかわからない開始時点はコストを小さくし(スモールスタート)、軌道に乗ってきたら徐々にサーバーも拡張していきます。
クラウドに対して、サーバー用の機器を自社内に置くことを、オンプレミスといいます(「建物内」を意味するpremiseから作られた用語)。オンプレミスでサーバーを増やす場合、コンピューター本体に加えて、設置する場所の確保、配線、各種ソフトウェアのセットアップなども必要になり、かなりの手間になります。
クラウドの場合は、仮想マシンを増やしたり増強したりする作業は、サービスページ上の設定変更だけで済みます。事業の発展にあわせてサーバー環境を拡張できるのです。
クラウドのおかげで、余裕のある大企業じゃなくても、小さくサービスを開始して大きく育てることが可能になった。新しい世界が開かれたといってもいいね
クラウドにもデメリットがある?
イイコト尽くめのようなクラウドだけど、もちろんデメリットもある
お金がかかる!
お金はクラウドじゃなくてもかかるよ。一番大きなデメリットは、クラウドサービスにトラブルが起きると、その上で運営されている全サービスに影響が出ることだ
あー、それは大変な騒ぎになりそうね
もう1つは、重要なデータを外部に置いて大丈夫かというセキュリティ面の問題だ
クラウドサービスに障害が発生すると、当然ながらその上で動いている全サービスに影響が出ます。「Webメールが送れない」「ECサイトで買い物ができない」「オンラインゲームが動かない」といった、オンラインサービスのトラブルが同時多発的に起こったら、大元のクラウドサービスに障害が発生している恐れがあります。マルチクラウド(複数のクラウドサービスを分散利用する)などの対策もありますが、クラウドを利用するにあたってそういう問題が起きうることは念頭に置いておくべきでしょう。
もう一方の、クラウドのセキュリティ上の問題は、サーバー運営者よりも一般ユーザーに関するものです。クラウドはデータを外部に置くので、データが流出する危険はゼロではありません。具体的に例を挙げると、「社外秘の文書をクラウドの文書管理サービスに置いていたら盗まれた」「顧客リストをクラウドに置いておいたら流出した」といったトラブルです。ただし、これらのトラブルは、クラウドを利用していない環境でも起きています。最近のトレンドでは、個人管理に任せるより、むしろクラウドを利用したほうが安全という方向に変わりつつあります。
最近のセキュリティ業界では「ゼロトラスト」って言葉が流行している。「ネットワーク上で完全に信頼できるものは何もない」を前提にして、セキュリティ対策を立てようという考え方だ
「何も信頼できない」ってちょっと痛々しいな
具体的には、「データのアクセス権限を必要最小限にする」「すべての通信記録を残す」といった対策なんだけど、そういう対策もクラウド上のサービスのほうがやりやすかったりするんだよね
クラウドの種類
クラウドにはいくつか種類がある。まず未設定の仮想マシンや仮想ネットワークを借りるもの。これだとOSやミドルウェアのインストールも自分でやらないといけない
大変そうだけど、自分でやらないといけないことなんだよね?
そうとは限らない。最終的な目的はWebサービスのアプリを作ることだから、OSやミドルウェアまでは用意してくれるクラウドもある
他には?
GmailやGoogleスプレッドシートみたいに、Webサービスが完成していてそれを使うだけというものも、クラウドに含まれる
クラウドの一般的な分類として、IaaS(イアース)、PaaS(パース)、SaaS(サース)の3種類があります。IaaSは未設定の仮想マシンを借りるもの、PaaSはある程度の環境がそろっていてすぐにアプリ開発を始められるもの、SaaSは完成したWebサービスを提供するものです。共通の「aaS」は「as a Service(1サービスとして)」の略なので、「IaaS」なら「インフラ(基盤)を1サービスとして提供するもの」となります。
イアースとかサースとか、ちょっとカワイイ呼び名だね
名前はちょっと気が抜ける感じもするけど、クラウドはコンピューター技術の最先端を行くものだから、どんなものかだけでも覚えておいたほうがいいよ
教えてくれてAZaaS(アザーッス)
全部自分で作るIaaS(イアース)
IaaSは仮想マシンと仮想ネットワークを借りて構築するタイプのクラウドだ。OSのインストールから全部自分でやることになる
大変そうだなー
その代わり、使うOSやサーバーソフトウェア、プログラミング言語なども自分の好みで選べるぞ
IaaS(Infrastructure-as-a-Service)は、サーバーをインフラから構築できるクラウドサービスです。未設定の仮想マシン、ストレージ、ネットワーク、ファイアウォールなどを自分で組み合わせるため、需要に合わせて最適なサーバーを構築できます。
IaaSを提供する代表的なサービスには、Amazon AWS(Amazon Web Services)やGoogle Cloud、Microsoft Azure(アズール)などがあります。ただし、これらのサービスは次に説明するPaaSも提供しており、必要に応じて使い分けることができます。
アプリ開発から始められるPaaS(パース)
PaaSはWebサーバーやデータベース、プログラム実行環境などが整った状態で提供されるクラウドサービスだ
それって何がいいの?
環境構築をしなくていいってこと。すぐにWebアプリのプログラミングから始めたいという人におすすめだ
PaaS(Platform-as-a-Service)は、プラットフォームを提供するクラウドサービスです。プラットフォームはアプリを動かすための土台となる環境のことです。PaaSには、サーバー、OS、データベース、プログラム言語の実行環境などがあらかじめ用意されており、すぐに自分で開発したWebアプリを動かすことができます。
一般ユーザー向けのSaaS(サース)
SaaSは他のクラウドサービスとターゲットが違う。クラウド上で完成したWebサービスを一般ユーザー向けに提供するものだ
GmailとかGoogleマップとかだよね
ふと疑問に思ったんだけど、クラウドを使わないで作ったWebサービスとどうやって見分けるの?
うーん、ユーザー側が見分けるのは無理じゃないかな。これはクラウドサービスの中での分類であって、Webサービスの種類を指すわけじゃないんだよね
SaaS(Software-as-a-Service)は、クラウド上に構築されたソフトウェア(アプリ)を提供するクラウドサービスです。有名なものにGoogleのGmail(メールソフト)やGoogleスプレッドシート(表計算ソフト)、Microsoft 365(Web版Excelなどを提供)などがあります。
また、Googleドライブ、OneDrive、Dropboxのようなファイル共有サービスもSaaSの一種です。
ファイル共有サービスは、データを記録するためのストレージを仮想化していて、その点でもクラウド向きなんだ
ストレージを仮想……?
ストレージ、つまり写真や音楽などのデータを保存する記憶装置だね。巨大なストレージを用意して、それをいくつかの仮想ストレージに分けて利用すれば、みんなで効率よくデータを保管できるわけだ
新しいスタイルのCaaS(カース)、FaaS(ファース)
ここまでの3つがクラウドの基本サービスだけど、最近では新しい形態も生まれている。代表的なものがCaaSとFaaSだ
何それ? 名前だけ聞いても全然わからない
CaaSは「コンテナ」という仮想化技術を採り入れたもので、FaaSは必要なときだけ短時間動かすものだ
やっぱりわからない……
CaaS(カース、Containers-as-a-Service)は、コンテナベースのWebアプリ開発に適したクラウドサービスです。コンテナは仮想化技術の一種で、サーバー構築の手間が非常に少ないという特徴があり、何十台ものサーバーを組み合わせた複雑なシステムなども構築できます。
FaaS(ファース、Function-as-a-Service)は、サーバーを常時動かしておく代わりに、ユーザーからアクセスがあったときだけ動かすタイプのクラウドサービスです。必要なときに最低限だけサーバーを動かし、稼働した分だけの課金になるため、大幅なコストダウンが見込めます。開発者がサーバーを意識する必要がないという意味を込めて、サーバーレスとも呼ばれます。
まぁ、どちらもクラウドの中ではトレンドの技術なので、名前だけでも覚えておくといいかもね
全部おまかせのmBaaS(エムバース)
最後に紹介するmBaaSは、Webアプリのバックエンドをすべて担当してくれるサービスだ。手軽にスマホ用のWebアプリを開発できると人気を集めている
バックエンド?
「バックエンド」というのはWebアプリのサーバー側のこと。データベースとかそれにデータを読み書きするためのプログラムを指す。逆にスマホ側のアプリはフロントエンドという
私たち寄りの部分がフロントで、そうじゃない裏側がバックってことね。そういえば、しばらく前にフロントエンド開発の説明聞いたね
mBaaS(mobile Backend-as-a-Service)は、スマホアプリに必要なバックエンドの処理を用意したサービスです。Webアプリの機能はアプリごとにさまざまですが、「サービスにログインする」「メッセージや画像を投稿する」などの処理は共通しています。mBaaSには、それらの一般的な処理を行うプログラムが用意されているため、開発者はフロントエンドだけを開発すればよくなるわけです。手軽にWebアプリを立ち上げられると、人気を集めています。
すごい便利じゃん。ややこしいのはイヤだから全部mBaaSにしようよ
確かに最初は便利なんだけど、サービスが軌道にのって、機能を追加したりパフォーマンス向上を狙ったりすると行き詰まることも多いんだよ。それを考えると、サーバーの構築やデータベースの使い方の勉強は必要なんだ
パブリッククラウドとプライベートクラウド
クラウドにはパブリックとプライベートという分類もあります。パブリッククラウドは、サービスの土台となるインフラ部分をみんなで共有して使うものです。クラウドコンピューティングという言葉からイメージされるのはパブリッククラウドですが、それでは障害対策やセキュリティ対策が不十分という考えから、プライベートクラウドが生まれました。
プライベートクラウドは特定の企業や組織用に用意されたクラウドです。独自のセキュリティ設定や障害対策を行うことができ、パブリッククラウドよりも安全性が高いとされています。
クラウドを体験したい
有名なクラウドサービスは、無料で試験的に使えるものもある。体験すること自体はすぐにできるよ
代表的なクラウドサービスには、Amazon社のAWS、Microsoft社のAzure(アズール)、Google Cloudがあります。いずれも無料で体験できるプランが用意されています。
※画像は2021年6月時点のものです。
Webページを見るとどれも「無料で開始」とか書いてあるね。すぐに始められそう!
でも、Webページに書いてあることがほとんどわかんない
今まで説明してきた「サーバー」「サーバーアプリ」「ネットワーク」などを体験して基礎知識を身に付けてから挑戦したほうがよいかもね