「サーバーレス」という言葉をご存じでしょうか? 近年、クラウドサービスの新たな仕組みとしてサーバーレスに注目が集まっています。この記事では、サーバーレスの基礎知識や、サーバーレスの特性や適しているケースを紹介していきます。
目次
サーバーレスとは?クラウドとの違いは?
まず、サーバーレスという言葉の意味から確認していきましょう。
サーバーレスとは?
サーバーレスとは、サーバーの管理をすることなくシステムの構築・運用が可能な仕組みのことです。サーバーレスと聞くと「物理的なサーバーが不要?」と想像する方も多いかと思います。正しくは、サーバー管理が不要な仕組みをサーバーレスと呼んでいます。当然ながら、通常プログラムを実行したりシステムを構築したりする際は、サーバーを用意する必要があります。サーバーレスで提供されるサービスは、サービスを提供する会社がサーバーを管理してくれるため、利用者がサーバーのことを気にかけずに済みます。
なお、サーバーレスは大きくBaaS(Backend as a Service)とFaaS(Function as a Service)の2種類に分かれます。BaaSは、サーバーサイドで必要な認証やデータベースなどの機能を提供してくれるサービスです。一方でFaaSは、アプリケーション開発で必要となる関数をクラウド上のサーバーで利用できるサービスです。
クラウドとの違いは?
サーバーレスはクラウドと混同されがちですが、サーバーレスはクラウドサービスの一種であり、PaaSやIaaSといったサービスとは異なった特性を持っています。サーバーレスの持つ特性とクラウドサービスにおける仮想サーバー構築との違いを以下の表にまとめました。
サーバーレス | Amazon EC2などの 仮想サーバー構築サービス |
|
---|---|---|
サーバー構築 | サービス提供事業者 | 一部は利用者が行う |
利用開始までにかかる時間 | 即時 | 環境構築時に設定が必要 |
自由度 | 比較的低い | 比較的高い |
料金体系 | プログラムの実行回数・実行時間 | サーバーの起動時間 |
サーバーレスのメリット・デメリット
ここからはサーバーレスのメリット・デメリットを紹介します。
サーバーレスのメリット
サーバーレスのメリットとして主に挙げられるのが、以下の3点です。
サーバーの構築・運用にかかる負担をなくせる
1点目は、管理コストや運用の手間を削減できる点です。これは、サーバーレスの最大の利点とも言えます。先述の通りサーバーレスは、サーバーの構築・運用をサービス提供会社が実施してくれるため、利用者は開発に専念できます。
コストを必要最低限に抑えられる
2点目は、必要最低限のコストで運用できる点です。サーバーレスはコストの面でも優れています。サーバーレスのサービスは、基本的にプログラムを実行した時間によって決まるため、利用していない時間は料金がかかりません。
オートスケーリングに対応している
3点目は、オートスケーリングに対応している点です。これはAmazon EC2などのクラウドサービスにも当てはまりますが、サーバーレスのサービスは基本的にオートスケーリングにも対応しています。サーバーの処理状況に応じて自動でスケーリングしてくれることから、動作が安定する点もメリットといえるでしょう。
サーバーレスのデメリット
一方で、サーバーレスにもデメリットがあります。ここでは主な3つのデメリットを紹介します。
使えるコードに制限がある
1点目は、使えるコードに制限がある点です。サーバーレスはすでに構築されたサーバーを利用することから、使えるコードには制限があります。開発でよく使われている言語はサポートされている場合が多いですが、中にはサポートされていない言語もあります。場合によってはコードの修正が発生するため、どの言語に対応しているかは事前に確認しておきましょう。
レスポンスが遅くなることも
2点目は、サーバーレスのサービスではレスポンスが遅延する可能性がある点です。サーバーレスのサービスはネットワークを通じてサーバーに接続することから、ネットワークの状況によってはレスポンスが遅くなる可能性があります。また、ネットワーク環境が整っている場合でも、アクセスが一気に集中するとレスポンスが遅れることもあります。サーバーレスのサービスを利用したい場合は、安定したネットワーク環境の整備をしましょう。
データ容量やタイムアウト時間などの制限がある
3点目は、データ容量制限やタイムアウトの制限がある点です。サーバーレスのサービスでは、一定時間を超えると処理がタイムアウトしてしまう制限や、データの容量制限などがかかっているケースも少なくありません。利用を始める前にどのような制限があるのかを確認しておくことが重要です。
サーバーレスの向き不向き
サーバーレスの特性について理解を深めたところで、ここからは具体的にどのような場面でサーバーレスを利用するのが適しているのか、紹介していきます。
サーバーレスが向いているケース
サーバーレスが向いているのは、単純で処理に時間がかからないうえ、サーバーを常に稼働させておく必要のないプログラムです。これは、料金がプログラムの実行した時間だけ発生するためです。また、導入コストがほとんどかからず、オートスケーリングもできることから、新規サービスをスモールスタートで立ち上げたい場合などにも適しています。
サーバーレスが向かないケース
一方で、データ処理に長時間かかる場合などは、サーバーレスに向いていません。前述の通り、処理時間が長いと料金がかなり高くなってしまうためです。また、過度にアクセスが集中するとレスポンスが遅れてしまう特性があるため、即時性が求められる処理を行う際もサーバーレスは不向きだといわれています。
サーバーレスでプログラムを実行できるAWS Lambdaとは?
AWSでサーバーレスのシステムを実現する際に、役立つのがAWS Lambdaです。ここからは、AWS Lambdaについて解説していきます。
AWS Lambdaについて
AWS Lambdaは、AWS上でサーバーレスの仕組みを実現できるサービスです。AWSでプログラムを実行するには、通常Amazon EC2で仮想サーバーを立てて環境を構築するなどの準備が必要になります。AWS Lambdaであれば実行したいプログラムさえ用意すれば、すぐに処理を実行できます。また、料金がかかるのはプログラムを実行したときだけで、さまざまな開発言語にも対応しています。
なお、AWS Lambdaについては、以下の記事で詳しく紹介しています。AWS Lambdaについてもっと知りたいという方はあわせてご参照ください。
AWS活用法 | サーバを立てずにプログラムを実行できる「AWS Lambda」とは?
TOKAIコミュニケーションズが提供する「サーバーレスアプリケーション開発サポート」
TOKAIコミュニケーションズでは、要件のヒアリングから保守に至るまで、全面的にサーバーレスのアーキテクチャ導入をサポートする「サーバーレスアプリケーション開発サポート」というサービスを提供しています。AWS アドバンストティアサービスパートナーとして豊富な導入実績を持つ同社が、AWS LambdaをはじめとしたAWSの各種サービスを活用し、お客様のニーズに応じたサーバーレスの仕組みを実現します。また、これまでの実績をもとに信頼性のあるコスト試算が可能なため、コスト面が心配な方も安心して利用いただけます。
サーバーレスアプリケーション開発サポートについて詳しく知りたい方は、以下のページをご参照ください。
サービス | AWSサーバーレスアプリケーション開発サポート
まとめ
サーバーレスはイニシャルコストを抑えられることから、新規サービスの立ち上げに適しています。特に処理に時間がかからない単純な処理なら、プログラムの実行時間もかからず、ランニングコストも抑えられます。サーバーレスの特性を理解した上で、利用を検討してみてはいかがでしょうか。なお、先述の通り当社でもサーバーレスのサービス構築のサポートをしています。興味のある方はお気軽にご相談 ください。
(寄稿:LE DINH HAI / 監修:高谷 英雄)