リアクティブ・コレオグラフィ・Shared Nothing・FaaS

サーバレスアーキテクチャの文脈で調査しようとしたら、
割と単語のオンパレードなので、少し立ち止まって整理。
どれもマイクロサービスに行き着こうとしているように感じるな。

コレオグラフィ*1

コレオグラフィーはP2Pの相互作用の一形態と考えていますが、その理由は「指揮者」がいないからです。コレオグラフィーは相互作用の合意済みモデルであり、このモデルが一連のオーケストレーションで構成されている可能性もあるのです。

Shared Nothing*2

シェアード・ナッシング・アーキテクチャ(英語: shared nothing architecture、SN)とは、分散コンピューティングにおいて、各ノード(コンピュータ)がネットワークを除いてリソースを共有しておらず、それぞれが独立しており、自律的であり、システムにおいて単一競合箇所が無い物を指す。

FaaS*3

サーバーレスアーキテクチャとはサーバーのないアーキテクチャと言われていて、単純にはAWS LambdaとかAzure FunctionsとかGoogle Cloud FunctionsなどのクラウドのFunction-as-a-Service(FaaS)を使うことを指す

リアクティブ*4

リアクティブマニュフェストから始めた、Grailsの中心のコミッタのLedbrook氏は、リアクティブシステムの特徴を以下のようにまとめた。

レスポンシブ、つまり、システムは常に適切に応答を返し、遅延を少なくする。
弾性、つまり、システムは一部分が障害を起こしたとしても、応答を返し、ダウンタイムを最小限にする。
しなやかさ、つまり、負荷の上昇にたいしてシステムは応答を維持するのに必要なスケールアップをし、負荷が下がれば、スケールダウンする。効率的なリソースの使用をする。
メッセージ駆動、異なるシステムの間でメッセージをやりとりする。Ledbrook氏はこれが、リアクティブシステムの規範的特徴だとしている。

サーバレスアーキテクチャには、こういう捉え方もある模様。*5

ふつう、アプリケーションサーバのようなプロセスが常駐していて、コードをデプロイするとこのサーバ上でコードが実行されるのですが、AWS Lambdaでは実行時にコンテナが生成されて終了時に破棄されることになっています。
これはコンテナの生成のオーバーヘッドが小さいおかげです。CGIに近いモデルで、「モダンCGI」と呼ぶ人もいます。