8章ファンクションとイベント駆動処理

ここまでは、継続的にサービスを提供するシステムのデザインについて見てきました。ユーザのリクエストを処理するサーバは、常に起動して準備済みの状態でした。このパターンは、負荷が大きく、巨大なデータをメモリに保持していたり、何らかのバックグラウンド処理を行うようなアプリケーションの多くに適しています。しかし、1回のリクエストに対して一時的に必要になる、あるいは特定のイベントが発生した時だけ必要になるような種類のアプリケーションもあります。このようなリクエストあるいはイベント駆動のアプリケーションのデザインは、巨大なパブリッククラウドプロバイダがFunction-as-a-Service(FaaS)プロダクトを開発していることから、近年盛んに使用されています。さらに最近では、FaaSの実装はプライベートクラウドや物理環境上でも、クラスタオーケストレータの上でも動くようになっています。この章では、このような新しいスタイルのコンピューティングに使われるアーキテクチャについて説明します。多くの場合、FaaSは完全なソリューションというよりは大きなアーキテクチャ内のコンポーネントの1つという位置付けで話を進めます。

[Tip]

たいていの場合、FaaSはサーバレスコンピューティングのことを指します。これは(FaaSの利用者はサーバを意識しないという点で)間違ってはいないのですが、イベント駆動のFaaSと、広義のサーバレスコンピューティングの違いを明確にしておく意味はあります。サーバレスコンピューティングはさまざまなコンピューティングサービスに適用できます。例えば、マルチテナントなコンテナオーケストレータ(container-as-a-service)はサーバレスではありますが、イベント駆動ではありません。逆に、自分で所有し管理する物理マシンクラスタ上で動くオープンソースのFaaSは、イベント駆動ですがサーバレスとは言えません。この違いを理解しておくと、アプリケーションに対してイベント駆動な仕組みがいいのか、サーバレスな仕組みがいいのか、あるいはその両方なのかを判断できます。 ...

Get 分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.