クラウドサービスプロバイダーがサーバレスコンピューティングサービスの提供を開始してから、サーバレス市場は毎年拡大しています。REPORTOCEANが2022年2月に発表したレポートによると、世界のサーバレスアーキテクチャ市場は2022年から2030年にかけて21.5%以上の成長率で成長すると予測されています。

サーバレスアーキテクチャとは、サーバが「ない」「不要」という意味ではありません。アプリケーションが機能するには、サーバ上の動作環境が必要です。サーバレスアーキテクチャとは、Google、Amazon Web Services(AWS)、Microsoft Azureなどのクラウドサービスプロバイダーがアプリケーションのバックエンドインフラを提供し、ユーザーはサーバの存在を気にすることなくプログラムを実行することができる仕組みです。

サーバレスアーキテクチャにおいては、ユーザーによるサーバの管理や運用が不要なため、多くの企業に導入され普及が進んできました。本稿では、サーバレスアーキテクチャのメリットとデメリットについて紹介します。

サーバレスアーキテクチャのメリット

まずは、メリットから紹介しましょう。具体的には、前述した「サーバの運用、管理が不要」であるほか、「コストの削減」がサーバレスアーキテクチャのメリットとなります。

サーバの運用、管理が不要

サーバレスアーキテクチャを導入する最も大きなメリットは、開発者が時間のかかる運用保守から解放されることです。自社でサーバを運用する場合、24時間365日、常にサーバを稼働させ続けることに加え、不具合にも対応する必要があります。

サーバレスアーキテクチャでは、アプリケーションが動作するバックエンドインフラを所有しないことで、プロビジョニングやスケーリングなど、開発者が担当するメンテナンスを削減することができます。クラウドサービスプロバイダーはサーバレス機能を自動化し、開発者の指示なしで必要に応じてスケーラビリティのための追加リソースを提供したり、ダウンサイジングしたりできるため、開発者のタスクを一つ減らすことができます。

開発者は、プロビジョニングやスケーリングなどのバックエンドインフラの保守が減ることで、より重要なプロジェクトに時間を割けます。

この弾力性により、企業は、自社で所有するサーバと同じようなキャパシティプランニングの心配は不要です。また、企業はバックエンドのインフラストラクチャに責任を持たなくてよいため、問題が発生しても対応する必要がありません。クラウドサービスプロバイダーが提供する自動スケーリングやデバック機能は、サーバレスアーキテクチャを価値ある投資とするために役立ちます。

コストの削減

自社でサーバを運用する場合、将来の運用も見据えた上での導入した上で、365日体制での対応が必要となります。サーバレスアーキテクチャでは、自社でサーバを用意する必要がないため、バックエンドのインフラのメンテナンスに費やす時間が減れば減るほど、コストを削減することができます。

また、サーバレスコンピューティングサービスは、アプリケーションが動いている時間のみに課金される重量課金制となっていることが多く、無駄なく利用することが可能となります。一方で、大量のコンピューティングリソースを消費するアプリケーションは、ビジネスのコストを大幅に増加させることになり、社内でホスティングした方が良いことになります。

サーバレスアーキテクチャのデメリット

しかし、何事も単純ではありません。サーバレスアーキテクチャにもデメリットはあります。企業がすべてをクラウドコンピューティングに移行する前に、以下の点に考慮する必要があります。

可視性の低下

組織がサーバを所有していない場合、そのサーバ上で実行されているすべてのものに対する可視性が制限されるため、アプリケーションのパフォーマンスを推測することが難しくなります。これはまた、パフォーマンスの問題の傾向を把握することが難しく、遅延などの問題を未然に防ぐことができないことを意味します。

また、バッグエンドの責任者ではないため、例えばログを調査することもできません。このような状況では、パフォーマンスの問題への対処や、主要なパフォーマンス分析を追跡する際に、大きな影響を及ぼします。

セキュリティ

より大きな懸念は、セキュリティです。サーバレスアーキテクチャでは、企業が通常社内のサーバで行うよりも攻撃対象領域が広がるため、すべてを社内で管理する場合と比較して、セキュリティリスクが高まる可能性があります。

クラウドサービスプロバイダーの管理能力にリスクが委ねられるため、クラウドに移行する際は、すべてが安全であることを確認するために、十分な調査を行う必要があります。一方で、AWS Lambdaよりも自社のサーバを安全に保つことができないと考える組織では、クラウドサービスを利用する方が理にかなっている場合もあります。

リソースの制限

リソースの制限も、サーバレスアーキテクチャの欠点になることがあります。サーバレスアーキテクチャは弾力性があり、アプリケーションにリソースを割り当てるためにスピンアップとスピンダウンが可能ですが、どこまでできるかは限界があります。この制限を超えるような大規模なアプリケーションを持つ組織では、サーバレスアーキテクチャはあまり適していないかもしれません。

コストの増大

最後に、コストの問題を紹介しましょう。特定のアプリケーションはサーバレスアプリケーションとして設計されていないため、サーバレスアーキテクチャはすべてのユースケースに適合するわけではありません。

例えば、アプリケーションの使用リソースに応じた価格設定が可能なため、与えられたコンピューティングリソースを食い尽くすように設計されたアプリケーションは、サーバレスアーキテクチャのコストを跳ね上げる可能性があります。このようなアプリケーションは、より多くのリソースを継続的に使用するため、その費用を支払わなければなりません。

サーバレスアーキテクチャの効果的な利用例

開発者は、サーバレスアーキテクチャにおいて、データ量やアクセス数を気にすることなく、リクエスト数や付加に応じて自動的に拡張および縮退することが可能です。

サーバレスアーキテクチャの主な使用例の1つは、コードの実行とトリガーベースのタスクを遂行するように設計されたアプリケーションを組織が保有している場合で、これは「セットイット&フォーゲットイット」アプリケーションと呼ばれます。

この場合、アプリケーションはインフラストラクチャ上で受動的なまま、トリガーとなるイベントを待ちます。アプリケーションはトリガーされたイベントに応じてリソースの使用率を上げ、コストを低く抑えることができるため、サーバレスアーキテクチャはこのようなアプリケーションに有効です。

また、サーバレスアーキテクチャは継続的インテグレーション/継続的デリバリー(CI/CD)プロジェクトに最適です。なぜなら、開発者はサーバの更新を気にすることなく、本番環境で常にコードを更新できるからです。このようにリアルタイムでコードを更新できることは、非常に重要です。

サーバレスアーキテクチャの未来

技術者は常にプロセスを改善する新しい方法を探しており、サーバレスアーキテクチャも例外ではありません。サーバレスアーキテクチャ市場は成長していますが、将来的には、サーバレスアーキテクチャの予測可能性とセキュリティが改善されることを期待しています。

信頼性は、サーバレスアーキテクチャが取り組む可能性のあるもう1つの課題です。現在、信頼性を求める企業はサーバレスアーキテクチャを敬遠し、従来のオンプレミスサーバやクラウドホスティング(所有していない)ソリューション、あるいはマイクロサービスなど、何が起こるかをよりコントロールしやすい方に傾倒しています。

開発者コミュニティが CI/CD パイプラインを重視し、プロセス全体で DevOps のメリットを活用するようになると、サーバレス アーキテクチャは引き続き必須のツールとなります。開発者は常にアップグレードのためのダウンタイムを回避する方法を模索しており、サーバレスアーキテクチャはこれを可能にするのに役立ちます。

このトレンドが続く限り、サーバレスアーキテクチャは応え続け、開発者コミュニティの方針転換とともに進化を続けていくことでしょう。サーバレスアーキテクチャはまだ初期段階にあり、すぐにどこかに行くことはないでしょうが、今後も進化を続けるでしょう。

著者プロフィール

クリスタル・テイラー
SolarWindsのHead Geek。キャパシティプランニング、サーバアーキテクチャ、トラブルシューティングに注力し、規模、業界、顧客を問わずあらゆる問題を多面的に解決するエキスパート。