サーバーレスとは?インフラ管理を意識しないクラウドの利点を解説!

サーバーレスとは物理的なサーバーや仮想サーバーを使用しない新しいインフラです。システムを運用するにあたって、各種サーバーの管理作業から解放されるため、近年は活用が広がっています。
システムの運用担当者ならば理解しておきたい仕組みですが、まだまだ詳しく理解されていない状況です。今回はサーバーレスとはどのような仕組みであり、インフラにどのような影響を与えるのか、基本知識をまとめて解説します。
サーバーレスとは
システム運用の世界におけるサーバーレスとは「自社で物理的や仮想的なサーバーを持たず、サーバーをクラウドサービスとして提供してもらうこと」を意味します。意味を理解しづらいかもしれませんが、サーバーを保有するのではなく、サーバー機能だけを提供してもらうことだと考えれば良いでしょう。サーバー機能なしで、システムを運用することは難しいため、サーバー機能そのものが不要になるとは誤解しないようにしてください。
サーバーレスは各種クラウドサービスが提供していて、例えば「AWS Lambda」や「AzureFunctions」などが挙げられます。これらのサービスは仮想サーバーとは異なり、サーバーの機能だけを提供するものです。例えば、プログラミング言語であるPythonの実行環境がインストールされていて、作成したプログラムを実行できます。
本来、Pythonを実行するためには、サーバーを用意して実行環境を構築しなければなりません。しかし、サーバーレス環境を活用すれば、そのような準備や利用してからの管理が不要になります。
サーバーレスアーキテクチャの概要
上記のとおり、サーバーレスは自分たちでサーバーを用意せず実行環境を確保することです。ただ、実際にはサーバーだけではシステムを構築することができないでしょう。そのため、続いてはサーバーレスアーキテクチャの概要を紹介します。
アーキテクチャの例として、AWSが紹介している内容を取り上げます。Webアプリケーションを構築する事例としては、以下の通りです。
こちらの事例から判断できるとおり、サーバーレスに加えてデータベースやストレージなどが求められます。本来、サーバー内に格納するようなデータは、サーバーレスのサービスとは別にデータベースやストレージのサービスに格納する必要があるのです。
ただ、これはWebアプリケーションを構築する一例であり、サーバー機能だけでシステムを構築することもあります。単純なプログラム実行は、サーバーさえあれば解決できることもあり、このようなアーキテクチャが絶対的というわけでもないのです。
サーバーレスを採用するメリット

システムを構築するにあたってサーバーレスを採用すると、いくつものメリットを享受できます。具体的に、どのようなメリットがあるのか理解を深めていきましょう。
サーバーを構築する必要がない
サーバーレスを採用する最大のメリットは、サーバーを構築する必要がないことです。一般的に、サーバーの構築は時間とお金などのコストがかかります。しかし、サーバーレスを採用することによって、この部分の負担がなくなるのです。
また、サーバーの構築がなくなることによって、人材の確保なども不要になります。例えば、社内で専門的なスキルを持つ人材を確保したり、ベンダーに依頼したりしなくて済むのです。これによって、サーバーを必要としてから構築が完了するまでの時間が短縮できます。これもメリットだと考えてよいでしょう。
ただ、現時点でサーバーレスアーキテクチャでは実装が難しいシステムもあります。そのため、サーバー構築に関するメリットが、必ず享受できるとも限らないのです。
サーバーの管理が不要となる
自前でサーバーを保有しないため、管理が必要なくなります。サーバーの管理はセキュリティなどの観点から避けられないため、これがなくなることは大きなメリットです。安全性の向上にもつながります。
サーバーの管理は定型的な作業が多くありますが、専門的なスキルも必要です。そのため、確実に運用しようと考えるならば、サーバー運用ができる要員が求められます。時には外注しなければなりません。
しかし、アーキテクチャをサーバーレスに切り替えると、このような管理業務から解放されます。社内で担当者を確保していたならば、他の業務に割り当てできるようになるでしょう。
また、既存のサーバーをサーバーレスアーキテクチャに切り替えれば、これらの管理からも解放されます。簡単に置き換えられるとは限らないものの、メリットを踏まえると置き換えを検討しても良いでしょう。
突発的な負荷に耐えやすくなる
サーバーレスのサービスは、自動的にスケールを変更してくれるものが多くあります。本来は、想定される負荷を踏まえてサーバーを構築しなければなりませんが、サーバーレスならばほとんど意識する必要がありません。
使用するサービスにはよるものの、サーバーレスならば、臨機応変にスケールを変更してくれます。費用などの制限から、スケールに上限を定めることが一般的ですが、その範囲内ならば自動的に変更してくれるのです。負荷分散の設計なども必要なく、基本的にはすべてが自動的に実行されます。
スケールの変更が容易になれば、突発的な負荷に耐えることが可能です。また、高い負荷を見越して、最初から高スペックな環境を用意する必要もありません。スケールの柔軟性は、サーバレスに限らずクラウド全体のメリットですが、こちらも認識しておくと良いでしょう。
サーバーレスを採用するデメリット
サーバーレスには解説したようにいくつものメリットがあります。ただ、それと同時にデメリットもあるため、こちらについても理解を深めましょう。
ベンダーに依存しやすくなる
サーバーレスのサービスは、ベンダーごとに特徴があります。例えば、AWSとAzureでは、似たサービスであるものの細かな部分は大きく異なったサービスです。そのため、仕組みなどの流用は難しく、ベンダーを変更するならば作り直さなければなりません。
また、サービスの動作そのものが、ベンダーに依存するデメリットもあります。例えば、AWSに障害が起きると、復旧するまで自分たちではどうにもできません。可用性の高いサービスを契約するしか対策がないのです。
クラウドサービスを採用すると、どうしてもそのベンダーへの依存度が高まります。時には制約が増えてしまい、柔軟なシステム設計ができなくなるかもしれません。サーバーレスを進めると、後から変更できない部分が生じてしまうことがデメリットです。
開発に制限が生じる
概要で解説したとおり、サーバーレスとはサーバーの機能をサービスとして提供してもらうものです。特定のベンダーが提供している以上は、その範囲内でしか利用できないことがデメリットになってしまいます。
例えば、サーバーレスのアーキテクチャで実行できるプログラミング言語には限りがあります。一般的に利用されている人気のプログラミング言語が中心で、需要が限られる専門性の高いものには対応していません。Web系開発であれば、PHPやPythonなどを中心に実装する必要があるのです。
基本的に、サーバーレスでシステムを実装するためには、提供されているサービスの制約を受けます。もし、異なるプログラミング言語で開発しているならば、スクラッチし直さなければなりません。サーバーレスには運用面で多くのメリットがありますが、動作させるアプリケーションの開発面ではデメリットが生じるのです。
また、プログラムの実行に制約が設けられている場合もあります。例えば、処理時間に上限が設けられていたり展開できるデータ量に限界があるのです。このような状況では、自前でサーバーを管理していた時のように、自由なシステム設計や開発ができなくなってしまいます。
サーバーレスの導入を成功させるポイント

上記で解説したとおり、サーバーレスにはメリットとデメリットがあります。それらを踏まえて、実際に導入したいと考えるならば、以下のポイントを意識しましょう。
制約条件を把握して設計する
最初に意識してもらいたいポイントは、制約条件を把握することです。上記で解説したとおり、サーバーレスは提供しているベンダーによって、いくつもの制約があります。これを考慮しなければ、サーバーレスでシステムを構築することは不可能です。
皆さんの中には「現在利用しているシステムをサーバーレス化したい」と考える人がいるでしょう。これは良い意見だと思われますが、必ずしもそのまま実現できるとは限りません。制約の都合上、システムを見直さなければならないこともありえます。
例えば、大容量のファイルを処理していると、サーバーレスの処理時間上限を超えてしまうかもしれません。この場合、ファイルを分割して処理するなど、新しいアルゴリズムの開発が求められます。
近年は、サーバーレスサービスが進化し、制約は減少しつつある状況です。ただ、完全に制約がなくなることは考えられないため、必ず最新の情報を確認してそれを踏まえましょう。
責任境界点を理解する
サーバーレスなどクラウドサービスを利用する際は、責任境界点の確認が重要です。責任境界線とは、トラブルが発生した際に、その責任を誰が負うかだと考えれば良いでしょう。
例えば、サーバーレスサービスが停止して、必要な処理ができなかったとします。これによって損害が発生した場合、自己責任なのかクラウドサービスの事業者の責任なかの境界点は契約書などに定められているため、自分たちの要望を満たすものであるか確認しなければなりません。
また、同様に外部からの攻撃などセキュリティについての確認も必要です。サービスとしてどの程度担保してくれ、アプリケーション側で何をすべきであるのかを確認しておきましょう。
オンプレミスでサーバーを構築する場合は、すべての責任が自分にあります。ただ、サーバーレスなどクラウドサービスを利用すると、責任は共有するモデルに変化するのです。「自分達はどのような責任を負うのか」を正しく把握するようにしてください。
サーバレスの向き・不向きを理解する
スペック的には問題がない場合でも、サーバレスアーキテクチャには向き・不向きがあります。制約条件を満たせるからといって、サーバレスに置き換えられるとは限りません。
例えば、低レイテンシーが求められるシステムはサーバレスには向いていないでしょう。クラウドサービスは最低限の可用性は速度を担保しているものの、低遅延で非常に高速というわけではありません。特に、サーバレスのような共有のサービスは、リクエストを発行してから処理されるまでに一定の時間を要します。
制約条件を満たしていても、システムによっては「動作が遅い」「遅延が発生する」などの状況に陥ってしまうかもしれません。これでは、サーバレスアーキテクチャを導入しても、クレームなどが増えるだけでしょう。一般的なサーバには独自の良さがあるため、「とにかくサーバレスに置き換えれば良い」というものではありません。
まとめ
サーバーレスのアーキテクチャについて解説しました。今までは、自前でサーバーを保有するアーキテクチャが当たり前でしたが、サーバー機能だけを提供してもらう手法が広がっています。サーバーの管理から解放されるため、これに従って多くのメリットを享受できる状況です。
ただ、サーバーレスは一種のサービスであり、自由にカスタマイズできるものではありません。制約の範囲内でシステム構築する必要があるため、その点は留意しましょう。時には制約の都合から、システムの移行ではなく、新規開発が必要になるかもしれません。
