「サーバーレス」って言葉を聞いた時、ん?サーバが無い(レス)?何があるんだろう?って思いました。
サーバーレスはサーバを意識することなく、サービスを提供する形なのですが、クラウドサービスのSaaSやPaaSと何が違うんだろう?ってことも疑問に思います。
ということで、今回はサーバーレスに関して解説します!
因みにサーバレスのようにサーバーの最後に長音符号(-)を付けない記載もありますが、今回は長音符号を入れておきます。
サーバーレスとは?
サーバの定義
まず、サーバーの定義から理解しましょう。
サーバーとはコンピュータサービスを利用者に提供するために、システム構築に必要となってくるコンピュータのことです。プログラムを実行してネットワーク越しにデータを渡すための基盤となる部分ですね。
サーバーの利用方法は色々あり、オンプレミスのように自社にハードウェアを持ち込んで、OSやミドルウェアを導入し、サーバー同士をネットワークで繋ぐ方法やクラウドのように他社が保持するサーバーをネットワーク経由でレンタルするなどがあります。
サーバーの構築、運用、管理
オンプレミスの場合、サーバーはハードウェアの設置のための場所や電源の確保に始まり、OSのインストールや設定を行い、その上でミドルウェアを導入し、ネットワークへの接続、設定などを行う必要があります。システム稼働後はセキュリティ観点で、常にセキュリティリスクを意識しながら対策を行っていく必要があります。
つまり「構築、運用、管理が大変!」なのです。
となってくると、このサーバーの構築、運用、管理を誰かにお任せしたくなってきますよね。そこで、登場したのがクラウドサービスです!
クラウドサービスの種類
クラウドサービスには色々なパターンがあり、利用者の都合によって選択ができます。
良く知られているのが、「IaaS(イアース、アイアース)」、「PaaS(パース)」、「SaaS(サーズ)」ですが、それぞれの違いはクラウド事業者がハードウェアやOS、ミドルウェアなど、どこまでサービスとして提供してくれるか、ということです。
この時点でサーバーレスと言えると思えますが、これらは「クラウドサーバー」と呼んだりして、ある程度サーバーを意識しています。つまり、利用者が物理的なサーバーを意識しない、ということで、物理的なサーバーが無い訳ではありません。サーバーはクラウド提供者がしっかりと管理している形になります。
下の図に違いをまとめてみました。
上図の左の方が構築や運用のコストは掛かりますが、その代わり柔軟性が高いです。柔軟性が高いと、様々なソフトの利用やシステム間の連携やネットワーク構成などがやり易く、細かい要件には対応できるようになります。
SaaSはアプリケーションまで丸っとサービスとして提供してくれるので、利用者は非常に簡単にシステムを使うことができますが、やはり自社の細かい要件などには対応できておりません。
そこで、自分でプログラミングしたものを動かすにはPaaSを使う訳ですが、PaaSはアプリケーション(プログラム)を常に起動しているので、たまにしか処理が発生しない場合はコスト的はちょっともったいないことになります。
そこでサーバーレスが登場するのです!
サーバーレスの登場
クラウドサービスの「PaaSとSaaSの間」でより簡単にプログラムを実行できるサービスが欲しい!本当の意味でサーバーというものを意識しないで必要な時だけプログラムを実行したい!ということになり、サーバーレスが登場しました。
サーバーレスは「イベントドリブンでコードを実行する基盤」と定義でき、必要な時だけきっかけを作って、サービスを使えるようになります。
関数となるプログラムコードをクラウド上で実行できることから、「Function as a Service(ファンクション・アズ・ア・サービス)」、「FaaS」と呼ばれることもあるようですね。
下の図のように、PaaSとSaaSの間に「連携機能(関数)」が追加された感じですね。
代表的なサーバーレスのサービスと言えばAWSの「Lambda(ラムダ)」となりますが、その詳細に関してはインターネット上に様々な情報がありますので、そちらを参照ください。
サーバーレスのメリットは?
ここまでで、サーバーレスは大体理解できたと思いますが、改めてメリットを整理してみます。
サーバーレスはクラウド上でのサービスですが、常時サービスを起動しておく必要が無く、必要な時だけ利用して、使った分だけ利用料を支払う「従量課金制」になってます。
オンプレミスサービスと比べると、サーバー構築費やサーバーのハードウェアやミドルウェアの保守、運用費も不要となるため、全体コストで見るとかなり安くなると思います。
また、使い始めまでの期間も短くできるため、直ぐにシステムやサービスを構築したい時には非常にメリットが出ます。
まとめ
今回はサーバーレスに関して解説してきました。
サーバーの管理を不要にするクラウドサービスの中でも、イベントドリブン型で使った分だけの利用料で済むという、要件によっては非常に使い易いサービスですね。
PaaSも似たようなサービスに思えますが、PaaSは常時プログラムを起動している必要があったり、PaaSはどの言語でも動作するわけではないので、その辺も開発者としては制約になるかと思います。
それぞれの特徴をしっかり把握して、最適なサービスを使っていくことが大事ですね。
以上です!
参考URL)