コラム
2022-04-19
サーバレスにはどんなシステムが向いているの?メリット・デメリットを解説


クラウドの利用形態の一つであるサーバレスは、イベントをトリガーに機能(Function)が実行されることから、FaaS(Function as a Service)と表現されることもあります。
本記事の前半は、サーバレスの概要、オンプレミスやIaaS(Infrastructure as a Service)との違いについて、後半では、サーバレスのメリット・デメリットを解説します。
運用したいシステムがサーバレスに適しているかを判断するための参考になるでしょう。
サーバレスとは?
多くの場合システムを開発・運用するためには、ネットワークやサーバ等のインフラが必要です。しかし、サーバレスではインフラを自身で用意することなく、システムの開発・運用が可能になります。サービス事業者がすでに用意している実行環境にプログラムをアップロードし、実行条件等を設定するだけで、プログラムを実行することができます。利用者はサーバを管理する必要がないため、運用、保守、サーバ自体のコストの削減効果があります。
サーバレスの代表格であるAWS Lambdaは、マネジメントコンソールやAPIを利用して関数を設定します。設定する必要があるのは、基本的にプログラムコード、ランタイム(プログラムの実行環境)、実行ロール(アクセス権限)、メモリ量、タイムアウト時間のみです。設定内容が少ないため、コードの実装に注力することができます。AWS Lambdaの他にはGoogle Cloud FunctionsやAzure Functionsなどのサーバレスサービスがあります。
このようなサーバレスの特長から、他システムと連携が少ないシンプルなプログラムを開発・運用する場合にサーバレスが実現手段の候補に挙がります。特にAPIやIoTなどのいつ処理が必要になるかわからないが、1回の処理が短時間で終わるプログラムはコストを抑えることができることから、サーバレスが有力候補となるでしょう。
サーバレス(FaaS)のIaaS、PaaS、SaaSとの違い
クラウドの利用形態として、サーバレス以外にも代表的なものとしてIaaS、PaaS、SaaSがあります。まずはそれらとサーバレス(FaaS)を比較し、特徴を整理します。
IaaS
IaaSはInfrastructure as a Serviceの略で、サーバやネットワークなどのインフラを丸ごとインターネット上のサービスとして利用する形態です。例えばサーバを利用する場合は、OSの種類をユーザーが選択して利用することが可能です。
PaaS
PaaSはPlatform as a Serviceの略で、ミドルウェアやデータベースなどシステム開発に必要な環境が整ったプラットフォームを、インターネット上のサービスとして利用する形態です。インフラ構築に関わる作業が必要なく、システム開発をすぐに始めることが可能です。
SaaS
SaaSはSoftware as a Serviceの略で、従来はパッケージ製品として提供されていたソフトウェアをインターネット経由で利用する形態です。代表的なサービスとして、Microsoft 365、Gmail、Dropboxが挙げられます。
FaaS
FaaSはFunction as a Serviceの略で、プログラムの実行に必要な環境をインターネット上のサービスとして利用する形態です。サーバや各種ミドルウェアなどを用意する必要がなく、自作のプログラムをアップロードしすぐに実行することが可能です。
つまり、IaaSは「サーバを利用するための環境」、PaaSは「アプリケーションを開発・実行するための環境」、FaaSは「プログラムを実行するための環境」、SaaSは「インターネット経由で利用するソフトフェア」を提供するサービスです。
なお、PaaSとFaaSはサーバの管理をサービス事業者に任せられる点では同じですが異なる点もあります。PaaSでは処理するべきリクエストの情報がほぼそのままプログラムに渡されますが、FaaSではプログラムの実行に必要な一部の情報のみがプログラムに渡されます。また、PaaSではプログラムが常時稼働しているのに対し、FaaSではリクエストを受信したタイミングでプログラムが起動します。このような特徴から、常時起動して処理を実施する場合にはPaaSが適しており、特定のイベント発生時や特定の時間になったときに単発で動くプログラムなど、常時起動する必要がない場合にはサーバレスが適しているでしょう。一方でサーバやネットワークに関する要件が定められており、大規模なシステムとなる場合にはIaaSが適しています。
サーバレスとIaaS、オンプレミスとの違い
次にサーバレスとIaaS、オンプレミスの違いについて整理します。
サーバレス | IaaS | オンプレミス | |
---|---|---|---|
課金方式 | プログラムの実行に対する従量課金 | サーバの稼働に対する従量課金 | システム導入時に金額が決定 |
リソースの割当 |
自動で増減 (オートスケール) |
半自動で増減 (個別設定が必要) |
固定的 (サーバ調達時に大部分が決定) |
運用責任範囲 | ・実行プログラム |
・OS ・ミドルウェア ・実行プログラム |
・ハードウェア ・OS ・ミドルウェア ・実行プログラム |
サーバの調達 | 不要 | 物理的に用意する必要はないが初期設定が必要 | 物理的に用意する必要があり、初期設定も必要 |
サーバレス・IaaS・オンプレミスの比較
サーバレスはクラウドサーバと同様に従量課金制であることが多いですが、課金方式に違いがあります。クラウドサーバはサーバの稼働時間で課金されます。一方で、サーバレスは厳密には細かい計算がありますが、大まかにはプログラムが実行されるたびに使用したリソース量(CPUやメモリ)と実行時間に応じて課金されます。プログラム実行時のリソースは、必要なリソースが動的に割り当てられ、終了後にリソースが解放されます。
運用責任範囲については、実行するプログラムの開発・運用のみを行い、サーバに関する一切の設定を事業者に任せることができます。そのため、プログラミング言語はサーバレスの実行環境でサポートされているものを使用する必要があります。また、ミドルウェアなどは原則として事業者側が用意したものを使用することになります。
IaaSやオンプレミスと比べると、サーバレスは事業者側が準備する範囲が広いため、カスタマイズ性が低くなりますが、リソースの増減が自動で行われるなど、便利で手間が掛からない運用が可能になります。
サーバレスのメリット
サーバレスの最大の特長は、サーバを管理する必要がなく、プログラムの開発に人的リソースを集中できる点です。この特長により、得られる主要なメリットは4点あります。
導入コストが安い
サーバレスでは、サーバ等の物理器材を購入する必要がなく、利用量に応じて料金の発生する従量課金制であるため、導入コストを抑えることができます。特にリクエストを受けた時のみ動作するなど、継続的に動作する必要のないプログラムの構築に向いています。AWS Lambdaではデータの送受信が必要な時のみ自動で起動・終了し、その間に実行された処理内容に応じて料金が計算されます。
サーバ負荷に合わせた変更が容易
サーバレスでは、プログラムの実行ごとに最適なリソースを自動で割り当ててくれます。そのため、大量のアクセスが発生するなど想定していた負荷を上回るような場合でも、サーバが落ちることなく継続運用することが可能です。
サーバの管理を考える必要がない
サーバレスではOSやミドルウェアのアップデートはサービス事業者が実施します。例えば、WindowsやLinuxなどのOS、ApacheやMySQLなどのミドルウェア、PHPなどのプログラミング言語のアップデートやパッチ適用は不要です。そのため、アップデートのための検証作業、アップデート作業中のサービス停止、また、サポート期限についても考慮する必要がないため、リプレイスを検討する必要がありません。 また、ネットワークまで含むサーバ管理をサービス事業者が担うため、負荷分散などネットワークの知識がなくてもプログラムを実装できます。
サーバレスのデメリット
サーバレスを使用することで、IaaSやオンプレミスの課題が解決できる場合もありますが、場合によってはデメリットを被る場合があります。例えば、ミリ秒単位の応答性が求められるプログラムや、大容量のデータを取り扱う長時間のバッチ処理が該当します。デメリットについて理解し、構築するシステムがサーバレスに適しているか判断するようにしましょう。
セキュリティの心理的不安
IaaSにも共通することですが、サーバレスは物理的に自社外にあるサーバを使用することになるため、セキュリティに不安を感じることがあるかもしれません。しかし、サーバ自体が運用責任範囲外であり、サービス事業者がアップデートなどのセキュリティ対策を実施してくれるため、自社でセキュリティ対策を施す場合に比べるとサイバー攻撃のリスクは低いでしょう。ただし、プログラム自体は利用者の責任となるので、セキュアなコーディングを心がける必要はあります。
トータルコストが高くなる可能性がある
サーバレスはプログラムの実行ごとに料金が加算されていきます。そのため、プログラムの実行回数が多い場合にはオンプレミスや他のクラウドサービスと比べて高くなる可能性があります。例えば、常にリクエストが続いたり、サーバで常時稼働し続けるプログラムが該当します。運用要件からコストを計算し、最適なアーキテクチャを選択しましょう。
サービス提供事業者に依存する部分がある
サーバを管理する必要がないことから運用負担を軽減できますが、一方でプログラム言語の実行環境や障害対応などはサービス事業者に依存します。
特にサービス提供事業者を起因とする障害が発生した際には、その対応を待つことしかできないのが一般的です。そのため、AWS Lambdaであれば複数のリージョンやアベイラビリティゾーンに分散させる、複数のサービス提供事業者のサーバレスサービスを利用するなどの障害対策をしましょう。
応答性が低い
サーバレスはサーバが常に起動しているわけではないため、リクエストを受けてからプログラムの実行開始までにタイムラグがあり応答性が低いです。AWS Lambdaのコールドスタートでは100ミリ秒未満から数秒ほど起動に時間がかかります。即応性が求められる場合には、サーバレス以外のサービスの利用が適しているでしょう。
まとめ
本記事では、サーバレスの概要とそのメリット・デメリットを解説しました。サーバレスは、プログラム開発に注力でき、運用面でのコストを抑えられるメリットがあります。一方で、自由度が低いなどのデメリットもあり、サーバレスが必ずしも最適なアーキテクチャとは限りません。そのため、本記事で紹介したサーバレスの特徴を参考に、要求仕様を実現できそうか検討してみてください。
関連資料をダウンロード
AWS・Azure・OCI・Google Cloudマネージドサービスご紹介資料
AWS、Azure、OCI、Google Cloudなどのパブリッククラウドの環境構築から運用までお任せいただけるマネージドサービスのご紹介資料です。