「FaaS(Function as a Service)とは?」そもそもサーバーレスとは?|SaaS連携の専門家が分かりやすく解説!
自社内でデータを管理していたオンプレミスに替わりクラウドサービスが登場したことにより、SaaSやPaaSといった〇aaS系の用語も良く耳にするようになりました。
その中でも特に「FaaS」は開発効率を高めてくれることから、エンジニアを中心に比較的認知度のあるサービスとなっています。
本コラムでは、FaaSの概要・特徴に加え、関連する〇aaS的用語やFaaSによって得られるメリット・デメリットをわかりやすく説明します。
目次
FaaSとは?
FaaS(Function as a Service:ファース)とは、直訳で「サービスとしての機能」で、
開発や業務に必要なサーバーなどのインフラをクラウドサービスに一任し、開発者がプログラミングに集中できるサービスを発展させたものです。
※FaaSには「Framework as a Service」の頭文字からできた、ソフトウェアフレームワークを提供するサービスという意味合いもあります。PaaSよりアプリケーションやシステム開発に必要なフレームワークが備わっているサービスです。
今回は「Function as a Service」についてのみ説明をしていきます。
もう少し詳しく説明していきます。
FaaSの特徴
FaaSは後述するサーバーレスに加え、「オートスケーリング」「イベントドリブン方式」の二つの特徴があります。
オートスケーリング
FaaSには、作成したプログラムに合わせて自動的にサーバーを拡大、縮小(オートスケーリング)する機能が備わっています。
サーバーを利用者側で別途管理する必要がなく、コードを実行するサーバーはFaaS側で割り当てられるため管理の負荷が軽減されます。
よって、開発者はサーバーなどのインフラ周りを気にすることなくプログラミングに注力できます。
イベントドリブン方式
FaaSでの開発は、基本的にイベントごとに実行させるコードを書く「イベントドリブン方式」で行われます。
これは何かのイベントが発生した時に、初めて処理が実行されます。
例えば、
- ボタンがクリックされる
- データが追加される
- スマホアプリではスワイプ、スライド、タッチ
などが挙げられます。
開発者は実行される機能を作成し、トリガーの配置、設定を行うだけで、アプリケーションやサービスを作ることができるのです。
一方、PaaSは処理する必要があるイベントが発生するたびにアプリケーション全体を起動させて処理する「リクエストリプライ方式」で行われます。
サーバー・ストレージなどのリソース調達が柔軟におこなえるのはクラウドサービス全体の特徴ではありますが、
プログラムコードを書いて「連携させるだけ」で処理を実行できる、というのはFaaS独自の特徴といえます。
そもそもサーバーレスとは
サーバーレスとは、サーバーやOSなどのインフラを意識することなくプログラムを作成・実行できる技術の総称です。
server-lessという言葉ですが、サーバーが存在しないわけではなく、サーバーの管理・運用を開発側ではなくサービス事業者(FaaS事業者)側が担うため、開発者はビジネスロジックの作成に注力することができます。
FaaSが普及した背景には、このようなサーバー管理の煩雑さから解放され、開発に注力したいというニーズが人材不足のIT業界全体で存在したといえます。
サーバーレスという概念は常に進化しており、その定義も人それぞれ微妙に異なりますが
サーバーレス方式で行うサービスのひとつがFaaSだと理解しておけばよいでしょう。
FaaSの他にも「BaaS(Backend as a Service:バックエンドで動くシステムを提供するサービスのこと)」もサーバーレスのひとつといえます。
※BaaSと称されるサービスは他にも2種類あり、別の意味を持ちますのでご注意ください。
- Banking as a Service=金融機関が提供する銀行の機能を自社のサービスで使用できるよう提供してくれるクラウドサービス
- Blockchain as a Service=ブロックチェーンを活用したアプリ・サービスなどの開発に際し、インフラを補完してくれるクラウドサービス
サーバーレスアーキテクチャとは
サーバーレスを利用したシステムの設計・構築もしくは方法論のことを指します。
文脈によってはサーバーレスと同義で扱われることもあります。
IaaS、PaaS、SaaS、iPaaS、DaaSとの違い
iPaaSを調べる際に見かけることが多い用語についても、整理してみましょう。
〇〇〇 as a Service という単語構成になっており、〇の部分にどういったサービスを担うかの英単語が入ります。
IaaS(Infrastructure as a Service)
読み方:イアース、もしくはアイアース
IaaSはシステムを稼働させるために必要なネットワークからOSまでの機能を利用できるようにしたものです。
IaaSの詳細についてはこちらのコラムをご覧ください。
PaaS(Platform as a Service)
読み方:パース、もしくはパーズ
PaaSは、IaaSに加えて、ミドルウェアやプログラミング言語、管理システムといったアプリケーション開発に必要なものを利用(提供)できるようにしたものです。
PaaSの詳細についてはこちらのコラムをご覧ください。
SaaS(Software as a Service)
読み方:サース、もしくはサーズ
SaaSは開発されたソフトウェアをインターネット経由で利用(提供)できるようにしたものです。
SaaSの詳細についてはこちらのコラムをご覧ください。
上記3つは提供するサービスの領域が異なります。
iPaaS(Integration Platform as a Service)
読み方:アイパース
iPaaSはオンプレミス、またはSaaSサービスの複数システムでばらばらで管理している情報を連携・管理できるサービス、または形態を指します。
iPaaSの詳細についてはこちらのコラムをご覧ください。
DaaS(Desktop as a Service)
読み方:ダース
DaaSはクラウド上で仮想デスクトップ環境を提供するサービスの一種です。
テレワークの普及により着目されるようになりました。
従来のVDI(Virtual Desktop Infrastructure)では仮想デスクトップの環境を自社サーバー内に保有していましたが、DaaSではクラウド上に保有しているため管理はDaaS事業者が行います。
FaaSのメリット、デメリット
メリット
コスト削減
物理的なサーバーが必要なく、利用した分だけ料金を支払えばいいため、開発費用を抑えることができます。
前述の通り、FaaSはトリガーが踏まれた時だけ処理を実行し、その部分のみ料金が発生します。
しかも、代表的なFaaSには100万件~/月の無料利用枠が設けられています。
他のクラウドサービス(IaaSなど)は、スタンバイ中などの時間に対しても料金が発生するので、FaaSを利用することで費用の削減につながります。
さらに、メンテナンス・アップデートといったサーバー管理をFaaS事業者側に一任できるため、開発者は自身の開発作業のみに集中することが可能です。
拡張性(Scalability)
FaaSの特徴でもあるオートスケーリング機能により、アクセス数の変動を開発者側が気にする必要がありません。
アーキテクチャによっては従来 使用していたサービスと組み合わせて、既存のアプリケーションの拡張を目的としても使用できます。
他の〇aaS系サービスと比較しても拡張性に秀でているといえます。
柔軟性
通常、FaaSは実行回数ごとの従量課金制となっているため、アプリケーションの立ち上げが迅速に行えます。
また、ミドルウェアや利用できるプログラミング言語の選択が限られることの多いPaaSと比較して、開発環境の自由度が比較的高い傾向にあります。
実際、現在 主流となっているFaaSは多くのプログラミング言語に対応しているため、広い範囲の開発環境で利用可能です。
可用性(Availability)
FaaSではサーバーなどのインフラをサービス提供事業者が管理するため、BCP(※)の対策にも効果があります。
※BCPとは?:
Business Continuity Planの略で、事業継続計画を指します。
自然災害やシステム障害などの緊急事態に備え、損害を最小限に抑え、重要度の高い業務を停止させることなく継続する考え方です。
例えば火災が起こった場合、サーバーからシステムまですべてを自社で保有・管理していると、業務に大きな影響を与えることが想定されるため望ましくありません。
内閣府では、民間企業向けBCPガイドラインとその取り組みを簡易チェックできるチェックリストを公開しており、すべての企業に対してBCPの対策が望まれるとコメントしています。
2011年の東日本大震災で注目され、近年は外的要因として自然災害のみならず、サイバーテロや新型感染症のまん延などさまざまな事象への対策が求められているのです。
ただし、FaaS事業者の稼働状況に完全依存するため注意が必要です。
また、サービス障害発生時も構成が複雑であるほど調査に手間を要する可能性があり、デメリットと表裏一体ではあります。
デメリット
サービス終了の可能性がある
可能性としては高くはありませんが、FaaS事業者がサービスを終了するとどうすることもできません。
SaaS、iPaaSのデメリットと重なる部分でもあります。
システムの稼働率がFaaSに依存する
サービスがネットワーク上で提供されるため、アクセス集中やトラブルが起きると作業がストップする可能性もあります。
システム全体の平均修復時間(MTTR:Mean Time To Repair)に直接的な影響がありますので理解しておきましょう。
導入&運用ハードルが高い
利用しているFaaSのルールに合わせてファイルの位置や数値設定を行わなければならず、FaaSによっては実行時間やタイムアウトなどの制限があることもあり、
使いこなすには知識と経験が必要になります。
とりあえずFaaSを導入するのではなく、他〇aaS系サービスと組み合わせた適切なアーキテクチャを考慮してこそFaaSは真価を発揮します。
つまり、全体の構成を構築できるエンジニアの確保も課題になってきます。
おのずと非エンジニアの利用も想定しているiPaaSよりも運用するハードルは高くなります。
FaaSを使う際はこうしたデメリットもしっかり把握して、導入する必要があります。
事例
現在ではさまざまなFaaSが提供されており、各サービスによって特徴があります。
代表的なサービスをご紹介します。
※執筆時点の情報になりますのであらかじめご了承ください。
AWS Lambda
「AWS Lambda」はAmazonが提供するAWS(Amazon Web Service)の機能の一つです。
Amazon S3・Amazon DynamoDBなどのAWSサービスにロジックを追加できるため、AWSをメインでデータ管理している場合は特に使いやすくなっています。
Java、Go、PowerShell、Node.js(JavaScript)、C#、Python、Rubyを標準でサポートしており、
提供されているRuntime APIを利用することにより、その他のプログラミング言語についても使用が可能となっています。
一か月あたり100万件の無料利用枠が用意されています。
Google Cloud Functions(GCF)
「Google Cloud Functions(GCF)」はGoogle Cloudが提供するGCP(Google Cloud Platform)の機能の一つです。
AWSと同様に、GCPをメインで使っている場合はまずGCFを検討すると良いでしょう。
言語はNode.js(JavaScript)、Python、Go、Java、.NET、Ruby、PHPに対応しています。
無料利用枠はAWS Lambdaより広く、一か月あたり200万件の呼び出しがおこなえます。
Azure Functions
「Azure Functions」はMicrosoftが提供するAzureの機能の一つです。
従量課金プラン・Premiumプラン・専用プラン(App Service プラン)と3種類のプランが用意されています。
Premiumプラン では実行料金は発生せず、各インスタンスが割り当てられている秒単位で課金されます。
言語はC#、Node.js(JavaScript)、F#、Java、PowerShell、Python、TypeScriptに対応しています。
従量課金プランでは一か月あたり100万件の無料利用枠が用意されています。
IBM Cloud Functions
「IBM Cloud Functions」はIBMが提供するIBM Cloudの機能の一つです。
言語はNode.js(JavaScript)、Python、Swift、PHP、Go、Ruby、Java、.NET Coreに対応しています。
Dockerアクションを利用することにより、その他のプログラミング言語についても使用が可能となっています。
一か月あたり500万件の無料利用枠が用意されています。
まとめ
エンジニア目線では開発効率の向上が見込め、会社全体ではコスト削減というメリットをもたらすFaaS。
しっかりとFaaSの特性とデメリットも理解したうえで活用すれば、導入時にはやや労力を要するものの、
長い目でみれば大きな恩恵をもたらすことでしょう。
〇aaS系のサービス導入は、一部機能を提供事業者側に一任することにより、コスト・開発効率の改善だけではなく
プロジェクトメンバーが余計なことを気にすることなく安心して開発に注力できる環境を整えることにもつながります。
是非、導入を検討してはいかがでしょうか。
SaaS連携開発やAPI開発支援でお困りの方へ
多くの企業で、1社あたり10程度のSaaSを利用しているといわれています。
それだけSaaSは多くの企業に必要とされていることがわかります。 しかし、複数のSaaSを利用することで情報の分断や多重入力といった問題が起こるリスクがあります。
業務の効率化を求めて導入したはずなのに、複数のSaaS利用によって新規導入や効果的な運用の足かせとなることがあるのです。
ストラテジットは"SaaSのチカラを全ての企業に"をMissionに掲げ、創業以来 国内外50以上のSaaSとの連携開発を行ってきました。
SaaSベンダーの利便性はもちろんのこと、そのSaaSを利用するエンドユーザーこそが使いやすい製品を提供することで、SaaSベンダー・ユーザーともにコア業務に集中できる環境のお手伝いをしたいと考えています。
まずは話だけでも聞いてみたい、自社SaaSの満足度を上げたい、というSaaSベンダー様はストラテジットが提供するEmbedded iPaaS「JOINT iPaaS for SaaS」を是非ご検討ください。
※一般企業向けiPaaSはこちら「JOINT iPaaS for Biz」(Comming soon...)
▼無料相談はこちらのフォームよりお申込みください。
▼お急ぎの方はこちらから無料オンライン相談のご予約をいただけます。
個別の連携開発も承っております。「Master Hub(データ連携開発)」
特許取得済の開発プラットフォームにより、高品質な連携アプリを提供します。
ノーコードでSaaSのAPI連携を実現するには、SaaS連携専門アプリストア「サーステイナー」を是非ご活用ください↓