カテゴリー: Cloudflare

  • さくらのクラウドでフルマネージドなAIエージェント実行基盤を構築した話

    さくらのクラウドでフルマネージドなAIエージェント実行基盤を構築した話

    はじめに

    AIエージェントを本番運用しようとすると、インフラ側の課題が意外と多くあります。サーバーの管理、コンテナのデプロイ、シークレットの扱い、監視……。アプリケーションの開発に集中したいのに、インフラ運用に時間を取られる構造になりやすいです。

    今回はそこを解消するために、さくらのクラウドのマネージドサービスを組み合わせて、できる限り運用負荷をゼロに近づけたAIエージェント実行基盤を構築しました。本記事ではその構成と設計の考え方を紹介します。


    全体構成

    構成の概要は以下の通りです。

    エンドユーザー
        ↓
    インターネット
        ↓(さくらのDNS / Gemini)
    ウェブアクセラレータ(Cloudflare Turnstile)
        ↓
    [さくらのクラウド]
        ├── オブジェクトストレージ(静的サイト/フロントエンド)
        └── AppRun(共用型/バックエンド) ← モニタリングスイートで監視
                ↓
            シークレットマネージャ / KMS
            コンテナレジストリ

    フロントエンドはオブジェクトストレージ上に静的サイトとしてデプロイしており、バックエンドはAppRunで動かしています。エンドユーザーからのリクエストはさくらのDNSとウェブアクセラレータを経由してさくらのクラウド内に入ります。さくらのクラウド内はすべてマネージドサービスで構成されており、自前でサーバーを管理する箇所はありません。


    各コンポーネントの役割

    オブジェクトストレージ(フロントエンド)

    フロントエンドはオブジェクトストレージ上に静的サイトとしてデプロイしています。S3互換APIに対応しているため、既存のデプロイフローをほぼ変更せずに利用できます。サーバーを持たずに静的サイトをホスティングできるため、フロントエンドの運用負荷はほぼゼロです。

    AppRun(共用型/バックエンド)

    AIエージェントのバックエンド処理を担うコンテナ実行環境です。フロントエンドからのリクエストを受け取り、AI APIを呼び出して結果を返します。サーバーレスに近い感覚で使えるため、スケーリングやサーバー管理から解放されます。

    Cloudflare Turnstile

    AIエージェントの実行基盤では、Botによる不正リクエストがAI APIトークンの浪費や意図しない負荷につながるリスクがあります。今回はCloudflare Turnstileをフロントエンド・バックエンドの両方に導入し、二重でBot排除を行っています。

    • フロントエンドURL(オブジェクトストレージの静的サイト):アクセス時点でTurnstileによる検証を行い、Botからのアクセスをブロックします。
    • バックエンドURL(AppRun):APIリクエストを受け付ける際にも再度検証し、フロントエンドを迂回した直接アクセスも排除します。

    この二重検証により、AI APIの不正利用やトークンの浪費を防ぐ構成になっています。

    シークレットマネージャ / KMS

    AppRunからAI API(OpenAI、Geminiなど)を呼び出す際のAPIトークンをシークレットマネージャで管理し、KMSで暗号化しています。ソースコードや環境変数にトークンをハードコードするリスクを排除し、APIトークンの管理方法を標準化できます。

    コンテナレジストリ

    AppRunで動かすコンテナイメージを管理します。CI/CDパイプラインからイメージをプッシュし、AppRunがそこからプルする構成にすることで、デプロイフローをシンプルに保てます。

    モニタリングスイート

    AppRunの動作状況を監視しています。稼働状態やエラーをリアルタイムで把握できます。マネージドサービスのため、監視基盤そのものの管理コストもかかりません。

    ウェブアクセラレータ

    CDN機能を担います。静的アセットのキャッシュによる高速化だけでなく、さくらのクラウド内への入口を一本化する役割も果たしています。


    設計のポイント:なぜフルマネージドにこだわったか

    AIエージェントは本質的にステートレスな処理が多く、コンテナ実行環境と相性が良いです。一方で、APIトークンや外部サービスとの連携が増えるため、セキュリティ面の管理コストが高くなりやすいです。

    フルマネージド構成にした主な理由は2つです。

    1. 運用負荷の削減
    サーバーのOSアップデート、ミドルウェアの管理、スケーリング設定——これらをすべてマネージドサービスに委ねることで、アプリケーションの開発・改善に集中できます。

    2. セキュリティの標準化
    シークレットマネージャとKMSを使うことで、APIトークンの管理方法が標準化されます。個々の開発者が独自の方法でトークンを扱うリスクを減らせます。


    さくらのクラウドを選んだ理由

    外資クラウドと比較したとき、さくらのクラウドには国産ならではの強みがあります。データが国内に留まること、円建てでの料金体系、そして日本語サポートです。公共性の高いシステムや、データ主権を重視するプロジェクトでは特に有効な選択肢になります。

    今回の構成で使用したAppRun、オブジェクトストレージ、コンテナレジストリ、シークレットマネージャ、KMS、モニタリングスイートはいずれもさくらのクラウドのマネージドサービスとして提供されており、一つのプラットフォーム内で完結できた点もメリットでした。


    まとめ

    さくらのクラウドのマネージドサービスを組み合わせることで、AIエージェントの実行基盤をフルマネージドで構築できました。フロントエンドはオブジェクトストレージで静的ホスティング、バックエンドはAppRunでコンテナ実行、Cloudflare Turnstileで二重のBot排除——それぞれをマネージドサービスで賄うことで、サーバー管理から完全に解放された構成になっています。

    さくらのクラウドでのAIエージェント基盤構築を検討している方の参考になれば幸いです。


    よくある質問

    Q. さくらのクラウドのAppRunとAWSのECSやCloud Runとの違いは?
    AppRunは国内データセンターで完結するため、データ主権を重視する案件に適しています。またAWSやGCPと異なり円建て料金のため、為替リスクなく安定したコスト管理ができます。

    Q. フルマネージド構成にするとコストは上がりますか?
    初期の利用料は上がる場合がありますが、インフラ管理の人件費や障害対応コストを含めたトータルコストでは削減できるケースが多いです。

    Q. AIエージェントのAPIトークンはどのように管理していますか?
    シークレットマネージャとKMSで暗号化して管理し、ソースコードや環境変数には一切持たせていません。またCloudflare Turnstileでフロントエンド・バックエンド双方への不正アクセスも防いでいます。

    Q. さくらのクラウドだけで本番運用に耐えられますか?
    今回の構成ではAppRun・モニタリングスイート・ウェブアクセラレータを組み合わせることで、可用性・監視・CDNをすべてカバーしています。

  • Vercel から Cloudflare Workers に移したら Stacknot が爆速になった話

    Vercel から Cloudflare Workers に移したら Stacknot が爆速になった話

    結論から言うと、トップページの TTFB は 2.76秒 → 0.50秒、記事ページは 2.02秒 → 0.68秒 まで改善しています。

    この記事では「なぜ移管を判断したか」「どんな手順で進めたか」「実際にどこまで速くなったか」を順番に整理します。

    なぜ移管することにしたか

    調査のきっかけは、トップページや記事ページの初回表示が明らかに重いことでした。

    調べると、Vercel 側で Cache-Control: private, no-cache, no-store になっているページが多く、CDN キャッシュにほとんど乗っていない状態でした。WordPress API 自体の応答は極端に遅くないのに、最終的な HTML 配信までの TTFB が大きく膨らんでいたのはこれが原因のひとつです。

    加えて、Next.js の SSR・App Router の処理、リージョン距離、不要な prefetch、ページ組み立て時のデータ取得が積み重なり、「WordPress が遅い」のではなく「配信経路全体が重い」状態になっていました。

    同じ WordPress を使っている別構成のサイトではもっと速く配信できていたため、CMS 本体を触る前に配信基盤を見直すべきだと判断しました。

    移管の流れ

    最初から本番を切り替えるのではなく、codex/cloudflare-pages-worker という検証ブランチを切って Cloudflare Workers 上に preview 環境を立ち上げるところから始めました。

    この段階でやったことは主に3つです。

    • Next.js を OpenNext 経由で Workers に載せる構成追加
    • Cloudflare 向けの build / deploy 設定
    • Workers 用の custom domain・preview URL 設定

    その後、単純な移管だけで終わらせず、Workers で効果が出やすいようにアプリ側も合わせて整理しました。具体的には以下を実施しています。

    • トップページ・一覧ページのキャッシュ設計を見直し
    • 記事一覧の payload 軽量化
    • 関連記事の取得をクリティカルパスから除外
    • HTML サイトマップの大量 prefetch を停止
    • WordPress API の前段に edge proxy を挟める構成を追加(将来的に Next/Worker → edge cache → WordPress の形へ移行できるよう準備)

    運用面では、Cloudflare 側で main を production branch に設定し、custom domain stacknot.east-cloud.jp を Worker に割り当てました。preview URL で表示確認と速度比較を重ね、問題が解消できた段階で本番ドメインを切り替えています。

    ベンチマーク結果

    preview 環境での比較(2026年4月1日時点)

    ページVercelCloudflare Workers
    TTFBTotalTTFBTotal
    トップページ2.76s3.24s0.50s0.51s
    記事ページ2.02s2.18s0.68s0.69s

    本番ドメイン切り替え後(2026年4月3日時点・外形監視ベース)

    ページステータスTTFB
    トップページ /2000.97s
    HTML サイトマップ /html-sitemap2000.94s
    代表記事2000.85s

    preview 時の最速値よりは少し落ち着きましたが、Vercel 時代と比べると体感差は大きく、初回表示の重さは明確に改善しました。

    移管して分かったこと

    今回の一番の学びは、「WordPress を使っているから遅い」とは限らないということです。

    実際には、配信基盤・キャッシュ方針・SSR の組み立て・不要な prefetch など、WordPress の外側にボトルネックがあるケースも多いです。特に Next.js App Router では、ページ本体だけでなく周辺 UI のデータ取得やリンク先 prefetch が積み重なりやすく、そこを整理するだけでもかなり改善します。

    また、Cloudflare Workers への移行により、速度改善以外にもメリットがありました。

    • WordPress API の前段に edge proxy を置ける構成が取れるようになった
    • custom domain 配下での配信・制御を一元化しやすくなった

    今後は WordPress 側 webhook や Search Console 連携も含め、更新運用まで Cloudflare 側に寄せていく予定です。

    おわりに

    Vercel から Cloudflare Workers への移管は、単なるホスティング変更ではなく、配信設計全体を見直す機会になりました。

    「WordPress が遅い」と感じているなら、CMS 本体を疑う前に、まず配信経路・キャッシュ・SSR の組み立てを分解してみる価値はあります。今回の Stacknot の移管は、その効果がかなり分かりやすく出た事例でした。

    Q&A

    Q. Vercel から Cloudflare Workers に移行するメリットは何ですか? A. エッジでの配信による TTFB の大幅な改善、CDN キャッシュの柔軟な制御、edge proxy を挟んだ構成が取りやすいといったメリットがあります。Stacknot では移行後にトップページの TTFB が 2.76秒から 0.50秒まで改善しました。

    Q. WordPress サイトが遅い原因はどこにありますか? A. WordPress 本体よりも、配信基盤・キャッシュ設定・SSR の組み立て・不要な prefetch など配信経路側にボトルネックがあるケースも多いです。まず Cache-Control の設定や CDN キャッシュの状況を確認することをおすすめします。

    Q. Next.js を Cloudflare Workers で動かすには何が必要ですか? A. OpenNext を使うことで Next.js を Cloudflare Workers に載せることができます。build / deploy 設定を Cloudflare 向けに調整する必要があります。

    Q. TTFB とは何ですか? A. Time To First Byte の略で、ブラウザがリクエストを送信してからサーバーの最初の1バイトを受信するまでの時間です。この値が小さいほどサーバーの応答が速く、ページ表示の体感速度に直結します。

  • 第1回:さくらのクラウドで構築するモダンアーキテクチャ概要(DRF×Next.js)AWSとの違いも解説

    第1回:さくらのクラウドで構築するモダンアーキテクチャ概要(DRF×Next.js)AWSとの違いも解説

    ― AWSとの違いから考える設計思想 ―

    こんにちは。

    現代のWeb開発において、インフラの選択肢は
    AWSやGoogle Cloudだけではありません。

    本連載では、
    **さくらのクラウドのコンテナサービス「AppRun」**を使い、

    • フロントエンド(Next.js)
    • バックエンド(Django REST framework)
    • VPC内データベース
    • Cloudflare連携

    という本番構成を構築する方法を解説します。


    今回の全体構成図


    この構成のポイント

    ✅ AppRunでフロント/バックを分離
    ✅ DBはVPC内に完全非公開
    ✅ L2 / L3設計を明確に分ける
    ✅ GitHub Actionsで自動デプロイ

    最大の特徴は、

    マネージドサービスの利便性
    ×
    VPC(閉域網)による堅牢なセキュリティ

    の両立です。


    採用技術スタック

    1️⃣ Frontend:Next.js(App Router)

    • SSR対応
    • ISR活用
    • コンテナとの親和性
    • AppRunのオートスケール前提設計

    AppRunはステートレス設計と相性が良いため、
    Next.jsとの組み合わせは非常に相性が良いです。


    2️⃣ Backend:Django REST framework(DRF)

    なぜDRFか?

    • Pythonエコシステム
    • 強力なAdmin
    • 認証機能標準搭載
    • 開発スピードが圧倒的

    さらに重要なのが、

    コンテナ前提のステートレス設計

    AppRunでスケールさせるためには、
    セッション管理やファイル保存を外部化する必要があります。


    AppRunとは?AWSと何が違うのか

    AWSに慣れている方向けに置き換えます。

    機能さくらのクラウドAWS相当
    PaaSAppRunApp Runner / ECS
    L3ルータVPCルータNAT Gateway
    L2スイッチSubnet
    DBデータベースRDS
    CI用実行基盤Self-hosted RunnerCodeBuild

    最大の違いは「ネットワーク思想」

    AWSはL3前提設計。
    さくらはL2を自分で設計する思想です。

    ここを理解しないと、
    AppRun × VPC構成で確実に詰まります。


    💰 さくらを選ぶメリット

    • NAT Gatewayのような高額固定費がない
    • データ転送料金が基本無料
    • 国産クラウドである安心感
    • コスト予測がしやすい

    特にスタートアップや中規模案件では
    コストインパクトが大きい。


    【重要】なぜSelf-hosted Runnerが必要なのか?

    AppRun × VPC構成最大の壁は、

    DBマイグレーション問題

    AWS ECSなら run-task が使えますが、
    AppRunにはワンショット実行機能がありません。

    そのため、

    👉 VPC内にSelf-hosted Runnerを置く

    という設計になります。

    この詳細は第3回で解説します。


    📚 連載ロードマップ(全5回)

    本シリーズでは、
    さくらのクラウドで実現するモダンアーキテクチャを、設計思想から自動化まで段階的に解説します。

    単なる構築手順ではなく、

    • なぜその設計にするのか
    • AWSとは何が違うのか
    • どこで詰まりやすいのか
    • 本番運用で破綻しない構成とは何か

    まで踏み込みます。


    第1回

    さくらのクラウドで作るモダンアーキテクチャ入門

    (DRF×Next.js構成とAWSとの違いを解説)

    まずは全体像と設計思想から。
    さくらのクラウドにおけるモダン構成の考え方と、AWSとの違いを整理します。


    第2回

    さくらのクラウドVPC設計完全解説

    (L2スイッチとL3ルータの違いと正しいセグメント構成)

    モダン構成の土台となるネットワーク設計。
    L2・L3・SEGの違いを理解し、正しいVPC設計を行います。


    第3回

    GitHub ActionsとSelf-hosted RunnerでVPC内DBにmigrateを実行する方法

    (AppRun構成対応)

    閉域ネットワークとCI/CDをどう両立させるか。
    VPC内DBへの安全なマイグレーション戦略を解説します。


    第4回

    AppRun専有型と共用型の違いを徹底解説

    (VPC連携と本番設計の分岐点)

    AppRunの共用型と専有型の違いを整理し、
    本番構成でどちらを選ぶべきかを明確にします。


    第5回

    Terraformで再現するさくらのモダンアーキテクチャ

    (AppRun・VPC・DBをIaC化する手順)

    最後はInfrastructure as Code。
    これまで構築した環境をコード化し、1コマンドで再現できる状態に仕上げます。。


    よくある質問(FAQ)

    Q. AppRunはAWSのECSと同じですか?

    いいえ。
    AppRunはよりシンプルですが、
    ネットワーク設計の思想が異なります。


    Q. AppRunはVPCに接続できますか?

    専有型であれば可能です。
    共用型ではスイッチ接続ができません。


    Q. AppRunは本番利用できますか?

    可能です。ただし

    • クラスタ設計
    • VPC構成
    • デプロイ戦略

    を正しく理解する必要があります。


    まとめ

    「さくらのクラウド」は
    クラシックな印象を持たれがちですが、

    AppRunを組み合わせることで、

    • モダンなコンテナ運用
    • 高いコスト効率
    • 国産クラウドの安心感

    を両立できます。

    次回は
    **ネットワーク設計(L2 / L3の違い)**に深く潜ります。

    ここを理解しないと、
    AppRun構築は成功しません。