エッジコンピューティング
Authrimはエッジネイティブなアイデンティティ&アクセスプラットフォームです。すべての認証リクエスト — ログイン、トークン交換、セッション検証 — はCloudflareのエッジネットワーク上で、ユーザーの近くで処理されます。このページでは、なぜアイデンティティにエッジが重要なのか、AuthrimがCloudflare Workersプラットフォームをどう活用しているか、どのようなパフォーマンスとコスト特性を実現しているかを説明します。
なぜアイデンティティにエッジか?
従来のアイデンティティプラットフォームは、1つまたは少数のリージョンにある中央集権的なサーバーで動作します。これには本質的な限界があります。
| 課題 | 中央集権型アプローチ | エッジアプローチ |
|---|---|---|
| レイテンシ | 遠方サーバーへの100〜300msの往復 | 最寄りエッジから<50ms |
| コールドスタート | コンテナ/VM起動で200ms〜2s追加 | コールドスタートなし(V8 isolate) |
| スケーリング | 垂直スケーリングまたは複雑なオートスケーリング | リクエスト単位の自動水平スケーリング |
| 単一障害点 | リージョン障害=全面障害 | 300+拠点に分散 |
| グローバルユーザー | 遠方ユーザーの体験が低下 | 世界中で一貫した体験 |
認証はすべてのユーザーインタラクションのクリティカルパス上にあります。遅いログインフローやトークン検証は、ユーザー体験とアプリケーションパフォーマンスに直接影響します。認証をエッジに移動することで、地理的なペナルティを排除できます。
Cloudflare Workersプラットフォーム
AuthrimはCloudflare Workers上で動作します。これは独自の特性を持つサーバーレスプラットフォームです。
V8 Isolate(コンテナではない)
WorkersはV8 isolate — Chromeと同じJavaScriptエンジン — で実行されます。コンテナやVMとは異なり:
- コールドスタートなし — isolateは5ms未満で起動(コンテナの200ms〜2sに対して)
- 軽量 — 各isolateのメモリ使用量は約2MB(コンテナの50〜200MBに対して)
- セキュア — テナント間のハードウェアレベル分離
グローバル分散
Workersは100以上の国にまたがるCloudflareの300以上の拠点ネットワークで動作します。「リージョン選択」はありません — コードはどこでも自動的に実行されます。
プラットフォームプリミティブ
AuthrimはWorkersエコシステムをフル活用しています。
| プリミティブ | Authrimでの用途 |
|---|---|
| Workers | ステートレスなリクエスト処理(認証フロー、トークン検証) |
| Durable Objects | ステートフルストレージ(セッション、認可コード、チャレンジ) |
| D1 | リレーショナルデータベース(ユーザー、クライアント、ロール、ポリシー) |
| KV | グローバルKey-Valueキャッシュ(JWKS、設定、各種設定値) |
| Service Bindings | Worker間通信(ネットワークコストゼロのRPC) |
| Queues | 非同期処理(Webhook、SCIMsync、監査ログエクスポート) |
ステートレスWorkers + ステートフルDurable Objects
Authrimのアーキテクチャは関心事を明確に分離します。
flowchart TB
subgraph Stateless["ステートレス層 — Workers"]
w1["リクエストルーティング"]
w2["トークン署名"]
w3["OIDC検証"]
w4["ポリシー評価"]
w5["クレームマッピング"]
end
subgraph Stateful["ステートフル層 — Durable Objects"]
do1["セッション保存"]
do2["認可コードライフサイクル"]
do3["チャレンジ状態"]
do4["リフレッシュトークン"]
do5["レート制限カウンター"]
end
Stateless -- RPC --> Stateful
Stateless --> D1["D1 (SQL)"]
Stateful --> DOS["DOストレージ(シャード単位)"]
Workersはステートレスな計算を処理します — リクエストの解析、トークンの検証、ポリシーの評価、レスポンスの構築。設定なしで水平スケーリングします。
Durable Objectsはステートフルな操作を処理します — セッションの保存、認可コードのライフサイクル管理、レート制限の適用。各DOインスタンスはシングルスレッドのアクターであり、強い一貫性を持つストレージを備え、リージョンシャーディングにより分散されます。
この分離により、ステートレス層は無限にスケール可能(Cloudflareが管理)で、ステートフル層は明示的なシャーディング(Authrimが管理)によりスケールします。
パフォーマンス特性
本番相当のデプロイメントに対する負荷テストで測定:
| メトリック | 値 | 備考 |
|---|---|---|
| エンドツーエンドレイテンシ | <50ms | 認可コード交換(P95) |
| Worker CPU時間 | 1〜4ms | リクエストあたり(P50) |
| トークン検証 | <5ms | JWT署名検証 |
| スループット | 2,500〜3,500 RPS | Workerインスタンスあたり、持続 |
| コールドスタート | <5ms | V8 isolate初期化 |
| D1クエリ | 1〜3ms | インデックス付きの単純SELECT |
| DOアクセス | 2〜8ms | リージョン内RPC |
なぜ50ms未満が重要か
比較として、従来のアイデンティティプロバイダーの一般的な値:
- Auth0: 100〜300ms(リージョンとプランにより異なる)
- AWS Cognito: 50〜200ms(リージョン内)、200〜500ms(クロスリージョン)
- セルフホストKeycloak: 20〜100ms(同一データセンター)、100〜500ms(リモート)
Authrimの50ms未満のレイテンシは、ユーザーの場所に関係なく一貫しています。処理が常に最寄りのエッジで行われるためです。
スケーリング
水平スケーリング
Workersは自動的にスケールします — Cloudflareが受信リクエストを処理するために必要な数のisolateをインスタンス化します。プロビジョニングもキャパシティプランニングも不要です。
Durable Objectsについては、Authrimがリージョンシャーディングを使用して負荷を分散します。各リソースタイプ(セッション、認可コード等)は、複数の地理的リージョンにまたがる複数のシャードにパーティション分割されます。詳細はアーキテクチャ — Durable Objectリージョンシャーディングを参照してください。
結果:
flowchart TB
req["受信リクエスト"]
req --> W1["Worker 1"] & W2["Worker 2"] & WN["Worker N"]
W1 & W2 & WN --> DO0["DO s:0
(enam)"] & DO1["DO s:1
(enam)"] & DO2["DO s:2
(weur)"] & DO3["DO s:3
(apac)"]
Smart Placement
Cloudflare WorkersのSmart Placementは、最寄りのエッジではなく、バックエンドサービス(D1データベース)に近い場所でWorkersを自動的に実行します。Authrimは、データベースアクセスが多いar-managementやar-tokenなどのWorkerでSmart Placementを有効にし、コンピュートとストレージの共置によりD1クエリレイテンシを削減しています。
Durable Object操作については、locationHint が同様の役割を果たします — ターゲットユーザー層に最も近いリージョンにDOを配置します。
コスト効率
Cloudflare Workers上でアイデンティティプラットフォームを運用することは、従来のインフラストラクチャと比較して大幅にコスト効率が高くなります。
コスト内訳(月間アクティブユーザー500万人)
| コンポーネント | 月額コスト | 備考 |
|---|---|---|
| Workers(リクエスト) | 約$25 | Workers Paidで月間5,000万リクエスト |
| D1(ストレージ+読み取り) | 約$20 | 3データベース、合計約10GB |
| KV(読み取り) | 約$5 | 設定/JWKSのキャッシュ読み取り |
| Durable Objects | 約$25 | シャード全体のストレージ+リクエスト |
| 合計 | 約$75〜85 |
比較として、従来プラットフォームでの同等キャパシティ:
| プラットフォーム | 推定月額コスト |
|---|---|
| Auth0(B2C、500万MAU) | $2,300以上 |
| AWS Cognito(500万MAU) | $27,500($0.0055/MAU) |
| セルフホスト(3リージョン) | $500〜2,000(コンピュート+DB+運用) |
| Authrim on Workers | 約$80 |
エッジ vs. 従来型 — まとめ
| 側面 | 従来型(中央集権) | Authrim(エッジ) |
|---|---|---|
| レイテンシ | 100〜500ms(距離により変動) | <50ms(グローバルで一貫) |
| コールドスタート | 200ms〜2s | <5ms |
| スケーリング | 手動/オートスケール(分単位) | 自動(ミリ秒単位) |
| リージョン | 1〜3(プロビジョニング済み) | 300以上(自動) |
| コスト(500万MAU) | $500〜$27,500/月 | 約$80/月 |
| 運用負荷 | サーバー、スケーリング、パッチ、証明書 | インフラ管理ゼロ |
| データ局所性 | リージョン選択に制限 | PIIパーティショニング+DO locationHint |
| 可用性 | リージョンバウンドSLA | グローバルAnyCastネットワーク |
次のステップ
- アーキテクチャ — システム設計、データベース抽象化、DOシャーディングの詳細
- アイデンティティハブ — 統合アイデンティティ連携のコンセプト