サーバレスは何が良いのか?選ばれるメリット4選

「サーバーレスという用語をよく聞くが、一体どんなメリットがあるのだろうか?」

そのような疑問を持っている人はいませんか?

サーバーレスは近年注目を集めているサービスです。AWS(Amazon Web Service)をはじめとした大手クラウドサービスではサーバーレスを実現したサービスを提供しています。

では、サーバーレスにはどのようなメリットがあるのでしょうか?この記事ではサーバーレスのメリットについて4つ紹介します。

サーバーレスとは何か?

まずはサーバーレスについて解説します。

サーバーレスとは、サーバー構築や保守などの管理作業を行うことなく、クラウド上でプログラムを実行できる仕組みです。サーバーレス・コンピューティングやサーバーレス・アーキテクチャーとも呼ばれています。

サーバーレス・コンピューティングにはいくつか種類がありますが、代表的なものはFunction as a Service(FaaS)です。

CNCF(Cloud Native Computing Foundation)が2018年に発表したホワイトペーパーによると、以下のように定義されています。

  • Function as a Service(FaaS):イベント駆動型のコンピューティングサービスを提供します。開発者は関数を定義することでアプリケーションを開発します。そして、イベント、またはHTTPリクエストがトリガーとなって関数を実行します。FaaSは必要な実行環境を自動的に作成し、関数を実行させます。

なお、大手クラウドサービス各社はFaaSのサービスとして以下を提供しています。

  • AWS(Amazon Web Service):AWS Lambda(ラムダ)
  • Google:Google Cloud Functions
  • Microsoft:Azure Functions
  • IBM:IBM Cloud Functions

サーバーレスが選ばれるメリット4選

では、サーバーレスにはどのようなメリットがあるのでしょうか?ここではサーバーレスのメリットを4つ紹介します。

サーバーの管理が不要

1つめのメリットは「サーバーの維持管理が不要」という点です。

サーバー上にシステムを構築して運用する場合、常にリソース(CPUやストレージなど)の使用状況を監視しなければなりません。そして、システムの負荷が高まればリソースを追加することが必要です。また、OSやソフトウェアの脆弱性に対応するために、パッチ適用にも気を配らなければなりません。このようにサーバー上でシステムを運用するためには、常にサーバーの維持管理が必要です。そして、サーバーの維持管理はインフラエンジニアの負荷となっていました。

しかしサーバーレスの場合はサーバーの維持管理はサービスの提供側が行うため、利用者はサーバーの維持管理を行う必要がありません。このため、これまでインフラエンジニアがサーバーの維持管理に費やしてきた手間や時間を削減できます。また、利用者はアプリケーションの開発や運用にのみ集中することができます。

コンピューティングリソースの最適配置が自動的に行われる

2つめのメリットは「コンピューティングリソースの最適配置が自動的に行われる」という点です。

サーバーでシステムを運用する場合、ピーク時の負荷状況を想定してリソースを用意する必要があります。しかし、負荷状況が想定以下の場合、用意したリソースが使用されないこととなり、その分無駄が発生します。

しかしサーバーレスの場合、関数の実行時にサービスが自動的に実行環境を割り当てるため、常に最適なリソースで実行されます。また、リクエスト数に応じて自動的にスケーリング(リソースの拡張・縮退)を行います。このため、事前にサーバーの運用と異なり、事前にリソースやキャパシティを考慮する必要がありません。

使用した分のみを支払う従量制課金

3つめのメリットは「使用した分のみを支払う従量制課金」という点です。

AWS Lambdaの場合、リクエスト数とコンピューティング時間に応じて1ヶ月単位で以下の通り課金されます。(アジアパシフィック(東京)の場合)

  • リクエスト料金:100万リクエストあたり0.20USD
  • コンピューティング料金:GB-秒あたり0.0000166667USD

なお、AWS Lambdaには無料枠が設けられ、リクエスト数が1ヶ月100万リクエストまで、実行時間が40GB-秒までは無料となっています。

具体的な計算式は以下の通りです。

  • コンピューティング料金(GB-秒)
    • 実行時間(秒)×実行回数×メモリ量(MB)÷1024Byte =GB-秒
    • (GB-秒-40GB-秒)×0.0000166667USD=コンピューティング料金
  • リクエスト料金
    • (リクエスト数-100万リクエスト)×0.20USD=リクエスト料金
  • 支払料金=コンピューティング料金+リクエスト料金

OSやミドルウェアが常時稼働するために常時コストがかかる仮想サーバーと異なり、サーバーレスの場合は関数が実行しない時には料金がかかりません。このため、仮想サーバーに比べて運用コストを抑えることができます。

マイクロサービスアーキテクチャを実現できる

4つめのメリットは「マイクロサービスアーキテクチャを実現できる」という点です。

マイクロサービスとは、機能を分解して複数の小さなコンポーネントを組み合わせてアプリケーションを構築するソフトウェア開発技法です。この開発技法のメリットは、他のコンポーネントに影響を与えることなく拡張性の高いシステムの開発や保守ができる点です。なお、コンポーネント間の通信は、コンポーネント毎に定義されたAPIを通じて行います。

サーバーレスの場合、関数単位で開発を行うため、マイクロサービスアーキテクチャーを実現できます。これにより、他のコンポーネントに影響することなく拡張性の高いシステムの開発や保守を行うことができます。

まとめ

この記事ではサーバーレスのメリットを紹介しました。

サーバーレスのメリットには、「サーバーの維持管理が不要」「コンピューティングリソースの最適配置が自動的に行われる」「使用した分のみを支払う従量制課金」「マイクロサービスアーキテクチャを実現できる」があります。これらのメリットにより、利用者はアプリケーションの開発に専念し、コストを抑えながら拡張性の高いシステムを開発・運用することができます。

代表的なサーバーレスサービスであるAWS Lambdaには無料枠があるので、サーバーレスに興味がある方は、是非利用してみてください。