フォーム読み込み中
サーバレス(サーバーレス)とは、システム開発・運用を行う上でサーバの構築や管理が不要であり、サーバを意識しない考え方を指します。サーバレスサービス(以降、サーバレス)は、サーバを意識する必要が無く運用効率化を目的としたサービスです。本記事ではサーバレスのメリット、IaaSとの違いなどを解説していきます。サーバレスを検討している方の参考になれば幸いです。
「サーバレス」とは、その名前が表す通りサーバを意識せずに利用できるサービス・アーキテクチャを指します。
一般的なWebアプリケーションや業務システムは、24時間365日稼働するサーバ上に構築しますが、システムによっては日中帯や週末にしかアクセスが発生しないケースもあります。こうしたケースでは、サーバが稼働していない時間が非常に多くなり、コストパフォーマンスがとても悪くなります。そこで活用できるのがサーバレスです。サーバレスであれば、必要なタイミングでのみリソースを利用することができコストパフォーマンスがとても良くなります。さらに、サーバの運用からも解放されるため、コストとともに労力を抑えることができる優れたアーキテクチャです。ここではサーバレスの仕組みについて簡単に解説します。
サーバレスを実現するには、各クラウドベンダが提供するサーバレスサービス(AWSのLambdaなど)にコードをアップロードします。このコードが、サーバレスで実行したい処理の本体となります。なお、サーバレス処理は上図の通りさまざまな機能と連携可能です。では、サーバレス処理はどのように起動すればよいのでしょうか。
サーバレス処理は、さまざまなイベントをトリガーに実行されます。例えば、下記の処理が行われたとき、その処理に連動してサーバレス処理を呼び出すことが可能です。
このような仕組みにより、一例として下記の処理を実現できます。
サーバレスにはどのような特長があるのでしょうか。ここでは各クラウドベンダが提供するサーバレスのサービスや、特長などを紹介します。
サーバレスでアプリケーションを開発できるクラウドサービスを「FaaS(Function as a Service)」と呼びます。
通常アプリケーションは、複数のファンクション(メソッドや関数とも呼ばれる)を実装しアプリケーション内で適宜利用することで、目的の処理を実現しています。このアプリケーションはサーバにデプロイ(構築)することで利用できるようになります。
一方、FaaSは上記のファンクション単位で開発・実行します。サーバレスであるため、サーバを意識する必要がない点が特長といえます。このFaaSには類似するサービスが多いので、それぞれ違いについても簡単に説明します。
IaaS(Infrastructure as a Service)は、サーバなどのインフラをサービスとして提供する形態です。自由度が高い反面、開発者が担当すべき領域も広くなってしまうのが特徴です。
CaaS(Container as a Service)は、コンテナと呼ばれる技術を活用したサービスです。サーバレスアーキテクチャを導入しているところは、FaaSとの共通点といえます。ただし、FaaSはFunction(メソッドや関数と呼ばれる機能の最小単位)単位で実行可能ですが、CaaSはより大きなアプリケーション単位で実行します。
PaaS(Platform as a Service)は、OSやミドルウェアなどを提供するサービスを指します。CaaS同様に高い柔軟性をもつ一方で、開発者が運用すべき領域が広い点が特長といえます。
サーバレスは、クラウドならではのメリットを享受できるため、クラウドネイティブな開発を行う際は利用頻度が高いプロダクトの1つです。
以下に主要クラウドベンダのサーバレスサービスの特長をまとめました。
AWS Lambda | Azure Functions | Google Cloud Functions | Alibaba Cloud Function Compute | |
---|---|---|---|---|
対応言語 |
|
|
|
|
最大 | 15分 | 10分 ※Premiumプランは30分 |
| 10分 |
課金体系 | 100万件リクエストあたり 0.20USD | 100万件リクエストあたり 0.20USD | 100万件リクエストあたり 0.40USD | 100万件リクエストあたり 0.20USD |
各社のサービスを比較すると、対応言語や最大実行時間および課金体系などに僅かな差分はあるものの、大きな違いは見当たりません。4社ともクラウド業界にて激しいシェア争いをしているため、他社を追随する仕様を実現しているものと予想されます。
いずれにしても各ベンダともにこれらのサーバレスサービスを提供しているため、利用する門戸は常に開かれているといえるのではないでしょうか。
サーバレスは、多くのメリットをもっています。ここではサーバレスのメリットとして下記の5つを説明します。
サーバレスは、サーバ運用が不要です。
そのため、サーバの構築やバグ対応や脆弱性などのパッチ適用など、サーバの構築および運用にかかるコストや運用の手間を省けます。
サーバを含めたインフラ部分は、手間やコストをかけても競合他社とのサービス競争領域にはなりにくいという特性があります。サーバレスを導入すれば、競争領域となるアプリケーションの開発に注力しやすいでしょう。
サーバレスは、従量課金のためコスト削減が可能です。
クラウドでは、仮想コンピューティングサービス上にサーバを構築するケースもあります。このようなサービスの場合、仮想マシンを起動している時間単位で課金されるケースが一般的です。やや極端な例となりますが、1日1回10分だけ処理を実行するアプリケーションだとしても、仮想マシン(サーバ)を24時間稼働させた場合は24時間分の利用料が発生してしまいます。
一方でサーバレスは、処理を実行した回数や時間に対して課金が発生します。先ほどの例でいうと「1日1回10分」に対する利用料のみです。サーバレスであれば、大幅にコスト削減できる可能性があります。
サーバレスは、高い拡張性を有しています。
一般的にシステムを構築する場合、処理に必要となるCPUやデータ量などをもとにあらかじめリソースを用意しなければなりません。性能が不足した場合は処理が滞るリスクもあり、高い利用料を払って高性能なリソースを用意しても結局使用しなかったというケースもあるでしょう。
サーバレスであれば、実際のデータ量などに応じて自動的にリソースの性能をアップ・ダウンしてくれる「オートスケール機能」をもっています。この機能により、コストを抑えながら常に最適なリソースで処理を実行できます。
サーバレスを導入すると、可用性が向上します。
各クラウドベンダが提供するサーバレスのサービスは、利用者が冗長化などを意識する必要がなく、クラウドベンダ側が可用性などを考慮した構成を提供しています。そのため、サービスそのものを利用できなくなるリスクが低く、安定した稼働を継続可能です。
サーバレスは、新サービスやマイクロサービスに対応しやすいアーキテクチャです。
収益性が不透明な新サービスの場合、可能な限りミニマムにスタートしたいというケースも多いのではないでしょうか。クラウドサーバ、あるいはオンプレミスのサーバ上にアプリケーションを構築する場合、アプリケーションに加えインフラ構築・運用でもコストが発生します。
サーバレスであれば、実行すべき機能のみに開発リソースを注力できるため、新サービスをミニマムにスタートできます。また、サーバレスはマイクロサービスアーキテクチャとも親和性が高く、保守性に優れたアプリケーションを構築可能な点もメリットといえるでしょう。
多くのメリットをもつサーバレスですが、デメリットもあります。ここでは、サーバレスがもつ3つのデメリットを解説します。
サーバレスはベンダロックインが起きやすく、ほかのクラウドベンダへの移行が難しくなる場合があります。
サーバレスは「Event/Trigger」「サーバレス処理」「Service/連携」といったサービスを組みあわせて実現します。これらはクラウドベンダが提供するサービスの仕様や特性に強く関連しています。そのため、「A社で開発したサーバレス処理を、B社のクラウドサービスに移行する」といった対応が難しく、特定のクラウドベンダへの依存度が高くなってしまうのです。
このように、ベンダロックインが発生しやすい状況となってしまう点はデメリットといえるでしょう。
サーバレスは、ひとたびクラウド側で障害が発生すると大きな影響を受けやすい点もデメリットです。
クラウドは信頼性が高いという特長を有しており、いずれのサービスも100%に近い稼働率を誇っています。ただし、規模の差はあれど各クラウドベンダが提供するクラウドサービスも障害自体は頻繁に発生しているのです。
サーバレスは、実行対象の機能以外は全てクラウドベンダ側のリソースを活用するため、万が一クラウドベンダ側で障害が発生した場合は大きな影響を被ります。
サーバレスは、タイミングによって処理に時間がかかることがあります。
サーバレスは、初回起動時にコードのダウンロードなどの実行準備を行います。この処理に時間を要することがあるのです。万が一スピードが重視されるアプリケーションの場合は、この遅延が致命的なものとなる場合もあります。
ここまでサーバレスの特徴やメリット・デメリットなどを紹介しました。サーバレスは全てを解決する魔法のアーキテクチャではありません。サーバレスにも「向き不向き」があります。
サーバレスが向いているケースとしては以下の通りです。
一方で、サーバレスが向いていないケースは以下の通りです。
サーバレスの導入は、あくまでも目的ではなく手段の1つです。アーキテクチャ検討時にシステムに求められる特性を踏まえた上で、導入可否を判断するとよいでしょう。
今回の記事ではサーバレスについて解説しました。
サーバレスはさまざまなメリットをもっています。特に開発者が担当すべき領域を限定し、開発コストや運用コストを削減可能な点に加えて、高い可用性をもつ点は大きな魅力といえるでしょう。そのため、システムのアーキテクチャ設計時に「サーバレスの導入が可能か」を検討する価値は十分にあります。
導入時の注意点としては以下の通りです。
なお、「これまでモノリシック(一枚岩)なシステムしか開発した経験がない」あるいは「サーバレスアーキテクチャ導入時の勘所を知りたい」といった方も多いのではないでしょうか。ソフトバンクでは、サーバレスのご支援もしております。クラウドへの移行方法を相談したい方、開発コストを削減したい方、柔軟で安定したシステムを求めている方は、ぜひご相談ください。
条件に該当するページがございません