San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
WAF

FaaS - Function-as-a-Service

サーバレス技術では、プログラマーが基盤の管理を気にせずソフトの開発や削除を行えます。最新の技術ではサーバーは使用されていますが、実際に目にすることはありません。このアーキテクチャでは、設定や運用、拡張といった地味な作業をクラウド提供者が担当するため、プログラマーはコード記述に専念する時間が増えます.

「サーバレス」と「Function as a Service」は同義語として用いられることが多いです.

著者
FaaS - Function-as-a-Service

FaaSとは?

FaaSは、クラウドホスティングサービスの一種で、個人が共有の仮想サーバ上でアプリを作成、削除、管理できる仕組みです。上位層と下位の基盤が完全に分離されることで、リクエストに応じてデータや記録が提供されます。クラウドサービス提供者のハードウェアやソフトも、利用されていないときは停止し、必要なときに再起動されます。要望が満たされると、サーバーは停止することが可能です。FaaSの意味を明確にするポイントは以下の通りです:

  • クラウドサービス提供者が基盤部分の管理を代行し、その詳細は隠されています。
  • 料金は利用量に応じて計算されます。
  • 貴社は実際に利用した分だけの料金を支払います。
  • ある出来事が起これば、それに応じた動作が自動で行われます。

FaaSは何をする?

FaaSを利用する前に、まずそのメリットを示すツールを採用する必要があります。

この分散方式を使う開発者は、アプリサーバーを常時稼働させる必要がなくなります。代わりに、サービス提供者がサーバーを別の場所で管理し、必要なときに貴社に提供します。FaaSでは、プログラマーが「関数」と呼ばれるコードの部品を、必要に応じて実行できるようになります。

サービス運営者は、新たにサーバーを起動し、関数を実行した後、処理が終わるとサーバーを停止することがよくあります。必要なときだけプログラムが動くため、常時稼働させる必要がなく、FaaSの仕組みは人気を集めています。処理後は、次の作業に備えてサーバーを停止できます。

FaaSでは、サービス提供者が全てのソフトウェアリソースの安全管理と連携を行うので、プログラマーはコードの記述に専念できます。基盤は、ジョブやタスクのスケジューリング、Webリクエストの処理、メッセージのキューイングといった、単純で繰り返し行う作業に適しています。

クラウドサービス提供組織がアプリのデプロイ時のサーバー管理を担うことで、開発者はホスト管理や移行よりも、プログラムの論理設計に注力できます。

FaaS evolution

FaaSの長所と短所

近年、多くのクラウドサービス提供者がFaaSをサービスに加えています。ベンダーは、技術の柔軟性やマイクロサービスアーキテクチャとの相性を評価しています。FaaSの得意な点は以下の通りです:

  • 節約 - プログラマーがサーバー管理の細かい作業を気にせずアプリの動作に専念できるため、費用の削減が可能です。その結果、インフラ管理にかかるリソースを抑えられます。
  • 効率性 - より多くの作業を低コストで運用できるため、プログラムの作成と実装の時間が短縮されます。
  • 拡張性 - アプリを大きなプラットフォームに組み込む必要がなく、個別にスケールできます。
  • 従量課金制 - 貴社が実際に利用する機能にのみ料金が発生するため、無駄な費用がかかりません。
  • 十分な装備 - サポート、可用性、障害耐性など、基本的な機能が備えられています。

FaaSを導入する前には、いくつかの課題も検討する必要があります。主な懸念点は以下の通りです:

  • 透明性 - バックエンドや第三者が管理するインフラは、内容が見えにくくなります。
  • セキュリティ - クラウドサービスを利用する際、基盤アーキテクチャの信頼性や安全性に依存する必要があります。
  • コスト - 従量課金制では、費用の見通しや予算管理が難しい場合があります。
  • テスト - 統合やパフォーマンスなどを考慮すると、ソフトのテストが容易ではありません。
  • サプライヤー独占 - すべてのクラウド提供者が同じFaaS機能を提供しているわけではなく、一度利用を開始すると、別のプロバイダーへ移行する際にデータやアプリの移植作業が必要となり、乗り換えが困難になる可能性があります。
  • 非互換性 - 発展途上であるため、関数の監視やリモートデバッグなどに関する確立した手法がありません。そのため、既存の継続的インテグレーション/デプロイのワークフローに組み込むのが難しいです。

FaaSの活用事例 

FaaSは、大量かつ並列的な処理に適しており、トランザクションを分離・拡張することが容易です。顧客向けアプリに加え、データ処理、フォーマット変換、エンコーディング、データ集約などのバックエンド業務にも利用できます。

オンラインチャットボットやIoT機器向けのバックエンド、データやストリームの管理に特に有利です。また、外部リソースの制御と活用も促進されます。例えば、Androidアプリの開発において、バッチ処理など特定のリクエストがあった時のみクラウドアクセスの料金が発生するため、コスト削減につながります。

処理能力の面でも大きな効果が期待できます.

FaaS vs. PaaS vs. IaaS

クラウドコンピューティングの例として、IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、およびFaaS(Function as a Service)などがあります。これらの違いは、利用者とそのインフラとの関係にあります.

  1. IaaSは不要な機能を省いた最小限の環境を提供します。IaaS利用者は、自分のシステムや関連するプログラム、資産を完全に管理できますが、基盤となるデータベースネットワークの運用までは担いません.

IaaSでは、プログラマーが必要な抽象化レイヤーを自由に選べます。すべて自前で管理するか、ロードバランサーやManaged Kubernetes、Managed Databasesなどのサービスを組み合わせることも可能です.

  1. PaaSは、利用者にさらに高い抽象化レベルを提供します。PaaS利用者はプログラムのOS、ランタイム、その他の基盤部分の管理を行う必要がなく、ソフトウェアや基盤の設定に対して細かい制御が可能です.

PaaSは、プログラムを迅速にリリースするための整った環境を提供します。サービス提供者が構造やその他の機能を管理するため、開発者はコード記述に専念できます.

  1. FaaSは、最も利用しやすく専門的な選択肢です。サービス提供会社がすべてのプログラムリソースと基盤の管理を行い、開発者は必要なときに関数の論理を実行する環境を利用できます.

FaaSとスケーラビリティ

キッチンを、食品を冷やし、温め、焼くことができるモノリシックなソフトと考えてみてください。モノリシックなアプリは、全体を複数のサーバーに複製して拡張するため、焼く作業が増えると新たなキッチンが必要になります.

キッチンをマイクロサービスに分割すれば、冷蔵庫、冷凍庫、コンロ、コーヒーメーカー、電子レンジといった個別の機器になります。この場合、必要な部分だけを拡張できるので、新しいキッチンを用意せずにオーブンを増設できます.

コーヒーメーカーはコーヒーだけを作りますが、冷蔵庫は水の供給、氷の生成、食品の保冷が可能です。サーバレスアーキテクチャでは、各関数が独自のコードを持ち、個別にスケールすることができ、全体のソフトを展開する必要がないため、資源を最も効率的に利用できます.

FaaSとマイクロサービス型アプリの違い

近年のソフトウェア設計では、これらの技術が幅広い用途に利用されています.

  • FaaS - クラウドサービス提供会社が、ソフトやハードのイベント発生時に利用者のコードを読み込んで実行します。コードは限定的な目的のために作られ、FaaS提供者が管理する基盤上で動作します.
  • Microservices - ソフトの機能や能力が、ローカルまたはクラウド上で動作する各機能モジュールに分割されます。各モジュールはAPIを介して連携し、利用者がローカルまたはクラウドのマイクロサービス基盤を管理します.

これらは同一のソフト内で共存することも可能です。たとえば、コンテナを用いた分散アプリをクラウド向けに設計し、マイクロサービスのコード実行やイベントに応じたトリガーで動作を開始することが考えられます.

FaaSとサーバレスコンピューティングの違い

当初は同義でしたが、現在「サーバレス」は、自社のビジネスロジックに加え、共通サービスも利用するより広い構造パターンや手法を指します.

コンテナ化とスケール、状態管理が可能であれば、マイクロサービスや従来のプログラムもサーバレスを採用できます.

"サーバレス"は、データベースやメッセージングシステムのように、開発者や管理者が個別に管理する必要のないマネージドサービスを示す場合もあります.

オープンソースのFaaSや、主にイベント駆動で連携するデータベース、メッセージング、認証などの一般的なバックエンドサービスは、サーバー管理を必要としない開発者に大きな助けとなります.

FaaSの原則とベストプラクティス

デプロイをスムーズにし、良い成果を得るためには、以下のFaaS導入のベストプラクティスに従うとよいでしょう.

  • 各関数には、一つの処理のみを実行させるように設計してください。特定の事象に対して単一の動作を行うようにすることで、コードの範囲を限定し、簡潔に保つことが、関数の起動と実行の速さにつながります.
  • 関数同士が呼び出し合うことは避けるようにしてください。複数の関数に分割できることがFaaSの強みですが、過度に複雑にすると、コストが増加し、分割のメリットが失われます.
  • 使用するライブラリは最小限にすることで、処理効率が上がります。ライブラリに依存しすぎると、動作が遅くなり、スケールもしにくくなります.

結論

FaaSを適切に導入すれば、開発プロセスの簡略化や運用コストの削減など、大きな効果が期待できます。サービス志向の流れが進む中、開発者は特に得意とする分野に、より多くの時間を注げるようになります.

FAQ

Open
FaaSプロバイダはどのプログラミング言語に対応していますか?
Open
FaaS(Function-as-a-Service)とは?
Open
FaaSを利用するメリットは何ですか?
Open
FaaSは他のクラウドコンピューティングモデルとどのように違うのか?
Open
FaaS を使い始めるにはどうすればよいですか?

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック