コンテンツにスキップ

エッジコンピューティング

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 BindingsWorker間通信(ネットワークコストゼロの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)
トークン検証<5msJWT署名検証
スループット2,500〜3,500 RPSWorkerインスタンスあたり、持続
コールドスタート<5msV8 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(リクエスト)約$25Workers Paidで月間5,000万リクエスト
D1(ストレージ+読み取り)約$203データベース、合計約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ネットワーク

次のステップ