サーバーレスは、これまでのクラウドサーバーと比べ、サーバー管理者の手間と時間を削減できるサービスです。しかし、サーバーレスと言ってもその違いについて、詳細がわからない方もいらっしゃるのではないでしょうか。
この記事では、サーバーレスとはそもそも何か、またサービス提供各社の機能や料金の違いについて詳しく解説します。
目次
サーバーレスとは?
サーバーレスとは、自社に物理的なサーバーを置かずクラウドのサービスとしてサーバーを利用できることを意味します。つまり、サーバーレスといってもサービスを提供する企業がサーバーの構築やメンテナンスを行うため、物理的なサーバーは存在します。
サーバーの保守やソフトウェアのアップグレード、最新のセキュリティの確保などは提供会社が実施します。そのため、自社でサーバーを管理していた場合は、これらの管理が不要となるためサーバーの管理に手間がかからなくなり、他の業務にリソースを使うことができるようになるのです。
サーバーレスの代表的なサービスは、AmazonグループのAWS社が提供するAWS Lambdaや、Google Cloud Functions、またMicrosoftのAzure Functionsがあります。
サーバーレスによって、以下のようなことができるようになります。
- さまざまなアプリケーションの利用
- 社内プラットフォーム
- 機械学習
- Webアプリケーション開発
サーバーレスの仕組み
サーバーレスの仕組みについて、AWSを例にあげて解説します。
AWSにおいてのサーバーレスの構成については、「Amazon S3」「DynamoDB」「Lambda」 を活用することによって、「EC2」などの仮想サーバーを使用しなくても、Webサービスを開発するアーキテクチャ(構造)とすることが可能となります。
AWS EC2のような「仮想化サーバー」のサービスとサーバーレスとの違いは、ユーザーがサーバーの領域を意識せずに利用できることです。
より具体的なアーキテクチャ(構成)の例について、さらに詳しく知りたい方は以下を参照ください。https://aws.amazon.com/jp/serverless/patterns/serverless-pattern/
サーバーレスの種類は2種類
サーバーレスの種類としては、大きく分けて「FaaS」と「BaaS」の2種類があります。
ただ、開発者がサーバーレスというときは基本的に「FaaS」のことを指します。なぜなら、FaaSにはアプリケーションの開発環境として適した機能が備わっているおり、開発効率が向上することから利用される機会が多いためです。
ここからは、「FaaS」と「BaaS」について、それぞれ解説します。
FaaS(ファース)
FaaSとは、Function as a Serviceの略で直訳すると「サービスとしての機能」、つまり機能の実行環境を提供するサービスという意味となります。「Function」は、「機能」や「関数」、「役割」といった意味となります。
FaaSには「オートスケーリング」と「イベントドリブン方式」の2つの特徴があります。
【オートスケーリング】
オートスケーリングとは、アプリケーションを実行する際に最適なサーバーを自動的に振り分け、それに応じてサーバーの拡張や縮小も自動で行ってくれる機能です。それにより、開発者はサーバーの負荷やインフラ周りのことを気にすることなく、アプリケーション開発に集中できるようになります。
【イベントドリブン方式】
イベントドリブンとは、何かのイベントが発生したことによって機能が実行される仕組みのことです。例えば、「ボタンがクリックされた」「データが追加で保存された」などです。
また、プログラムコードを書いて連携させるだけで処理が行えるようになるため、一からすべてをプログラミングする必要がありません。それにより、効率的なアプリケーション開発作業が行えるようになります。
BaaS(バース)
BaaSとは、Banking as a Serviceの略で、銀行が提供している機能をクラウドで提供するサービスのことです。
銀行の業務は大きく分けて「為替」、「預金」、「融資」となりますが、これらの業務を行うためにはライセンスや、扱うための仕組みを構築する必要がありました。
しかし、BaaSを利用すれば銀行以外の事業者でも、自社のサービスやアプリケーションに金融機能を搭載して提供できるようになりました。
デジタル化やキャッシュレス化の流れに伴い、銀行と銀行ライセンスを持たない企業との連携が進んだことで、BaaSが注目されるようになりました。
サーバーレスのメリット
アプリケーション開発にサーバーレスを活用することで、多くのメリットを享受できます。しかし、開発においてどのようなメリットを受けられるのでしょうか。
ここからは、サーバーレスを導入することで得られるメリットについて解説します。
構築や保守・管理が必要ない
自社でサーバーを構築し運用する場合、サーバー管理者は以下のような作業が発生します。
- 物理的なサーバー機器の手配
- 機器の設置・設定作業の手配(または自社で設置・設定作業)
- 機器・各アプリケーションの不具合監視
- 不具合発生時のメーカー保守対応依頼・不具合時のメーカー連絡
- 機器・アプリケーション保守期限の管理
- 一般的に5年に1度の頻度での機器のリプレース作業
- CPUやストレージのリソースの使用状況の監視
- プログラムやバグの修正をするためのプログラム(修正パッチ)の適用
- セキュリティを最新の状態に保つ
- OSを含めた各アプリケーションのアップデート作業・管理
- サーバー負荷増による負荷分散・冗長化の設計
- サーバーの稼働状況を監視し、過剰な負荷を検知したら負荷の分散を行う
- ネットワークの監視:不正・異常な通信検知後、通信遮断などの処置
サーバーレスを活用することで、上記のような作業を行わなくてよいため、アプリケーション開発作業に集中できるのが最大のメリットです。
サーバーの数を自動調整
サーバーレスでは必要に応じて、サーバーの数を自動調整できるようになります。常にサーバーにかかる負荷を監視しているため、その時の状況に応じてサーバーの台数を調整し、スペックの上げ下げを自動的に行ってくれます。それにより、想定外の大量アクセスなどの突発的なサーバー負荷にも耐えられるようになります。
コストを抑えられる
サーバーレスでは、広い意味でのコスト削減を図れるようになります。物理機器を購入する必要がないため、利用したいだけのリソースに応じた料金さえ支払えば良いため、導入コストを抑えられます。
また、自社でサーバーを用意する場合、物理機器の導入時には何社ものベンダーからの提案内容を比較検討し、運用テストを経てから実働し、もし何らかの理由で自社の運用にそぐわないシステムとなってしまった場合、返品はできません。しかし、クラウドサービスの場合は解約も可能なため、そのリスクを回避できます。
サーバーレスのデメリット
ここでは、サーバーレスのデメリットについて解説します。
ベンダーロックインとなり移行が困難
自社でサーバーの導入から、管理・運用をする必要がなくなるため、管理者の負担は大幅に軽減されますが、運用を任せるクラウドサービス提供会社(以降:ベンダー)に依存しやすい側面もあります。そのため、クラウドサービスの提供会社の選定には充分な検討が必要となります。
また、ベンダーに起因するトラブルの発生時は、障害が復旧するまではこちらでは何もできません。一般的にはその復旧作業を待つことしかできないのです。そのため、コストをかけられるのであれば、サービス上でシステムの冗長構成を図るか、複数ベンダーのサービスを活用するなどの対策が必要です。
環境や言語に制限がある
サーバーレスのプラットフォームでは、特定の言語によるアプリケーション以外は実行できないのが一般的です。アプリケーションのインストールをする手間を省くため、OSやミドルウェアなどの環境もあらかじめ用意されている状態なのです。
また、サービスによっては処理内容に制限がある場合もあります。例えば、AWS Lambdaは処理時間が最大15分と定められており、レスポンスやリクエストのデータは最大6MBまでという機能制限があります。
したがって、重いデータを処理する際は、他のサービスと連携をさせる必要がでてきます。
他のクラウドサービスとの違い
ここではFaaSと他のクラウドサービスであるIaaS、CaaS、PaaSとの比較について解説します。下の表は、ハードウェアの構築からアプリケーションの設定など、項目ごとにベンダーとユーザーの責任分界点について比較しています。
※〇はベンダー側が調整、設定。×はユーザーが調整、設定としています。
IaaS | CaaS | PaaS | FaaS | |
---|---|---|---|---|
アプリケーション | × | × | × | 〇 (連携機能) |
データ | × | × | × | 〇 |
ランタイム | × | × | 〇 | 〇 |
ミドルウェア | × | × | 〇 | 〇 |
コンテナ管理 | × | 〇 | 〇 | 〇 |
OS | × | 〇 | 〇 | 〇 |
仮想マシン | 〇 | 〇 | 〇 | 〇 |
ハードウェア | 〇 | 〇 | 〇 | 〇 |
この比較表から、FaaSはいかにユーザー側での運用や手間を省き、プログラミング作業に集中できるかが一目でイメージできます。
クラウドサーバーとは、レンタルサーバーと同様にネットワークを通じて、事業者が提供するサーバーを借り受けできるサービスです。 ただし、物理サーバー内に複数の仮想サーバー(※)を構築した状態で提供されているという点が特徴的です。
※仮想サーバーとは、専門のソフトウェアによって、ハードウェア上に仮想的なサーバーを構築するシステムを意味します。
AWSのサービスを例にクラウドサーバーとの違いを比較
ここでは、サーバーレスと従来のレンタルサーバー(以下:クラウドサーバー)のできることの違いについて、AWSのサービスを例に上げて比較していきます。
比較項目 | サーバーレス | クラウドサーバー |
---|---|---|
課金方式 | 実行時間×回数での課金 | 実行時間での課金 |
初期設定の必要性 | なし | あり |
利用できる言語の制約 | あり | なし |
運用責任範囲 | 実行プログラム | ・OS ・ミドルウェア ・実行プログラム |
サーバーレスはFaaS、クラウドサーバーはIaaSやPaaS形式にてサービスを提供することが一般的です。
AWSのクラウドサービスには、「LAMBDA(ラムダ)=サーバーレス」と、「EC2(イーシー2)=クラウドサ-バー」があります。ここでは、この2つのサービスを例に上げて、サーバーレスとクラウドサーバーの違いについて解説していきます。
課金方式
Lambda(サーバーレス)の課金方式は、プログラムを実行した回数によって課金されます。サービスの契約期間中、それほどサーバーを利用していない時も課金されるのではなく、使った分だけ回数に応じて課金されるので、コストパフォーマンスに優れている仕組みだといえます。
EC2(クラウドサーバー)は、インスタンスを起動している間、課金が発生します。したがって、サーバーレスのLambdaはプログラムの実行回数によって料金が変動するわけではないため、ユーザーの利用頻度によってコストパフォーマンスも異なってきます。
したがって、自社のサーバーの活用スタイルに合わせた選択が必要となってきます。
初期設定の負担
サーバーレスであるLAMBDAは、プログラムを送信するだけですぐ実行してくれます。
しかし、クラウドサーバーのEC2は何も設定を施していないOSの提供のみであるため、ミドルウェアや必要なアプリケーションは別途自社でインストールや設定をする必要があります。
したがって、クラウドサーバーを活用できるようにするためには、必要な環境設定は自社での構築が必要となってくるため、使用を開始するまでには手間がかかるという大きな違いがあります。
サーバーレスはどんなシステムに向いているの?
当然ながらサーバーレスはシステムによって「向き・不向き」がありますので、どんなシステムであってもサーバーレスが推奨されるわけではありません。
サーバーレスに向いているシステムなどには、具体的に以下のような特徴があります。
- マイクロサービス
- シンプルなデータの加工
- 動的Web、モバイルバックエンド
- 流入データの連続処理
- リアルタイムモバイル、モバイルオフライン処理
- イベント駆動の業務処理の連携
- アプリケーションフローの処理
反対にサーバーレスが向いていないのは、以下のような特徴のアプリケーションやシステムです。
- 低レイテンシを求められる機能
- 大容量のメモリが必要な機能
常にシステムが動いている必要のあるサービスや、高い負荷が長時間続くシステムなどは、サーバーレスには不向きであると言えます。
制約を少なくしたいならコンテナという選択肢も
サーバーレスでは制約が多く不便だと感じている場合は、コンテナという選択肢もあります。
コンテナとは、サーバー内を整理しアプリケーションの開発や管理などを効率的に行えるようにするための、OSレベルの仮想化技術のことを指します。
コンテナといえば、船や貨物列車に搭載される大きな鉄の箱をイメージする方も多いかもしれません。このコンテナは、国際基準で用途やサイズは決められており、どこの国でも同じルールで使用できるようになっています。
ITにおけるコンテナも、船や列車と同様にWebサイトやアプリケーションを乗せて移動できるようになっています。
コンテナは、サーバーレスほどの制約は受けずに、「ある程度の設定は自由にできるようにしたい」というケースに適しています。
もし、コンテナかサーバーレスかのどちらを選択すればよいか判断がつかない場合は、AWS社が作成したデシジョンツリーを進めていき、1つでも「いいえ」がある場合はコンテナを選択すると良いでしょう。
cloud tap|クリックひとつで、Kubernetesのすべてを制御。国産クラウドプラットフォーム
cloud tap は、構築済み Kubernetes 環境を提供する国産マネージドサービスです。
サーバーレスの代表的なサービスと選び方
サーバーレスのサービスを提供する会社は複数あり、それぞれに特徴も少しずつ異なってきます。それでは、どこのサービス提供会社を選べばよいのでしょうか。
特に、アプリケーションの開発においては、サーバーレスはアプリケーションがそのアーキテクチャにマッチしなければ、すべてが機能しない恐れもあります。したがって、活用するサービスついてはしっかりと機能や特徴を比較して検討する必要があります。
Lambda (AWS) | Azure Functions (Microsoft) | Cloud Functions (Google ) | Function Compute (Alibaba) | |
---|---|---|---|---|
利用できる 言語 | Node.js 12 Node.js 14 Node.js 16 Python 3.9 Python 3.8 Python 3.7 Python 3.6 Java11 Java8 .NET 6.0 .NET Core 3.1 Go 1.x Ruby 2.7 | Node.js 12 Node.js 14 Python 3.9 Python 3.8 Python 3.7 Java11 Java8 .NET 6.0 .NET Core 3.1 PowerShell 7.0 | Node.js 10 Node.js 12 Node.js 14 Node.js 16 Python 3.9 Python 3.8 Python 3.7 Java11 .NET Core 3.1 Go 1.16 Go 1.13 Go 1.11 PHP 8.1 PHP 7.4 Ruby 3.0 Ruby 2.7 Ruby 2.6 | Node.js 8 Node.js 10 Node.js 12 Node.js 14 Python 3.9 Python 3.6 Java11 Java8 .NET 6.0 .NET Core 3.1 Go 1.x PHP 7.2 |
タイムアウト | 15分 (900秒) | 10分 (600秒) | 9分 (540秒) | 1440分 (86,400秒) |
最大メモリ | 3,008MB | 1,536MB | 2,048MB | 32GB |
OS | Amazon Linux | Windows Linux | Linux | Linux |
オーケスト レーション | AWS Step Functions | Azure Logic Apps Durable functions | Workflow | Serverless Workflow |
まとめ
クラウドサーバー(IaaSやPaaS)に比べて、サーバーを導入する際の構築や設定の時間を削減しやすいサーバーレスは、アプリケーションの開発には集中した作業を実現できるサービスです。
しかし、サービス提供会社によって、使用できる言語や機能の制限が異なってくるため、導入検討の際はアプリケーション開発担当者と共になり充分なサービスの比較検討をした上で導入するべきです。 この記事が、サーバーレス導入の一助になれば幸いです。
コンテナ管理をこれから始めたいお客様に最適な、RancherでKubernetesを簡単に管理できるコンテナサービスと、サーバースペック 95パターン+ディスク容量 10パターンから選択できるクラウドサーバーを提供する国産クラウドプラットフォームです。