掲載日:2023/02/02

サーバーレスアーキテクチャは、クラウドサービスの活用法として、ITインフラの世界で新たな潮流となっています。本記事では、その概要と代表的な事例、利点や欠点などをまとめ、解説していきます。

1:サーバーレスアーキテクチャとは?
「サーバーレスアーキテクチャ」という単語を聞いても、具体的なイメージが持てないという人もいるかもしれません。サーバーの管理を必要とせず、サーバーの存在を意識しないでよい仕組みが、サーバーレスアーキテクチャと呼ばれます。サーバーをまったく使わない、という意味ではありません。この項では、用語の定義と解説から始めます。
サーバーレスとは
サーバーレスとは、プログラムを実行するためのサーバーが不要であることを表します。一定のサーバー容量を常に確保しておくのではなく、必要なタイミングでのみ、実行環境を利用する運用方法です。
一般的なサイト運営では、システムを動かすためのサーバーが、常に稼働しています。一定規模のサーバーを抱え、保守をする必要もあるため、コストがかかり続けます。アプリケーションを作るには、OSや各種ミドルウェアなどを設定し、プログラムを動かす環境を整備する時間とコストも必要です。ソフトウェアのバージョン変更があれば、それにも対応しなくてはなりません。
一方、サーバーレスでの運用は、システムを稼働できる環境を、実際に動かす時だけ利用する方法です。上述した環境整備の時間とコストは不要であるため、用意された環境を使ってプログラムを作成するだけで済む仕組みです。サーバーレスでアプリケーション開発ができるクラウドサービスは、『FaaS』(Function as a Service)と呼ばれることもあります。
サーバーレスは、「手間のかかるサーバー管理は自社で行わず、リソースはビジネス上の利益を生むアプリケーション開発などに当てたい」といった目的と合致するでしょう。
サーバーレスアーキテクチャの定義
仮想サーバーに該当する機能を利用せず、コードの実行環境やデータベースなどの機能群だけで構築された仕組みのことを言います。サーバーに代わるサービスを利用して構築されます。
利用により、サーバーの購入費用や運用コストの低減が可能です。障害対応や冗長性の確保などはマネージドサービスの利用で対応できるため、保守コストも減らせます。設定要員の人件費なども削減でき、間接的にシステム開発の工数も減らせることが特徴です。
この名前をよく聞くようになったのは、Amazonなど大手クラウドサービス企業が、サーバーレスアーキテクチャを使いやすい形で提供するようになり、運用側でも広く採用されてきたためです。

2:『AWS』の『Lambda』と『EC2』との違い
サーバーレスアーキテクチャの代表例として、2014年に提供が始まった『Amazon Web Service(AWS)』の『Lambda』が挙げられます。この項では、同じ『Amazon Web Service(AWS)』によるサービスで、仮想サーバーを構築してプログラム運用を行う『EC2』との違いについて解説します。
『Lambda』
『Lambda』の大きな特徴は、インフラ環境を整備する必要がないことです。『Lambda』の実行環境は『Amazon Web Service(AWS)』から提供されるため、開発側はプログラムだけ用意しておけば、すぐに実行できます。『Lambda』で使用できるプログラミング言語は限定されており、Java、Python、JavaScriptなどです。
『Lambda』は、何らかのイベントの発生に対して、設定しておいたプログラムが実行されるサービスです。『Amazon Web Service(AWS)』の他のサービスと、組み合わせて利用するのが一般的な使い方と言えます。こうしたサービスは、『イベント駆動型コード実行サービス』と呼ばれます。
『Lambda』単体ではLambda関数の実行はできません。Lambda関数を実行するには、処理を起動させるきっかけ(トリガー)が必要です。『Lambda』を実行するトリガーは、大別して以下の2種類です。
● トリガーと同期して関数を起動
● 非同期で関数を実行
トリガーと同期した関数の起動には、『API Gateway』や手動実行などがあります。非同期での関数の実行は、イベントが発生したことを検知して行われ、『Amazon Web Service(AWS)』のストレージである『Amazon S3』からの実行などが代表例です。
『Lambda』のマネジメントコンソールでは、実行時間や使用メモリの量、セキュリティなどについての設定ができます。料金は、プログラムの実行時間と回数によって決まる従量課金制です。稼働していない時間には課金が発生しないため、コストの削減が期待できます。
『EC2』
『EC2』はElastic Compute Cloudの略称で、『Amazon Web Service(AWS)』上に『インスタンス』と呼ばれる仮想サーバーを構築できるサービスです。インスタンスは複数契約することもでき、アプリケーションサーバーとデータベースサーバーを別個に立ち上げたい場合は、ふたつのインスタンスを作成します。稼働しているアプリケーションの負荷が高まり、メモリやCPUに不足が生じた際には、インスタンスタイプを変更することで、増強が可能です。
EC2インスタンスは、マネジメントコンソールから以下の項目を設定することで、作成されます。
● インスタンスタイプ(スペック)
● Amazonマシンイメージ
● ネットワーク
● ストレージタイプと容量
● セキュリティグループ(AWSによる仮想ファイアウォール)
インスタンスの起動直後は、OSがインストールされただけの状態で、すぐに利用できません。アカウントなどの初期設定を行い、システムの稼働に必要なソフトウェアをインストールするなどの環境設定を整えてから、動作させます。
『EC2』は『Lambda』とは異なり、インスタンスの起動中は、固定で料金が発生します。起動したインスタンスが、プログラムをどれだけ実行したかにかかわらず、同じ料金がかかる仕組みです。単位時間あたりの料金は、インスタンスのスペックが高くなるほど高額になります。その他の『Lambda』との違いとしては、『EC2』には使えるプログラミング言語の制約がない点が挙げられます。

3:サーバーレスアーキテクチャのメリット
サーバーレスアーキテクチャは、サーバーの管理が不要となる仕組みであり、サーバー運用などのコストが削減できるメリットがあります。さらにメリットはそれだけではありません。代表的なものを、以下に示します。
インフラ運用の簡素化を実現できる
物理サーバーを自社で管理する場合は、サーバーそのものの運用だけでなく、経年劣化への対応なども必要です。サーバーレスアーキテクチャを利用すれば、それらの対応は不要です。クラウド事業者が環境構築から保守管理まで、一括して担当します。
コンピューティングリソースの最適化が可能となる
システムを稼働させられるだけの容量を、実際に動かすときにだけ利用する仕組みです。そのため、メモリやCPUなどのコンピューティングリソースを無駄遣いしないメリットがあります。
人的コストを削減できる
サーバーの管理を必要としないサーバーレスアーキテクチャでは、負荷増大への対応や保守などは、クラウド事業者が行います。開発者やインフラエンジニアなどを自社に置かなくても、運用が可能です。それにより、人的コストを削減できるメリットがあります。
スケーラビリティが向上する
アクセスが集中して負荷が増大した場合は、自動的に性能が拡張されます。こうしたスケーラビリティ(拡張性)を向上させる機能が、「オートスケール」と呼ばれるものです。逆に、アクセスが少ないときには、サーバー台数を自動的に減らし、リソースを無駄にしない運用が図られます。
開発環境の構築が容易にできる
自社でサーバーを構築しないため、開発環境を容易に、素早く整備できるのも利点です。立ち上げにかける時間が短く済むため、納期の短縮や、製品の迅速な市場展開など、ビジネス・アジリティ(俊敏性)の向上が期待できます。

4:サーバーレスアーキテクチャのデメリット
『前述の『Lambda』を例にとれば、『Lambda』のサービスに依存してアプリケーション開発を行うことになるため、クラウド事業者の乗り換えが簡単にはできなくなる「ベンダーロック」の問題があります。プログラミング言語が制限される点も、デメリットと言えるでしょう。
また、『Lambda』は起動時間と同時実行数に制限があり、1件の実行につき15分を超える処理はできません。そのため、処理時間が15分以上になるような場合には、並列処理とする設計が求められることも、デメリットの一例です。
その他で、一般的に指摘されている、サーバーレスアーキテクチャの主なデメリットは、以下の3点です。
デバッグが複雑になる
デメリットのひとつとして、デバッグが複雑になることが挙げられます。サーバーを自社で管理しないでよいメリットがある反面、クラウド事業者が管理するバックエンドの設定などがわかりにくくなるためです。
障害が発生した際に、原因がクラウド側にあるのか、アプリケーション側にあるのかの切り分けが難しくなる点も、デメリットと言えます。
レイテンシーが高い
ネットワークを介して処理が実行されるため、「レイテンシー」(ネットワーク通信における遅延)が高くなるという問題があります。
メリットの多いサーバーレスアーキテクチャですが、どのような状況にも対応できる万能のシステムではありません。自社の求めるコンセプトや運用の実情に合わせて、適切なプラットフォームを選択することが重要です。
データが流出する可能性がある
多くの場合、同一サーバー上で複数の契約先のプログラムが実行されます。「マルチテナンシー」と呼ばれる技術で実現される機能ですが、サーバーの設定ミスがあれば、データが流出する可能性がないとは言えません。

まとめ:サーバーレスアーキテクチャのメリット・デメリットを理解しよう
サーバーレスアーキテクチャは、自社でサーバーを構築、運用せずに、必要なときに必要な容量の実行環境だけを利用できる便利な仕組みです。開発環境を迅速に整備できるほか、サーバー費用や保守にかかる人件費などを節減できるメリットがあります。
一方で、バックエンドがブラックボックスのようになるため、デバッグが複雑になりがちであることや、レイテンシーの高さが問題になるなどのデメリットも指摘されています。本記事で比較を示した『Amazon Web Service(AWS)』の『Lambda』と『EC2』の例にもあるように、サーバーレスアーキテクチャとサーバーを自社で構築する場合のメリット・デメリットを理解し、より良い選択に役立ててください。