こんにちはタックです。今回は「サーバーのクラウド化がもたらした変化」についてです。
サーバーのクラウド化ってイメージがつかないんですけど、どういうことでしょうか?
googleドライブによって、写真や文書ファイルがSDカードやUSBを使わずに管理できるようになったように、サーバー管理も物理的にする必要がなくなりました。
サーバーがクラウド化して何が便利になったのかがわかると、AWSやGCPがなぜ企業で採用されるようになったのかがわかるようになります。
この点が理解できるとAWSを学習する意味や理解度が格段にあがります。
そもそも、サーバーって何?という方はこちらの記事を先に読むと理解しやすいです。
それでは見ていきましょう。
サーバークラウド化の3大変化
サーバーがクラウド化された大きな変化は次の3点
- 自社管理から他社管理へ
- 初期投資から従量課金制へ
- 拡張性の向上
これらの変化を理解するために、オンプレミス時代、クラウド時代をまず見ていきます。
その後、クラウド時代からサーバーレスコンピュータサービス時代にどう変化しているのか見ていきます。
サーバーレスコンピュータサービスは現在進行系です。時代の移り変わりをリアルに体感していきましょう。
オンプレミス時代
オンプレミスとは「サーバーなどのインフラ設備を自社で管理していること」です。
昔は写真をSDカードで保存したり、音楽をCDに保存していたのと同じです。
2010年位までは一般的なインフラの形でした。しかしながら、自社でサーバーを管理するには次の3点の問題がありました。
- 多額の初期費用がかかる
- スペックを簡単に変更できない
- ネットワークに障害が発生したときに、自社で対応する必要がある
多額の初期費用がかかる
サービスをリリースするに当たり、自前でサーバーなどを調達し、管理する場所も用意しなければなりません。
そのため、場所代、サーバーの購入代など多額の初期費用が必要になります。
サーバーなどを購入しないといけないため、時間もかかりました。
スペックを簡単に変更できない
サーバーを自社の中に物理的に用意するため、簡単にサーバーのCPUやメモリなどのスペックを変更できません。
一度買った車を「やっぱり狭いからもっと大きな車に買い換えよう」とすぐには決断できませんよね。
お金や時間がかかるからです。
障害発生時に自社対応
ネットワークに障害が発生した時、自社でつくったサーバーは当然自社でしか対応できません。
自社で対応するには、インフラに詳しい人材が必要になります。
大企業ならまだしも、スタートアップでインフラ専門の人材を雇うことは難しいです。
- 多額の初期費用がかかる
- スペックを簡単に変更できない
- ネットワークに障害が発生したときに、自社で対応する必要がある
これら3点の事情からみんなが思ったことは「誰かサーバーを用意して必要な分だけ使わせてくれないかな」でした。
この要望に応えたのがAmazonです。AWSの登場です。
クラウド時代
AWSのEC2に代表されるクラウドサーバーとは何か。一言で言えば「自分で物理的なサーバーを用意しなくても、PCでポチポチするたけで使えるサーバー」です。
これまで画像はSDカード、音楽はCDに保存していたものをグーグルドライブに保存できるのと同じです。
自分で物理的なモノを用意する必要がありません。もう少し詳しくクラウドサーバーを見ていきましょう
クラウドサーバーとは何か
世界中のどこかにある物理的なサーバーが仮想上で複数のサーバーをつくっています。
動画が再生されると、複数人が活躍しているレベルで生産性を上げているけど、実際本人は一人しかいないみたいなものです。
サーバーがクラウド化されると何がいいのか。オンプレミスのときに感じていた次の悩みを解決してくれることです。
- 多額の初期費用がかかる
- スペックを簡単に変更できない
- ネットワークに障害が発生したときに、自社で対応する必要がある
従量課金制
クラウドサーバーを利用する場合「従量課金制」になります。使った分だけ金額を支払うシステムですね。
他社がクラウドサーバーを用意し、従量課金制になることで、次のメリットが生まれます。
- 多額の初期投資が必要なくなる
- 使った分だけ費用がかかるので、無駄な投資をしなくて済む
スマホを契約する時、通信量の20GBのプランに加入したけど、実際3GBしか使っていない。
こんなとき明らかに無駄が生じています。その点使用量に合わせて支払額が決まるシステムであれば、3GB分の料金しか支払わないため得になるのです。
拡張性の高さ
クラウドサーバーは「スペックの変更が簡単」です。なぜなら、物理的なサーバーをもっているわけではないからです。
レンタカーなら狭ければ、広い車に変更することも簡単です。車を購入してしまうとそうはいきません。
サービスの拡大やアクセス数の増加とともに、サーバーを追加したり、スペックを変更することが簡単にできます。
こうした変更をWeb上の操作で完結できてしまうため、自前でサーバーを変更するのに比べて圧倒的な速度で柔軟に対応できるようになりました。
ネットワーク障害の対応を任せられる
自社でサーバーを持っていないため「物理的な管理から開放」されます。
電源やネットワークなどのインフラの管理、サーバーなどの物理的な機器の管理を任せることができます。
物理的な管理をする人材が必要なくなり、新たな価値を生み出す時間に当てることができるようになります。
ここまで見てきたように、オンプレミス時代の課題はクラウド化によって解消されました。
オンプレミスからクラウド化、利用者にとってはすごい便利ですね。もはや言うことなしです!
確かにそうですよね。しかし、これで終わらないところが人間の面白いところです。「もっと簡単・便利に使いたい」という気持ちがさらなる進化を生んでいきます。
「サーバーのことは全部クラウドサーバー提供会社に任せる時代」に進み始めます。
Amazonが2014年にLambda、Googleが2016年にcloud functionsの提供を始めます。
サーバーレスコンピュータサービス時代
サーバーレスコンピュータサービスとは「サーバーのことを気にしないでアプリの開発ができますよ」というサービスです。
サーバーはしっかり使っています。サーバーなしで管理できるシステムではありません。
オンプレミスからクラウド化がされた時は「自分たちの状況に合うサーバーに、柔軟に拡張したい」を実現してくれました。
クラウド化からサーバーレスコンピュータサービスの変化は「サーバー選ぶの大変だしコストは最小限に抑えたいから、いい具合に自動化してほしいな」を実現するものです。
「いい具合」を実現するために出てきたのが「イベント」と「オートスケーリング」です。
イベント
「いい具合」を実現するためには「必要なときに必要なだけアプリケーションを起動する」必要があります。
「必要な時」を決めるのがイベントです。
これまでは「アプリケーションを常に待機状態にしておき、リクエストを待っていました」常に臨戦態勢だったのです。
常に臨戦態勢だと、あらゆる事態に対応できますが、必要以上に体力を使ったり、コストが掛かります。
平和な村の中で、常に軍隊全体が戦う準備を整えていても、戦う相手がいなけれは時間と労力の無駄になります。
「他の村から襲われたときに戦う」というイベントを設定しておけば、必要最低限の準備で対応できるのです。
2つの方式をまとめておきましょう。
「リクエストリプライ方式」:リクエストごとにアプリケーションを起動・終了させる
「イベントドリンブン方式」:必要なサービス毎にアプリケーションを起動・終了させる
イメージは付きましたけど、イベントとは具体的にどういうことに対して設定するのでしょうか。
例えば、ユーザーがボタンを押す、ファイルをアップロードする、データベースに変更がある、APIが呼び出される、AWSのサービスに変更がある場合です。
イベントが発生していないときは機能は実行されません。
サーバーがリクエストを待ちながらずっと稼働するようなこともありません。
サーバーレスコンピュータサービスの利用者が行うことは次の2つに集約されます。
- アプリケーションの機能の開発
- 機能を駆動させるイベント設定
あとは全てサービスに任せることができます。
イベントが発生したときに起動させる機能(Function)だけをサービス利用者が開発し、それ以外のサービスはすべてクラウドサービス企業が責任を持つサービスのことをFaas(Function as a servise)といいます。
サーバーレスコンピュータサービスの一つの形態ですね。
オートスケーリング
オートスケーリングとは「サーバーの負荷に応じて自動的にサーバーの台数やスペックを調整してくれること」です。
イベントによって「いい具合を実現するために必要な場合」を決めることができました。
しかし、必要な場合に自動的にサーバーの台数やスペックが調整されなければ、負荷に耐えられません。
「村が襲われたときに戦う」というイベントを設定していても、敵1万人に対して300人を出陣させていては一瞬で敗れ去ります。
敵が300人なら500人を、1万人なら1万2千人を自動的に出陣させれなければ意味がないのです。
まとめ
最後にまとめていきましょう。
サーバーの管理はオンプレミス、クラウド化、サーバーレスコンピュータサービスの流れで進化してきました。
サーバー管理がオンプレミスからクラウド化されることによって次の課題が解決されました。
- 多額の初期費用がかかる
- スペックを簡単に変更できない
- ネットワークに障害が発生したときに、自社で対応する必要がある
サーバーのクラウド化が進んだ結果、さらに便利なサービスを利用者は求めて、サーバーレスコンピュータサービスが誕生しました。
サーバーレスコンピュータサービスは次の特徴がありました。
- 利用者がサーバーを意識することなく利用できる
- イベント
- オートスケーリング
「いい具合」にサーバーを使うための仕組みが、イベントとオートスケーリングでしたね。
サーバーレスコンピュータサービスって最強ですね。もう困ることないですね。
確かに劇的に便利になるサービスです。しかし、課題もあります。使いこなせる人材が少ない、監視体制をどうするか。これからも学び続けたいと思います。
この記事がAWSがわからないという状態を一歩でも改善できたら嬉しいです。ではまた!
コメント