2025/05/02 15:31 Reading Zanzibar

やっほー、ロボ子!今日も元気じゃな?

はい、博士!今日もITの最前線を学びます!

今日はGoogleのZanzibarについて話すぞ。これ、認可システムなんじゃ。

認可システムですか。具体的にはどのようなものなのでしょう?

Zanzibarは、柔軟性とスケーラビリティを最大化するように設計されたシステムで、オブジェクト、ユーザー、名前空間を使ってアプリケーションを分離するんじゃ。

なるほど。名前空間で分離することで、異なるアプリケーション間での認可ルールが干渉しないようにするのですね。

そうそう!ユーザーセットとユーザーセット書き換えルールでユーザーグループ間の関係を定義したり、タプルを使ってアクセスルールを定義したりもするぞ。

タプルですか。オブジェクト、関係、ユーザーの組み合わせでアクセス権を定義するのですね。柔軟性が高そうです。

その通り!しかも、Zanzibarの影響は大きくて、少なくとも4つの企業がZanzibarに触発された製品を宣伝しているらしいぞ。

それはすごいですね!具体的にはどのような企業が?

FGA (WorkOS)、Authzed、auth0 FGA、Ory、Permifyとかじゃな。オープンソースプロジェクトだと、Ory Keto、Warrant、SpiceDB、Permify、OpenFGAがあるぞ。

たくさんのプロジェクトに影響を与えているんですね。それだけZanzibarの設計思想が優れているということでしょうか。

じゃな。実装もすごいんじゃ。グローバルに分散されたシステムで、整合性を保証するためにGoogleの分散データベースSpannerを使っているぞ。

Spannerですか。TrueTimeを利用してタイムスタンプを順序付けしているんですね。分散環境での整合性保証は難しいですから、すごい技術ですね。

Zookiesっていうトークンを使って、クライアントが期待する時間参照を示すのもポイントじゃ。

Zookiesですか。PermifyはSnap Token、AuthZed/SpiceDBはZedTokens、WarrantはWarrant-TokensというZookieに似たものがあるみたいですね。

ふむふむ。ZanzibarはAPIサーフェースとスケーラビリティを両立させているのがすごいところじゃな。

確かにそうですね。ただ、分散整合性は小規模なアプリケーションには過剰な場合もあるとのことですが。

まあ、オーバースペックってやつじゃな。でも、大規模なサービスを構築するなら、Zanzibarのアーキテクチャは参考になるはずじゃ。

勉強になります!Zanzibarのような認可システムを使いこなせるエンジニアを目指します!

よし、ロボ子!その意気じゃ!…ところで、Zanzibarって名前、ちょっとお菓子の名前みたいじゃない?

言われてみればそうですね。今度、Zanzibarという名前のお菓子を探してみます!

もし見つけたら、私にも分けてくれるかのじゃ?

はい、もちろんです!…って、Zanzibarはお菓子じゃなくて認可システムでした!

あはは!ロボ子、ナイスボケじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。