カテゴリー: さくらのクラウド

  • さくらのクラウドがガバメントクラウド正式採択。次に問われるのは「誰が導入・運用できるか」

    さくらのクラウドがガバメントクラウド正式採択。次に問われるのは「誰が導入・運用できるか」

    さくらインターネットが提供する「さくらのクラウド」が、ガバメントクラウドの対象クラウドサービスとして正式に採択されました。

    デジタル庁は2026年3月27日、さくらのクラウドについて、すべての技術要件を満たしたことを確認し、同日以降、本番環境の提供が可能になったと公表しています。 また、さくらインターネットも、305項目すべての技術要件への適合が確認され、令和5年度および令和8年度のガバメントクラウドサービス提供事業者として採択されたことを発表しています。

    これは、国産クラウドの選択肢が公共領域でも現実的に広がったという意味で、大きなニュースです。

    一方で、ITエンジニアやSIerの現場では、次のような現実的な不安も出ています。

    さくらのクラウドを、現場で誰が設計し、誰が構築し、誰が運用するのか。

    クラウドサービスが正式採択されたことと、そのクラウドを安全に導入・運用できることは、同じではありません。

    これから重要になるのは、さくらのクラウドを理解し、要件に合わせて設計・構築・運用できるパートナーの存在です。

    💡この記事はこんな方におすすめです

    • さくらのクラウドの導入を検討している企業・自治体関係者
    • ガバメントクラウド採択後の現場課題を知りたい方
    • 国産クラウドを活用したシステム基盤を検討している方
    • さくらのクラウドに対応できる導入・運用パートナーを探している方
    • AWS・Azure以外のクラウド選択肢を検討したい方

    この記事でわかること

    • ✅ さくらのクラウドが注目されている背景
    • ✅ ガバメントクラウド採択後に現場で問われるポイント
    • ✅ 運用管理補助者・MSP不足がなぜ課題になるのか
    • ✅ 305項目の技術要件を現場でどう扱うべきか
    • ✅ さくらのクラウド導入でパートナー選びが重要になる理由

    国産クラウドの選択肢が、いよいよ現実的になってきた

    これまでガバメントクラウドというと、AWS、Google Cloud、Microsoft Azure、Oracle Cloud Infrastructureなど、外資系クラウドを中心に議論されることが多くありました。

    その中で、さくらのクラウドがガバメントクラウドの対象クラウドサービスとして正式採択されたことは、国産クラウドの選択肢が公共領域でも現実的に広がったという意味で、大きな転換点です。

    特に、行政・自治体・公共性の高いシステムでは、データの保管場所、運用主体、国内法との整合性、サポート体制などが重要になります。

    そのため、国内事業者が提供するクラウドを選択肢に入れられることは、多くの企業・自治体にとって大きな意味があります。

    一方で、クラウドサービスが正式採択されたからといって、すぐに現場で問題なく使えるわけではありません。

    実際の導入では、要件整理、構成設計、ネットワーク設計、セキュリティ設計、監視・バックアップ設計、運用体制づくりまで含めて検討する必要があります。

    なぜ今、「さくらのクラウドを扱えるパートナー」が注目されているのか

    さくらのクラウドがガバメントクラウドの対象クラウドサービスとして正式採択されたことで、国産クラウド活用への期待は大きく高まりました。

    一方で、現場では次のような流れで、実務面の課題が見え始めています。

    1. 正式採択への期待
      国産クラウドがガバメントクラウドの選択肢として現実的になった。
    2. 現場からの冷静な問い
      では、実際に誰が設計し、設定し、運用するのか。
    3. パートナー不足への懸念
      さくらのクラウドに対応できるSIer・MSP・運用パートナーが十分にいるのか。
    4. 導入支援ニーズの高まり
      構成検討、見積、移行、運用設計まで支援できるパートナーの重要性が増している。

    つまり、今後は「さくらのクラウドが使えるかどうか」ではなく、 「さくらのクラウドを使って、安全にシステムを構築・運用できる体制を作れるか」が問われる段階に入っています。

    現場で問われている3つの課題

    1. 運用管理補助者・MSP(マネージドサービスプロバイダー)不足への不安

    ガバメントクラウドを自治体が利用する場合、クラウド環境やクラウドサービスの運用管理を補助する「ガバメントクラウド運用管理補助者」の役割が重要になります。

    これは一般的にいうと、クラウドの設計・設定・運用を支援する MSP(マネージドサービスプロバイダー) に近い役割です。

    MSPとは、クラウドやサーバ、ネットワークなどのIT基盤について、構築後の監視・運用・保守・障害対応などを継続的に支援する事業者を指します。

    ただし、ガバメントクラウドにおける「運用管理補助者」は、一般的なMSPと完全に同じ意味ではありません。 地方公共団体のクラウド利用を支える立場として、責任分界や運用範囲を明確にしたうえで関わる必要があります。

    現場で不安視されているのは、AWSやAzureに対応できる事業者は多くても、さくらのクラウドの仕様や設計思想を理解し、公共領域の要件に合わせて構築・運用できる事業者がまだ限られているのではないか、という点です。

    現場で想定される懸念

    • 自治体が「さくらのクラウドを使いたい」と考えても、既存の委託先が対応できない
    • 付き合いのあるSIerから「AWSやAzureなら対応できるが、さくらは難しい」と言われる
    • 構成設計・見積・運用体制を具体化できず、クラウド選定が進まない
    • 結果として、使いたくても使えない「ベンダーブロック」が発生する

    このような状況を避けるためには、早い段階でさくらのクラウドに対応できる導入・運用パートナーへ相談し、構成案・費用感・運用体制を整理しておくことが重要です。

    2. 305項目の技術要件を、誰が現場で運用するのか

    さくらのクラウドは、デジタル庁により305項目すべての技術要件への適合が確認され、ガバメントクラウドの対象クラウドサービスとして正式採択されました。

    これは非常に大きな実績です。 一方で、クラウドサービス提供事業者が技術要件を満たしたことと、利用者側のシステムが安全に設計・運用されることは、同じではありません。

    実際の現場では、以下のような設計・運用判断が必要になります。

    • どのサービスをどの構成で使うべきか
    • 外部公開領域と内部管理領域をどう分離するか
    • 権限管理やアクセス制御をどう設計するか
    • ログ・監視・バックアップをどこまで実装するか
    • 障害発生時の一次対応を誰が行うか
    • 月次報告や監査対応に必要な情報をどう残すか

    つまり、305項目の技術要件を満たしたクラウドを使うには、その上で構築するシステム側にも、相応の設計力・運用力が求められます。

    重要なのは、「さくらのクラウドが要件を満たしているか」だけではありません。
    そのクラウドを使って、要件に合った安全な構成を組めるかどうかです。

    3. AWS・Azure人材とのスキルセットの壁

    もう一つの論点は、エンジニアのスキルセットです。

    現在のクラウド人材市場では、AWS、Azure、Google Cloudなどの経験を持つエンジニアは比較的見つけやすい一方で、さくらのクラウドを実務レベルで扱えるエンジニアやSIerは、まだ限られていると考えられます。

    そのため、さくらのクラウドを選択肢に入れる場合は、単に「クラウド経験者がいるか」ではなく、以下の観点で確認することが重要です。

    • さくらのクラウドのサービス体系を理解しているか
    • サーバ、スイッチ、ルータ、VPN、DB、ストレージの構成を設計できるか
    • さくらのクラウド特有の料金体系や制約を踏まえて見積もれるか
    • 監視・バックアップ・ログ・障害対応まで運用設計できるか
    • AWSやAzureとの違いを説明し、適切に比較できるか

    クラウドの選定では、製品そのものの機能だけでなく、導入を支える人材・パートナーの有無が成否を左右します。

    さくらのクラウド導入でつまずきやすいポイント

    1. AWSやAzureと同じ感覚で設計してしまう

    クラウドの基本的な考え方は共通していますが、サービス体系やネットワーク構成、料金体系、監視方法、運用の考え方はクラウドごとに異なります。

    AWSやAzureの知識があることは大きな強みですが、そのままさくらのクラウドに置き換えればよいとは限りません。 さくらのクラウドのサービス特性を理解したうえで、構成を組み立てる必要があります。

    2. ネットワークとセキュリティの設計が後回しになる

    さくらのクラウドでは、サーバ、スイッチ、ルータ+スイッチ、VPNルータ、ロードバランサ、オブジェクトストレージ、AppRun、DBアプライアンスなど、さまざまなサービスを組み合わせて構成を検討します。

    特に重要なのは、外部公開する領域と内部管理する領域をどう分けるかです。 インターネット公開、VPN接続、閉域接続、管理用ネットワーク、WAF、監視、ログ取得などを、要件に合わせて整理する必要があります。

    3. 構築だけで終わり、運用設計が不足する

    クラウド導入でよくある失敗は、構築まではできたものの、運用体制が整っていないケースです。

    たとえば、以下のような点が曖昧なままだと、運用開始後に問題が起きやすくなります。

    • 障害発生時に誰が一次確認するのか
    • リソース使用率をどの頻度で確認するのか
    • ログをどこまで確認するのか
    • バックアップ取得状況をどう確認するのか
    • 証明書や契約更新を誰が管理するのか
    • 月次報告として何を提出するのか

    安心して運用するためには、構築段階から保守・運用・報告までを見据えておくことが重要です。

    弊社は、さくらのクラウドのパートナーとして導入を支援しています

    弊社は、さくらのクラウドのパートナーとして、クラウド導入・構成検討・運用支援に取り組んでいます。

    さくらのクラウドの導入では、単にサーバを作成するだけではなく、要件に応じてネットワーク、セキュリティ、監視、バックアップ、運用体制まで含めて設計する必要があります。

    弊社では、さくらのクラウドを活用したシステム基盤について、導入前の相談から構成検討、見積、運用設計まで支援しています。

    弊社が支援できること

    • ✅ さくらのクラウドを前提とした構成設計
    • ✅ 既存システムからの移行方針整理
    • ✅ ネットワーク・セキュリティ設計
    • ✅ AppRun、DBアプライアンス、オブジェクトストレージ等の活用検討
    • ✅ 監視・ログ・バックアップ方針の整理
    • ✅ 月次報告や運用体制の設計
    • ✅ AWS・Azure等との比較を踏まえたクラウド選定支援
    • ✅ 公共・自治体領域を見据えた要件整理

    弊社の強みは、単にクラウドリソースを用意するだけではありません。

    「どの構成なら安全に運用できるか」
    「どこまでをマネージドサービスに任せるべきか」
    「どこから運用設計が必要になるか」
    「月次報告や保守体制として何を整えるべきか」

    こうした現場目線の論点まで含めて、さくらのクラウド活用を支援できる点が弊社の特徴です。

    このようなご相談に対応できます

    • さくらのクラウドでシステムを構築できるか知りたい
    • 公共・自治体向けの提案で、さくらのクラウドを選択肢に入れたい
    • AWS・Azureとさくらのクラウドを比較したい
    • 国産クラウドを活用した構成案を作りたい
    • さくらのクラウドの月額費用を見積もりたい
    • 既存システムをさくらのクラウドへ移行できるか確認したい
    • ネットワークやセキュリティ構成に不安がある
    • 構築後の保守・運用・月次報告まで相談したい

    さくらのクラウド導入では、早い段階でパートナーに相談することが重要

    さくらのクラウドは、今後さらに注目されるクラウドになると考えられます。

    一方で、クラウド導入は「どのサービスを使うか」だけで成功するものではありません。 要件に合わせた構成を設計し、セキュリティ・運用・コストまで含めて検討する必要があります。

    特に、公共・自治体・準公共領域のシステムでは、要件整理の段階からクラウド構成を意識しておくことが重要です。 あとからネットワークや運用を追加しようとすると、構成変更や見積もりのやり直しが発生しやすくなります。

    そのため、さくらのクラウドの活用を検討している場合は、できるだけ早い段階で導入・運用パートナーに相談することをおすすめします。

    まとめ:さくらのクラウド活用は「導入できるパートナー選び」が重要になる

    さくらのクラウドがガバメントクラウドの対象クラウドサービスとして正式採択されたことにより、国産クラウド活用の可能性は大きく広がりました。

    一方で、これからの現場では、次の問いがより重要になります。

    さくらのクラウドを、安全に設計・構築・運用できるパートナーはいるのか。

    弊社は、さくらのクラウドのパートナーとして、導入前の相談から、構成設計、見積もり、運用設計まで支援しています。

    さくらのクラウドの活用を検討されている方は、ぜひお気軽にご相談ください。

    さくらのクラウド導入をご検討中の方へ

    弊社では、さくらのクラウドの構成検討・見積もり・導入支援・運用設計をサポートしています。

    「さくらのクラウドで実現できるか知りたい」
    「AWSやAzureとの違いを比較したい」
    「公共系システムで使える構成を相談したい」
    といった段階からご相談可能です。

    さくらのクラウドの導入・移行・運用についてお悩みの方は、まずはお気軽にお問い合わせください。

    お問い合わせはこちら

    参考情報

    ※本記事は、公開情報をもとに、さくらのクラウド導入・運用における実務上の論点を整理したものです。 ガバメントクラウドに関する個別要件や対応可否については、案件ごとに確認が必要です。

  • さくらのクラウドでSEGはどんなときに使う?帯域・スループットの注意点をわかりやすく解説

    さくらのクラウドでSEGはどんなときに使う?帯域・スループットの注意点をわかりやすく解説

    💡この記事はこんな人向け

    • SEGでオブジェクトストレージ接続を考えている
    • 性能や転送速度に不安がある
    • 設計段階で失敗したくない

    結論:SEGは「接続の仕組み」であり「高速回線ではない」

    SEGはスイッチとサービス側ネットワークを接続する便利な機能ですが、

    高速・大容量転送を前提とした仕組みではありません。

    そのため、用途によっては注意が必要です。


    SEGの通信特性

    SEGを利用した通信は、さくらのクラウド内部ネットワークを経由して行われます。

    ただし、この通信は専用線のように帯域が保証されているわけではなく、

    • 共有回線
    • ベストエフォート

    という特性を持ちます。

    また、マネージドサービスへの接続は100Mbps程度の帯域を前提として設計する必要があります。


    なぜ帯域・スループットが重要になるのか

    SEGは「接続できるかどうか」の問題を解決する機能ですが、

    実際のシステムでは、

    • どのくらいの速度でデータを送れるか
    • 処理がどのくらいの時間で終わるか

    が重要になります。

    特にオブジェクトストレージを使う場合、

    転送量 × 帯域 = 処理時間

    で決まるため、帯域の制約がそのまま性能に影響します。


    具体例:転送時間のイメージ

    例えば、100Mbpsの帯域でデータを転送する場合、

    • 1GB → 約80秒
    • 10GB → 約13分
    • 100GB → 約2時間

    程度の時間がかかります(理論値ベース)。

    実際にはベストエフォートのため、さらに時間がかかる可能性があります。


    SEGが向いている用途

    ✅ 向いているケース

    • アプリケーションからのファイル保存
    • ログの蓄積
    • コンテナイメージの取得
    • 比較的小さなデータのやり取り

    日常的なアプリケーション通信であれば、問題なく利用できます。


    注意が必要な用途

    ⚠ 注意が必要なケース

    • 日次で数百GB〜TB級のデータ転送
    • 短時間で大量データを処理するバッチ
    • 処理時間が厳密に決まっているシステム
    • 高スループットが求められる用途

    このようなケースでは、

    SEGだけで設計するとボトルネックになる可能性があります。


    設計時の判断ポイント

    SEGを使うかどうかは、以下の2つで判断できます。

    • 接続先がスイッチに接続されていないか(→ SEGが必要)
    • 通信量・速度要件が現実的か(→ SEGで足りるか)

    つまり、

    「接続できるか」と「性能が足りるか」は別問題

    として考えることが重要です。


    まとめ

    • SEGは接続の仕組みであり、高速回線ではない
    • 通信は共有回線・ベストエフォート
    • 100Mbps程度を目安に設計する
    • 大容量・高速処理用途では注意が必要
    • 接続と性能は分けて考える

  • さくらのクラウドSEGとは?「閉域」とゾーン外接続の本質からわかりやすく解説

    さくらのクラウドSEGとは?「閉域」とゾーン外接続の本質からわかりやすく解説

    💡この記事はこんな人向け

    • SEGの説明を読んでもピンとこない
    • さくらのクラウドのネットワーク構成がよくわからない
    • オブジェクトストレージとどう接続するのか知りたい

    結論:SEGとは何か

    SEG(サービスエンドポイントゲートウェイ)とは、

    スイッチで作ったネットワークを、さくらのクラウド側のサービス用ネットワークに接続するための機能

    です。

    新しいネットワークを作るものではなく、スイッチに追加する接続機能と考えるとわかりやすくなります。


    まず理解したい:スイッチに接続されたネットワーク

    さくらのクラウドでは、「スイッチ」にサーバやデータベースを接続してネットワークを構成します。

    このスイッチに接続されたリソース同士は、特別な設定をしなくても通信できます。

    • サーバ
    • DB(データベース)
    • バックエンドAPI

    これらはすべて、同じネットワークの中にいるため、そのまま通信できます。


    スイッチに接続されていないサービス

    一方で、さくらのクラウドには以下のようなサービスがあります。

    • オブジェクトストレージ
    • コンテナレジストリ
    • モニタリングスイート

    これらは便利なサービスですが、ユーザーが作成したスイッチに接続されているわけではありません。

    つまり、

    • サーバ → サーバ(同じスイッチ) → 通信できる
    • サーバ → オブジェクトストレージ → そのままでは通信できない

    という違いがあります。


    なぜそのままでは接続できないのか

    スイッチは、ユーザーごとに作成されるネットワークです。

    一方で、オブジェクトストレージなどのサービスは、 さくらのクラウド側で管理されている別のネットワーク上に存在しています。

    そのため、スイッチに接続されたサーバから見ると、 これらのサービスは同じネットワークにいない相手になります。

    この状態では、そのままでは通信できません。


    SEGの役割:2つのネットワークをつなぐ

    ここで登場するのがSEGです。

    SEGを有効にすると、

    • スイッチで構成したネットワーク
    • さくらのクラウド側のサービス用ネットワーク

    この2つが接続されます。

    その結果、

    • オブジェクトストレージ
    • コンテナレジストリ
    • モニタリングスイート

    などのサービスにアクセスできるようになります。

    つまりSEGは、

    「スイッチ」と「サービス側のネットワーク」をつなぐ機能

    と考えるとシンプルです。


    SEGが必要かどうかは「どこに存在しているか」で決まる

    ここで重要なのは、

    「マネージドサービスだからSEGが必要」というわけではない

    という点です。

    SEGが必要かどうかは、接続先が

    • 自分のスイッチに接続されているか
    • スイッチに接続されていない別のネットワークに存在しているか

    で決まります。


    考え方をシンプルに整理

    接続先 SEGの必要性
    スイッチに接続されている サーバ、DB、内部API 不要(そのまま通信できる)
    スイッチに接続されていない オブジェクトストレージ、レジストリ等 必要(SEGで接続)

    つまり、

    「自分のスイッチに接続されているかどうか」で判断する

    というのがポイントです。


    ゾーンという観点で見ると

    少しだけ設計寄りの見方をすると、

    スイッチに接続されたリソースは自分のゾーン内にあり、

    オブジェクトストレージなどのサービスはゾーン外にあるサービス領域に存在しています。

    そのため、

    • ゾーン内 → そのまま通信できる
    • ゾーン外 → SEGで接続する

    という整理になります。

    この「どこに存在しているか」という視点を持つことで、 SEGが必要かどうかを正しく判断できるようになります。


    図で理解する(重要)

    構造をシンプルにすると、以下のような関係になります。

    • スイッチ側:サーバ / DB
    • サービス側:オブジェクトストレージ
    • SEG:この2つをつなぐ

    この「2つのネットワークがつながる」というイメージが、SEG理解の最も重要なポイントです。


    まとめ

    • SEGはスイッチに追加する接続機能
    • スイッチとサービス側ネットワークをつなぐ
    • サービスはスイッチに接続されていない
    • そのままでは届かないためSEGが必要
    • 判断基準は「どこに存在しているか」

  • さくらのクラウドでフルマネージドな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をすべてカバーしています。

  • さくらのクラウドがガバメントクラウド認定|何が変わる?エンジニア視点でわかりやすく解説

    さくらのクラウドがガバメントクラウド認定|何が変わる?エンジニア視点でわかりやすく解説

    さくらのクラウドがガバメントクラウド認定されたと聞いたけれど、結局なにが変わるの?

    このニュースは、単に名前が載ったという話ではありません。

    さくらインターネット株式会社が提供するさくらのクラウドは、2023年11月28日に「2025年度末までに技術要件を満たすことを前提とした条件付き」で対象クラウドサービスに決定され、その後の進捗確認を経て、2026年3月27日以降は本番環境の提供が可能となりました。

    さくらインターネット、令和5年度および令和8年度 ガバメントクラウドサービス提供事業者に採択〜国産事業者初、「さくらのクラウド」が対象クラウドサービスに〜

    つまり今回のポイントは、

    さくらのクラウドが“条件付きの候補”から“本番利用できる候補”へ一段進んだこと

    にあります。

    今回は

    さくらのクラウドがガバメントクラウド認定された意味と、企業・エンジニアにとって何が変わるのか

    について解説します。

    💡この記事はこんな人向け

    • さくらのクラウドの最新動向を整理して理解したい人
    • ガバメントクラウドのニュースを見たが、何が重要なのか知りたい人
    • 公共・準公共領域や国産クラウドの可能性に関心がある人

    この記事でわかること

    • ✅ 今回のニュースの正確な意味
    • ✅ ガバメントクラウドとは何か
    • ✅ さくらのクラウドで何が変わるのか
    • ✅ 企業やエンジニアにとっての影響

    結論:今回の本質は「公共領域で本番利用できる候補」として一段進んだこと

    • ✅ さくらのクラウドは、条件付きの対象サービスから本番利用できる段階へ進んだ
    • ✅ これにより、国産クラウドがガバメントクラウドの本番利用候補として本格的に加わった
    • ✅ 国産クラウドを選択肢に入れたい組織にとって、データ主権も含めて説明しやすい材料が増えた
    • ✅ さくらのクラウドを扱えるエンジニアや技術・知見の価値も上がりやすくなった

    今回のニュースの本質は、さくらのクラウドが突然ゼロから認定されたことではありません。

    もともと条件付きで対象クラウドサービスに決定されていたものが、技術要件を満たしたことの確認を経て、本番環境で提供できる段階に進んだという点が重要です。

    この変化により、国産クラウドの位置づけ、データ主権を含む説明材料、そしてさくらのクラウドを扱うエンジニアや知見の価値に影響が出てきます。

    まず押さえたい事実|条件付き決定から本番提供可能までの流れ

    最初に、今回のニュースを時系列で整理します。

    • 2023年11月28日: 2025年度末までに技術要件を満たすことを前提とした条件付きで、対象クラウドサービスに決定
    • 2024年3月29日〜2026年1月30日: デジタル庁が複数回にわたり進捗状況を確認・公表
    • 2026年3月27日: すべての技術要件を満たしたことが確認され、同日以降、本番環境の提供が可能に

    この流れを見ると、今回の発表は単なる話題づくりではなく、段階的に進められてきた取り組みが一つの到達点を迎えたものだとわかります。

    そもそもガバメントクラウドとは

    ガバメントクラウドとは、国や地方公共団体などが共通的に利用できるクラウド環境を整備し、行政システムをより効率的かつ標準的に運用していくための仕組みです。

    これまで行政システムは、個別最適で構築・運用されることが多く、

    • コストがかかりやすい
    • システムごとの差が大きい
    • セキュリティや運用のばらつきが出やすい

    といった課題がありました。

    そのため、一定の技術要件を満たしたクラウドサービスを対象として整備し、政府や自治体がより共通的な考え方でクラウドを活用できるようにするのが、ガバメントクラウドの大きな考え方です。

    今回なにが変わるのか

    ① 国産クラウドがガバメントクラウドに本格的に加わった

    これまでガバメントクラウドで利用されてきたクラウドサービスは、AWS、Google Cloud、Microsoft Azure、Oracle Cloud Infrastructure といった外資系が中心でした。

    その中で、さくらのクラウドが条件付きの対象サービスから、本番環境で提供可能な段階へ進んだことは大きな意味があります。

    つまり今回の節目は、国産クラウドがガバメントクラウドの本番利用候補として本格的に加わった転換点として捉えることができます。

    ② データ主権も含めて国産クラウドを選ぶ説明材料が増えた

    国産クラウドを選択肢に入れたいと考える組織にとって、これまでは「国内事業者だから安心」「日本語で相談しやすい」といった印象ベースの説明になりやすい面がありました。

    しかし今回の節目によって、公共領域で本番利用できる段階に進んだクラウドという、より客観的に説明しやすい材料が増えました。

    さらに、データ主権の観点でも国産クラウドの意味は小さくありません。海外事業者のクラウドでは、保存場所が日本国内であっても、事業者が海外法令の適用対象であれば、その法制度に基づく開示請求の論点が残ります。

    もちろん、これは「自動的に自由に閲覧される」という話ではありません。ただし、どの国の法的管轄の影響を受けうるのかは、官公庁・金融・医療など、データ管理を重視する領域では重要な判断材料になります。

    その点、さくらのクラウドは国内自社データセンターで運用されており、データ管理や法制度との整合性を重視したい組織にとっても説明しやすい特徴があります。

    つまり、さくらのクラウドがすべての案件で最適ということではなくても、国産クラウドを候補に入れる理由を、データ主権も含めて説明しやすくなったことに意味があります。

    ③ さくらのクラウドを扱えるエンジニアの価値が上がる

    公共・準公共案件で比較・提案の機会が増えるほど、それを実際に設計・構築・運用できる人材の重要性も高まります。

    特に、さくらのクラウドはIaaSとしての理解が重要になりやすいため、

    • ネットワーク設計
    • サーバ設計
    • 移行設計
    • 運用設計

    といった領域を扱えるエンジニアの価値は上がりやすくなります。

    つまり今回のニュースは、サービス側の節目であると同時に、さくらのクラウドを扱えるエンジニアの市場価値にも追い風になりうる出来事だといえます。

    なぜこのニュースが注目されるのか

    今回のニュースが注目される理由は、単なるサービスの機能追加ではなく、国産クラウドの位置づけが一段上がったように見える節目だからです。

    特に、国産クラウドを選択肢に入れたいと考えていた企業や自治体、支援事業者にとっては、説明しやすい材料が増えたことになります。

    誤解しないために|言いすぎないほうがいいポイント

    • ⚠️ すぐにAWSやGoogle Cloudの完全な代替になるという話ではない
    • ⚠️ すべての案件でさくらのクラウドが最適という意味ではない
    • ⚠️ 今回の本質は、国産クラウドが本番利用候補として加わり、データ主権も含めて説明しやすくなったことにある

    つまり、今回の変化は「何でも一気に変わる」というより、公共領域での評価や扱われ方が一段現実的になったと捉えるのが自然です。

    まとめ

    • ✅ さくらのクラウドは、2023年11月28日に条件付きで対象クラウドサービスに決定されていた
    • ✅ その後の進捗確認を経て、2026年3月27日以降は本番環境の提供が可能になった
    • ✅ これにより、国産クラウドがガバメントクラウドの本番利用候補として本格的に加わった
    • ✅ 国産クラウドを選択肢に入れたい組織にとって、データ主権も含めて説明しやすい材料が増えた
    • ✅ 結果として、さくらのクラウドを扱えるエンジニアや技術・知見の価値も上がりやすくなる

    今回のニュースは、派手な機能追加の話ではありません。

    ですが、「公共領域で本番利用できる候補として一段進んだ」という意味では、さくらのクラウドにとって非常に大きな節目です。

    今後は、国産クラウドをどう位置づけるか、どの案件でどう活かすかという視点で見ると、このニュースの意味がよりわかりやすくなります。

  • 【解決】Terraformで「19ce」等のゴミがStateに混入する原因と対策(さくらオブジェクトストレージ / S3互換)

    【解決】Terraformで「19ce」等のゴミがStateに混入する原因と対策(さくらオブジェクトストレージ / S3互換)

    はじめに

    さくらクラウドのオブジェクトストレージなどをTerraformの backend "s3" として利用していると、突如としてStateファイルが破損し、以下のエラーが発生することがあります。

    発生するエラーメッセージ例:

    Error: Failed to load state: Unsupported state file format Error: Decoding state file failed: invalid character '1' looking for beginning of value The state file does not have a "version" attribute.

    これらのエラーが出た際、オブジェクトストレージ上の .tfstate を直接確認すると、ファイルの先頭に 19ce1a2b といった謎の16進数が書き込まれている場合があります。

    本記事では、この「チャンク混入問題」の原因と、skip_s3_checksum を使った解決策を解説します。


    原因:S3互換ストレージと「aws-chunked」の不整合

    この現象は、Terraform(AWS SDK)がデータ転送時に使用する aws-chunked(チャンクアップロード) 形式のデータと、S3互換ストレージ側の処理の相性によって発生します。

    本来は通信上の制御情報であるはずの「チャンク長(16進数)」が、ストレージ側で「データ本体の一部」として誤って保存されてしまうのが原因です。

    • 主な発生環境: Terraform v1.5.0 系(SDKの挙動変更により顕著化)
    • 対象ストレージ: さくらオブジェクトストレージ、および一部のS3互換ストレージ

    対策手順:skip_s3_checksum の導入

    この問題を根本的に回避するには、TerraformのBackend設定でチェックサム付与をスキップさせます。

    1. Terraform 本体のアップデート

    まずは、S3互換ストレージとの通信不具合が修正されている Terraform v1.6.6 以上 へのアップグレードを推奨します。

    2. backend 設定の修正

    backend "s3" ブロックに skip_s3_checksum = true を追加します。これが最も重要な対策です。

    Terraform

    terraform {
      backend "s3" {
        bucket   = "your-bucket-name"
        key      = "path/to/terraform.tfstate"
        region   = "ap-northeast-1"
        endpoint = "https://s3.isk01.sakurastorage.jp"
    
        # --- S3互換ストレージ向けの必須設定 ---
        force_path_style            = true
        skip_credentials_validation = true
        skip_region_validation      = true
        skip_requesting_account_id  = true
        
        # --- 【重要】今回のエラー対策 ---
        skip_s3_checksum            = true
      }
    }
    

    3. 設定の反映

    Bash

    terraform init -reconfigure
    

    壊れてしまったStateの復旧方法

    すでに先頭に 19ce 等が混入して Unsupported state file format となっている場合、Terraformコマンドからは修復できません。

    1. バージョニングから復元: さくら側のバケットでバージョニングが有効なら、正常だった世代にロールバックするのが最善です。
    2. 手動クリーンアップ: * 該当の .tfstate をダウンロード。
      • テキストエディタ(バイナリエディタ等)で開き、先頭の { より前にある16進数(例: 19ce)を削除。
      • { "version": ... から始まる正しいJSON形式にして保存し、ストレージへ手動で上書きアップロードする。
    3. 再作成(最終手段): どうしても復旧できない場合は、Stateを削除して terraform import でリソースを紐付け直します。

    まとめ

    さくらオブジェクトストレージで Unsupported state file format が出たら、まずはStateの先頭にゴミが入っていないか確認しましょう。

    対策は 「Terraform 1.6.6+ への更新」と「skip_s3_checksum = true の追加」 です。一度設定しておけば、以降の破損を防ぐことができます。


    よくある質問(Q&A):Terraform S3 Backend のトラブルシューティング

    Q1. なぜ AWS S3 以外(さくら等)だとこのエラーが出るのですか?

    A. Terraform の標準 S3 Backend は AWS 本家向けに最適化されており、最新の SDK ではデータ整合性を高めるために aws-chunked 形式やチェックサム(SHA256)を付与して送信します。さくらオブジェクトストレージなどの S3互換ストレージ の一部は、この特殊なチャンク形式の解析に完全対応していない場合があり、制御用の16進数(チャンク長)をデータ本体として保存してしまうため、JSON 形式が壊れてしまいます。

    Q2. skip_s3_checksum = true を設定しても安全ですか?

    A. はい、安全です。このオプションは、アップロード時に HTTP ヘッダーにチェックサムを付与する機能をオフにするものですが、通信自体は HTTPS で保護されており、ストレージ側での整合性チェックも従来通り行われるため、実用上のリスクは極めて低いです。むしろ、State が壊れるリスクを避けるために S3互換ストレージ利用時は必須の設定 と言えます。

    Q3. Invalid character '1' looking for beginning of value と出ます。

    A. まさにそれが本件の典型的なエラーメッセージです。State ファイルの 1行目、本来なら {(波括弧)で始まるべき場所に 19ce などの数字(文字 ‘1’ など)が混入していることを示しています。本記事の対策手順に従って Backend 設定を修正し、壊れた State を手動で修復してください。

    Q4. さくら以外の S3互換(MinIO, Cloudflare R2, Wasabi等)でも発生しますか?

    A. 発生する可能性があります。特に独自の API 実装を持つオブジェクトストレージで、Terraform v1.5.x 以降を使用した場合に報告されています。設定に endpointforce_path_style = true を入れている環境であれば、あわせて skip_s3_checksum = true を入れておくのが定石です。

    Q5. 複数人での開発で State Lock(排他制御)は効きますか?

    A. さくらオブジェクトストレージ単体では、AWS の DynamoDB のような Lock 機能は提供されていません。そのため、複数人で同時に apply すると State が競合するリスクがあります。対策として、Terraform v1.10 以降で導入された use_lockfile = true を試すか、CI/CD(GitHub Actions 等)経由で実行を一本化し、同時実行を防ぐ運用を推奨します。

    Q6. terraform initHTTP 403 Forbidden405 Method Not Allowed が出る場合は?

    A. skip_credentials_validation = trueskip_region_validation = true が抜けていないか確認してください。S3互換ストレージは AWS 固有の認証エンドポイントを持っていないため、これらを true にしないと初期化段階でエラーになることが多いです。

  • さくらのクラウドAppRun 専有型 起動不能ループを脱出せよ!Terraform 構築時の「見えない罠」と復旧ガイド(2026年版)

    さくらのクラウドAppRun 専有型 起動不能ループを脱出せよ!Terraform 構築時の「見えない罠」と復旧ガイド(2026年版)

    さくらインターネットの AppRun Dedicated(専有型)は、自由度が高い反面、Terraform で apply が通っても activeNodeCount=0(Podが1つも立ち上がらない) という事象によく陥ります。

    実案件で特定した「ドキュメントには載っていない仕様」と、復旧のための黄金フローを記録します。


    1. 起動失敗の 9 割を占める「SEG」の疎通不足

    AppRun 専有型のワーカーノードは、デフォルトで外部ネットワークから隔離されています。

    • 罠の正体: ワーカーが起動しても、自身の管理用 コントロールプレーン や、イメージを Pull するための コンテナレジストリ に到達できず、Pod の作成(イメージプル)に失敗します。
    • 解決策: プライベートスイッチ側で SEG (Service Entrance Gateway) を有効化し、以下のエンドポイントを接続先として明示的に許可してください。
      • *.sakuracr.jp(コンテナレジストリ)
      • AppRun 専有型コントロールプレーン
      • (必要なら)オブジェクトストレージ

    2. Terraform のスペック指定(500 Internal Server Error)

    HCL で cpumemory を定義する際、**「物理的に存在しない組み合わせ」**を指定すると、プロバイダー経由の API 叩き上げ時に 500 エラーで即死します。

    • NG例: cpu = 4, memory = 8 (4vCPU/8GB は存在しない)
    • OK例: cpu = 4, memory = 4 または cpu = 1, memory = 2
    • 復旧のコツ: 起動しない原因がリソース不足か設定ミスかを切り分けるため、まずは 1vCPU / 2GB の最小構成で activeNodeCount=1 を目指すのが鉄則です。

    3. IP Pool の衝突:runner との「1bit」の争い

    ネットワーク設計時、ユーザー用の IP Pool が AppRun のシステムコンポーネント(runner や LB)と重複すると、ASG の作成や割当に失敗します。

    • 罠の正体: frontend の IP pool を .20 開始にすると、内部の管理用 IP と衝突するケースがあります。
    • 解決策: Pool 開始アドレスを .21 以降にずらして設計します。Terraform# 成功パターンの IP Pool 定義例 network_interface { ip_address_pool { start = "10.20.0.21" # .20を避けて開始 end = "10.20.0.29" } }

    4. eth0=shared 時の Default Gateway 制限

    • 症状: ASG 作成時に 400 (defaultGateway must not be set) エラー。
    • 原因: フロントエンド ASG で eth0=shared を使用している場合、他のプライベート NIC に gateway を設定することは仕様上禁止されています。
    • 対策: プライベート側の NIC 定義から gateway 設定を削除してください。

    5. 【最重要】「更新」不可。再作成こそが唯一の反映

    Terraform で ip_address_pool や NIC 設定を書き換えて apply しても、実環境に反映されないことがあります。

    • 理由: 既存の ASG/LB が存在する場合、内部の構築スクリプトが「作成済み」と判定して処理をスキップするためです。
    • 鉄則: 設定変更時は terraform destroyterraform apply による全削除・再作成が、現状最も確実な反映手段です。

    2026-02-03 最終復旧ログ:正常起動へのチェックリスト

    もし /healthz が 503 を返し続けているなら、以下の順に確認してください。

    1. SEG の有効化: レジストリとコントロールプレーンへの経路があるか?(IP は 10.20.0.5/24 等でセグメント内に存在するか)
    2. リソースの最小化: 1vCPU / 2GB でスケジューリングに成功するか?
    3. DNS 更新: LB 再作成で Public IP が変わっていないか?salessight.east-cloud.jp の A レコードを新 IP に向け直したか)
    4. 証明書の反映: LB 再作成直後は証明書が一時的に self-signed になるケースがあるため、数分待機してブラウザから確認。

    「Apply は成功するが、中身は死んでいる」 という AppRun Dedicated 特有の挙動を理解すれば、デバッグ時間は劇的に短縮されます。


    AppRun Dedicated 構築トラブルに関するよくある質問(FAQ)

    Q: activeNodeCount が 0 のまま、一向に 1 になりません。何を確認すべきですか?

    A: まずは SEG(Service Entrance Gateway)の設定を確認してください。 専有型ワーカーは、デフォルトで外部ネットワークから遮断されています。SEG で「コンテナレジストリ(*.sakuracr.jp)」および「AppRun専有型コントロールプレーン」への接続許可設定が漏れていると、イメージのプルができず、ノードが活性化しません。

    Q: Terraform でスペック変更(CPU/メモリ)を apply したのに反映されません。

    A: AppRun Dedicated の仕様上、既存リソースの「更新」が効かない項目があります。 特に ASG(Auto Scaling Group)や LB の内部設定は、リソースが存在すると構築スクリプトが処理をスキップする設計になっています。設定変更を確実に反映させるには、一度 terraform destroy でリソースを削除してから再作成(apply)を行ってください。

    Q: ASG 作成時に「500 Internal Server Error」が発生します。原因は何ですか?

    A: 指定したワーカークラス(CPU/メモリの組み合わせ)が実在しない可能性があります。 例えば 4vCPU / 8GB といった組み合わせは提供されていないため、API 側でエラーとなります。4vCPU / 4GB2vCPU / 2GB など、さくらインターネットが公式に提供しているスペック表に準じた値を指定してください。

    Q: ロードバランサー(LB)を再作成したらサイトにアクセスできなくなりました。

    A: LB の Public IP アドレスが変更されている可能性があります。 LB を再作成すると、新しい Public IP が割り当てられます。お使いの DNS サービス(さくら外の DNS や A レコード等)にて、salessight.east-cloud.jp などのドメイン向け先を新しい IP アドレスへ手動で更新する必要があります。

    Q: IP Pool の設定で注意すべき「衝突」とは何ですか?

    A: AppRun の管理用コンポーネント(runner)との重複です。 同一セグメント内で .20 付近のアドレスはシステム側で使用されるケースが多いです。ユーザー用の IP Pool 開始アドレスを .21 以降に設定することで、アドレスの奪い合いによる起動失敗を回避できます。


    この記事の内容が、AppRun Dedicated の構築で夜通しデバッグしているエンジニアの助けになれば幸いです。

  • 第3回:さくらのクラウドで構築するモダンアーキテクチャ GitHub Actions × Self-hosted Runner

    第3回:さくらのクラウドで構築するモダンアーキテクチャ GitHub Actions × Self-hosted Runner

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

    AppRun構成でCI/CDを成立させる実践設計


    📚 さくらのクラウドで作るモダンアーキテクチャ(全5回)


    はじめに

    AppRunを使ったモダン構成で、ほぼ確実にぶつかる問題があります。

    それが

    VPC内部にあるデータベースに、CI/CDからどうやってmigrateを流すか

    という問題です。

    通常のCI/CDでは、

    • GitHub Actions
    • GitLab CI
    • CircleCI

    などのクラウドCIが使われます。

    しかしこれらは インターネット上の環境で実行されるため、VPC内部には直接アクセスできません。

    今回の構成では、

    • データベースはVPC内
    • DBはグローバル公開しない
    • AppRun専有型を利用

    という設計なので、

    CIからDBに直接アクセスすることができません。


    なぜ普通のCIではダメなのか

    構成を整理します。

    GitHub Actions

    Internet

    AppRun

    VPC Router

    Database

    ここで問題になるのは

    GitHub ActionsはVPCの外にいる

    という点です。

    つまり、

    • DBを公開しない限り
    • CIはDBに接続できない

    という状態になります。

    しかしDBを公開するのは、セキュリティ的に好ましくありません。


    解決策:Self-hosted Runner

    この問題を解決するのが

    Self-hosted Runner

    です。

    これは簡単に言うと、

    GitHub Actionsの実行環境を自分のサーバーに置く仕組み

    です。

    つまり、

    • RunnerをVPC内に配置
    • GitHub ActionsのジョブをRunnerで実行

    することで、

    CIからVPC内部のリソースにアクセスできるようになります。


    Runner配置の構成

    今回のシリーズでは以下の構成を採用します。

    GitHub Actions

    Self-hosted Runner

    VPC Router

    Database

    RunnerをVPC内部に配置することで、

    • DBアクセス
    • migrate実行
    • 内部API接続

    が可能になります。


    Runnerを配置するセグメント

    第2回で紹介したネットワーク構成を思い出してください。

    VPC
    ├─ public-app-seg
    ├─ private-db-seg
    └─ runner-seg

    Self-hosted Runnerは

    runner-seg

    に配置します。

    理由は以下です。

    • AppRunと役割が異なる
    • DBアクセスを制御しやすい
    • CI用リソースを分離できる

    CI用のサーバーは、必ず専用セグメントに分離するのが安全です。


    Runnerのもう一つの問題:インターネットに出られない

    RunnerをVPC内部に配置すると、もう一つ問題が発生します。

    それは

    Runnerがインターネットに出られない

    という問題です。

    RunnerはCI実行時に以下の通信を行います。

    • GitHub Actions API
    • pip install
    • npm install
    • Docker image pull
    • 外部APIアクセス

    そのため 外向き通信が必須になります。


    NAT VMの役割

    ここで必要になるのが

    NAT VM

    です。

    NAT VMは、

    VPC内部のサーバーがインターネットへ出るための出口

    として機能します。

    構成は以下のようになります。

    Runner

    VPC Router

    NAT VM

    Internet

    RunnerはNAT VMを経由してインターネットへ接続します。


    AWSとの違い

    AWSでは

    • NAT Gateway

    を利用します。

    一方、さくらのクラウドでは

    NATはVMで構築する

    のが一般的です。

    ただしメリットもあります。

    • コストが安い
    • 構成の自由度が高い
    • 通信制御が細かくできる

    NAT VMを含めた全体構成

    最終的なネットワーク構成は以下になります。

    Internet

    Cloudflare

    AppRun[VPC]
    ├─ public-seg
    │ └─ NAT VM

    ├─ runner-seg
    │ └─ Self-hosted Runner

    └─ private-db-seg
    └─ Database

    通信フロー:

    Runner → NAT VM → Internet → GitHub
    Runner → VPC Router → Database

    この構成により

    • CI/CD
    • VPC内部通信
    • DB保護

    を両立できます。


    Runnerセットアップ

    RunnerはGitHubからスクリプトを取得して起動します。

    mkdir actions-runner
    cd actions-runnercurl -o actions-runner.tar.gz -L https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gztar xzf actions-runner.tar.gz./config.sh --url https://github.com/your-repo --token TOKEN
    ./run.sh

    これでRunnerがGitHubと接続されます。


    GitHub Actions設定例

    Djangoのmigrate実行例です。

    name: migrateon:
    push:
    branches:
    - mainjobs:
    migrate:
    runs-on: self-hosted steps:
    - uses: actions/checkout@v4 - name: Install dependencies
    run: |
    pip install -r requirements.txt - name: Run migrate
    run: |
    python manage.py migrate

    重要なのはここです。

    runs-on: self-hosted

    これによりジョブは

    VPC内部のRunner

    で実行されます。


    Runner運用で気をつけること

    Runnerは公開しない

    RunnerはCI実行環境です。

    外部公開すると攻撃対象になります。

    必ずVPC内部に配置します。


    Runnerは専用セグメントに置く

    CI環境は分離します。

    理由:

    • セキュリティ
    • 負荷分離
    • トラブル影響範囲

    Runnerは使い捨ても可能

    高度な構成では

    • Runner自動生成
    • Job終了後削除

    という設計もあります。

    今回はシンプル構成を採用します。


    まとめ

    AppRun構成でCI/CDを成立させるには

    Self-hosted Runner + NAT VM

    が必要になります。

    理由はシンプルです。

    • DBはVPC内部
    • CIはインターネット
    • Runnerは内部
    • Runnerは外に出る必要がある

    だから

    RunnerをVPC内に置き
    NAT VMでインターネットに出る

    この構成が最もシンプルで安全です。


    次回予告

    次回は

    AppRun専有型と共用型の違い

    を解説します。

    ここを理解していないと、

    • VPC接続できない
    • スイッチ接続できない
    • ネットワーク設計が破綻する

    という事故が起きます。

    AppRun設計の核心です。


    よくある質問(FAQ)

    Q1. GitHub ActionsからVPC内のデータベースに接続できますか?

    通常のGitHub Actionsはインターネット上で実行されるため、VPC内部のデータベースには直接接続できません。
    そのため、VPC内にSelf-hosted Runnerを配置し、そのRunner上でCIジョブを実行する構成が必要になります。


    Q2. Self-hosted Runnerとは何ですか?

    Self-hosted Runnerとは、GitHub Actionsのジョブを自分のサーバーで実行できる仕組みです。
    通常はGitHubのクラウド環境でジョブが実行されますが、RunnerをVPC内に配置することで内部リソースへ安全にアクセスできます。


    Q3. Self-hosted Runnerはどこに配置するべきですか?

    Self-hosted Runnerは専用のセグメント(例:runner-seg)に配置するのが推奨です。
    AppRunやデータベースと役割が異なるため、ネットワークを分離することでセキュリティと運用性が向上します。


    Q4. Runnerはインターネットに接続する必要がありますか?

    はい。Runnerは以下の通信を行うため、外向き通信が必要です。

    • GitHub Actions API
    • パッケージダウンロード(pip / npm)
    • Dockerイメージ取得
    • 外部APIアクセス

    そのためVPC内のRunnerはNAT VMなどを経由してインターネットへ接続する必要があります。


    Q5. NAT VMとは何ですか?

    NAT VMとは、VPC内部のサーバーがインターネットへアクセスするための出口となるサーバーです。
    RunnerはNAT VMを経由することで、GitHubやパッケージリポジトリへアクセスできます。


    Q6. AWSの場合はどう構成しますか?

    AWSでは通常、

    • NAT Gateway
    • ECS / EC2 Runner
    • GitHub Actions

    の組み合わせで同様の構成を作ります。
    さくらのクラウドではNAT Gatewayの代わりにNAT VMを構築するケースが多いです。


    Q7. データベースをグローバル公開してCIから接続するのはダメですか?

    可能ではありますが推奨されません。
    DBを公開すると攻撃対象が増えるため、VPC内部に閉じたままSelf-hosted Runner経由で操作する方が安全です。

  • AppRun入門 共用型・専有型の違いとプライベート環境の構築手順

    AppRun入門 共用型・専有型の違いとプライベート環境の構築手順

    AppRunとは何か

    さくらインターネットが2025年12月9日に正式リリースしたAppRunは、コンテナイメージを渡すだけでアプリを公開できるマネージドサービスだ。裏側ではKubernetesとKnativeが動いている。Knativeは元々Google CloudがCloud Runの基盤として開発し、2021年にCloud Native Computing Foundation(CNCF)へ寄贈されたオープンソースだ。

    ただし利用者がKubernetesやKnativeを直接触る場面はない。具体的には、コンテナイメージとポート番号を指定するだけで、ロードバランシング、オートスケール、TLS終端までAppRunが処理してくれる。つまり、インフラ構築や運用にかける時間を削り、アプリ開発に集中できるわけだ。

    この記事では以下の内容を扱う。

    • 共用型と専有型の料金・機能比較
    • 専有型でSEGを使ったプライベート環境の構築手順
    • apprun-cliによるCI/CDパイプラインへの組み込み方法
    • AWS App RunnerやCloud Runとの違い

    それでは、AppRunが用意している2つのプランから見ていこう。

    この記事の前提条件

    手順を進めるにあたり、以下の準備が必要になる。

    • さくらのクラウドのアカウントを持っていること。コントロールパネルの基本操作に不安がある場合は先にそちらを確認してほしい
    • Docker がローカル環境にインストールされていること
    • コンテナの基本的な概念(イメージ、レジストリ、ポートマッピング)を理解していること
    • 専有型を試す場合はサービスプリンシパルの作成権限が必要。IDポリシーの設定方法についてはこちらの記事で詳しく解説している

    共用型と専有型を比較する

    AppRunには共用型専有型がある。それぞれの違いを以下の表にまとめた。

    項目共用型専有型
    実行基盤共有クラスタ上でコンテナが動作専有VM上でコンテナが動作
    ゼロスケール対応。リクエストがなければインスタンス0になる非対応
    プライベートネットワーク接続非対応SEG経由で対応
    料金目安(税込)月額約3,720円〜(0.5vCPU / 1GiBメモリ)月額約11,000円〜(1vCPU / 2GBメモリ)
    ユースケースWebアプリ、API、検証環境業務システム、DB接続が必要な構成

    共用型はコストを抑えたい場面に向く

    共用型の最大の強みはKnativeベースのゼロスケールだ。アクセスがない時間帯にインスタンスが0になり、その間は課金されない。そのため、個人開発やトラフィックの読めない初期サービスに適している。

    料金体系は1時間単位の従量課金で、最小構成なら約5円/時間だ。月額に直すと約3,720円からスタートできるため、検証用途でも手を出しやすい価格帯といえる。

    とはいえ、ゼロスケールにはデメリットもある。インスタンスが0の状態からリクエストを受けると、コンテナの起動が完了するまで数秒から十数秒の待ち時間(コールドスタート)が発生する。レスポンス速度が求められるサービスでは、最小インスタンス数を1以上に設定しておくほうが安全だ。

    もう1つ注意したいのが、共用型ではプライベートネットワーク接続ができない点だ。クラウド上のデータベースやストレージへの通信はすべてインターネット経由になる。DB接続を含む構成では、次に紹介する専有型を選ぶ必要がある。

    専有型はネットワーク分離が必要な環境向け

    一方で、専有型ではユーザー専用のVMが割り当てられる。他のユーザーとリソースを共有しないため、パフォーマンスが安定しやすい点が特徴だ。

    最小構成は1vCPU/2GBメモリで月額約11,000円、最大8vCPU/8GBメモリまでスケールアップできる。しかし専有型を選ぶ最大の理由は、スペックよりもプライベートネットワーク接続だろう。さくらのクラウドのスイッチにサービスエンドポイントゲートウェイ(SEG)を介して接続することで、クラウド上のデータベースやストレージへインターネットを経由せずプライベートIPで直接通信できる。

    したがって、エンタープライズシステムや自治体業務のように外部へトラフィックを流したくないケースでは、この仕組みが不可欠になる。国産クラウドとしてのセキュリティ基盤についてはさくらのクラウドのSOC2 Type1取得に関する記事でも解説しているので、あわせて確認してほしい。

    専有型でプライベート環境を構築する5ステップ

    ここからは専有型AppRunで、プライベートなコンテナ実行環境を組み立てる流れを解説する。共用型にはない設定が複数あるため、順を追って進めよう。全体像としては、ネットワーク準備 → 認証設定 → クラスター起動 → イメージ準備 → 動作確認という流れになる。

    なお、構築中に詰まりやすいポイントについてはAppRun専有型で起動しない場合の対処法にもまとめているので、トラブル時にはそちらも参照してほしい。

    ステップ1 — スイッチを作成しSEGを有効化する

    まず、さくらのクラウドコントロールパネルでスイッチを作成する。次に、そのスイッチの詳細画面にあるサービスエンドポイントゲートウェイタブからSEGを有効化する。

    SEGはプライベートネットワーク内のリソースから、さくらのクラウドのマネージドサービスへ安全に接続するための仕組みだ。ここでIPアドレスとネットマスクを設定し、コンテナレジストリとAppRun専有型コントロールプレーンへの通信を許可しておく必要がある。

    この設定を忘れると、ワーカーノードがコンテナイメージを取得できなくなる。見落としやすいポイントなので、他の設定より先に済ませておきたい。

    ステップ2 — サービスプリンシパルを作成する

    クラスターの起動には適切な権限が必要だ。そこで、さくらのクラウドのIAM機能でサービスプリンシパルを作成し、「さくらのクラウド 作成・削除」の権限を付与する。

    サービスプリンシパルとは、リソースを自動管理するための認証情報のことだ。具体的には、AppRun専有型がワーカーノードの増減やネットワーク設定を行うときにこの認証情報が使われる。なお、IAMの権限管理に不慣れな場合は、先にIDポリシーの設定方法を確認しておくことをすすめる。

    ステップ3 — クラスターとワーカーノードを起動する

    AppRun専有型の管理画面からクラスターを作成する。続いてオートスケーリンググループを追加し、ワーカーノードを起動する。

    このとき重要なのはNIC設定だ。ステップ1で作成したSEG有効化済みスイッチを選び、ネームサーバにはSEGのIPアドレスを指定する。この接続設定により、ワーカーノードがプライベートネットワーク経由でコンテナレジストリや管理サーバーと通信できるようになる。

    CPUとメモリはアプリの負荷に合わせて選べばよい。初回の検証であれば最小構成で十分だ。

    ステップ4 — コンテナイメージを用意してデプロイする

    現時点でAppRunはさくらのクラウドのコンテナレジストリ専用となっている。そのため、Docker Hubなど外部レジストリから直接pullしてデプロイすることはできない。外部レジストリへの対応はロードマップに入っているものの、具体的な時期は未定とされている。

    外部のベースイメージを使いたい場合は、ローカルでpullしてからさくらのコンテナレジストリに再pushする方法を取る。以下にNode.jsアプリの例を示す。

    FROM node:20-slim
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci --production
    COPY . .
    EXPOSE 8080
    CMD ["node", "server.js"]

    また、AppRunはx86_64アーキテクチャで動作する点にも注意が必要だ。Apple Silicon搭載のMacでビルドする場合は --platform linux/amd64 を明示的に付けなければならない。

    # ビルドしてさくらのコンテナレジストリにpush
    docker build --platform linux/amd64 -t my-app.sakuracr.jp/my-app:latest .
    docker login my-app.sakuracr.jp
    docker push my-app.sakuracr.jp/my-app:latest

    イメージのpushが完了したら、ロードバランサをステップ1のスイッチに接続し、アプリケーションを追加する。コンテナポート8080を外部ポート80にマッピングし、ホスト名を指定すれば準備完了だ。

    ステップ5 — 接続確認と動作検証

    デプロイ後は、プライベートセグメント経由でDBや他のリソースに到達できるか確認する。接続先のプライベートIPは環境変数で渡すと管理しやすい。

    外部DNSサービスでAレコードを登録すれば、指定したホスト名で外部からアクセスできるようになる。

    確認時に起動しない、通信できないといったトラブルが起きた場合は、まずSEGの設定とNIC設定を見直そう。よくある原因と対処法はこちらの記事にまとめている。

    運用で押さえておきたいポイント

    構築が完了したら、運用フェーズで気をつけるべきことを整理しておこう。

    コンテナイメージの更新フロー

    アプリを更新するたびにコンテナレジストリへの再pushが必要になる。手動運用ではミスが起きやすいため、後述するapprun-cliを使ったCI/CDパイプラインの構築を早い段階で検討したい。

    オートスケールの挙動

    専有型でもCPU使用率をベースにしたオートスケールが利用できる。トラフィック増加時には新しいインスタンスが自動的に立ち上がり、負荷を分散してくれる。ただし共用型と異なり、インスタンスを0にするゼロスケールは専有型では動作しない。常に最低1台のインスタンスが稼働し続ける点を理解しておこう。

    監視とログ

    AppRunのコンソールからコンテナのログを確認できる。本番運用では外部の監視ツールと組み合わせ、レスポンスタイムやエラー率を継続的に観測する体制を整えておくと安心だ。

    apprun-cliでデプロイを自動化する

    コントロールパネルでの手動操作に加え、CLIツールのapprun-cliも利用できる。CI/CDパイプラインに組み込む場合はこちらのほうが扱いやすい。

    apprun-cliはfujiwaraさんが開発した非公式ツールで、Homebrewまたはgo installでインストールできる。

    # Homebrewでインストール
    brew install fujiwara/tap/apprun-cli
    
    # または go install
    go install github.com/fujiwara/apprun-cli/cmd/apprun-cli@latest

    このツールはアプリケーション定義をJSONまたはJsonnet形式のファイルで管理する仕組みだ。既存のアプリケーション設定をエクスポートするには、以下のコマンドを実行する。

    # 既存アプリケーション設定をJsonnetファイルに出力
    apprun-cli init --name my_web_app --jsonnet > myapp.jsonnet

    設定ファイルを編集したら、deployコマンドで反映する。

    # 設定ファイルを指定してデプロイ
    apprun-cli deploy --app myapp.jsonnet

    Jsonnet形式を選ぶメリットは、テンプレート機能を活用できる点だ。例えば、must_env() 関数で環境変数を読み込めるため、シークレット情報をファイルに直接書かずに済む。さらに tfstate() でTerraformの状態を参照したり、secret_value() でSecret Managerにアクセスしたりも可能だ。

    GitHub ActionsやGitLab CIのステップに組み込めば、pushのたびにAppRunへ自動デプロイする仕組みが構築できる。なお、アプリケーションが見つからない場合、deployコマンドは新規作成として処理される。つまり、初回も更新も同じコマンドで済む点が運用を楽にしてくれる。

    GitHub Actionsでの設定例

    参考として、GitHub Actionsでapprun-cliを使う場合の基本的なワークフロー構成を示す。

    name: Deploy to AppRun
    on:
      push:
        branches: [main]
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
    
          - name: Build and push image
            run: |
              docker build --platform linux/amd64 -t my-app.sakuracr.jp/my-app:${{ github.sha }} .
              echo "${{ secrets.SAKURA_CR_PASSWORD }}" | docker login my-app.sakuracr.jp -u ${{ secrets.SAKURA_CR_USER }} --password-stdin
              docker push my-app.sakuracr.jp/my-app:${{ github.sha }}
    
          - name: Install apprun-cli
            run: |
              go install github.com/fujiwara/apprun-cli/cmd/apprun-cli@latest
    
          - name: Deploy
            env:
              SAKURA_APPRUN_TOKEN: ${{ secrets.SAKURA_APPRUN_TOKEN }}
              IMAGE_TAG: ${{ github.sha }}
            run: |
              apprun-cli deploy --app myapp.jsonnet

    この例ではmainブランチへのpushをトリガーに、イメージのビルド・push・デプロイを自動実行している。must_env() を使えば、Jsonnet内で IMAGE_TAG などの環境変数を安全に参照できる。

    AWS App RunnerやCloud Runとの違い

    名前の似たサービスが海外クラウドにもある。主要な違いを表にまとめた。

    サービス提供元ゼロスケールプライベートネットワーク料金の特徴
    AppRunさくらインターネット共用型のみ対応専有型でSEG経由対応円建て。共用型は月額約3,720円〜
    AWS App RunnerAWS非対応(最低1インスタンス常駐)VPCコネクタで対応ドル建て。待機中もvCPU/メモリ課金あり
    Cloud RunGoogle Cloud対応VPCコネクタ / Direct VPCで対応ドル建て。リクエスト単位の従量課金

    ゼロスケール対応ではAppRun共用型とCloud Runが並ぶ。一方で、AWS App Runnerは最低1インスタンスが常駐するため、待機中もコストが発生し続ける。

    AppRunを選ぶ理由は大きく3つある。国内データセンターで動作すること、円建てで請求が届くこと、そしてさくらのクラウドの既存リソースとプライベート接続できることだ。

    データの国内保管が求められる案件や、ガバメントクラウドを見据えた自治体向けシステムでは、この3点が決定打になる。すでにさくらのクラウドを運用している環境なら、追加のネットワーク設計も最小限で済む。

    ただし、グローバル展開やマルチリージョン構成が必要な場合はAWSやGoogle Cloudのほうが選択肢は多い。結局のところ、用途に応じた使い分けが現実的だ。

    よくある質問

    Q1. 共用型と専有型、最初はどちらを選ぶべきか

    迷ったら共用型から始めるのがよい。ゼロスケールにより待機コストがかからないため、検証や小規模サービスに適している。その後、プライベートネットワーク接続やリソースの分離が必要になった時点で、専有型へ切り替えれば問題ない。

    Q2. 手元のDockerイメージをそのまま使えるか

    直接は使えない。現時点ではさくらのコンテナレジストリのみに対応しているため、手元やDocker Hubのイメージは一度さくらのコンテナレジストリにpushし直す必要がある。加えて、x86_64(linux/amd64)でビルドされている必要があるので、Apple Silicon搭載のMacで作ったイメージはそのままでは動かない。ビルド時に --platform linux/amd64 を付けよう。

    Q3. 独自ドメインで公開できるか

    専有型ではホスト名を指定し、外部DNSサービスでAレコードを登録すれば独自ドメインで公開できる。一方で、共用型にはAppRun単体での独自ドメイン機能がない。ただし、さくらのウェブアクセラレータを前段に置くことで対応は可能だ。その際、リクエスト先をHostヘッダで判別するため、ウェブアクセラレータ側のHostヘッダ設定に注意が必要になる。

    Q4. ゼロスケールからの起動にどのくらいかかるか

    コンテナイメージのサイズや起動処理によって変わるが、目安は数秒から十数秒だ。コールドスタートを避けたいなら最小インスタンス数を1以上に設定すればよい。ただし、その分は常時課金されるので、コストとのトレードオフになる。アクセス頻度やレスポンス要件に応じて判断してほしい。

    Q5. 専有型でもオートスケールは効くか

    効く。CPU使用率をベースにコンテナインスタンスを自動で増減する仕組みが備わっている。トラフィック増加時には新しいインスタンスが自動的に立ち上がり、負荷を分散してくれる。ただし、インスタンスを0にするゼロスケールは専有型では使えない点に注意してほしい。

    Q6. SEGの設定を忘れるとどうなるか

    ワーカーノードがAppRun管理サーバーやコンテナレジストリと通信できなくなる。結果として、コンテナイメージの取得もクラスタの正常運用もできない。専有型を使うなら、SEGの有効化はスキップできない手順だ。

    まとめ

    AppRunはコンテナデプロイの手間を削り、インフラ管理から開発者を解放するサービスだ。共用型のゼロスケールは待機コストをゼロに抑え、専有型のプライベートネットワーク接続はセキュリティ要件の厳しい環境に応える。

    専有型の構築ではSEGの設定が鍵になる。この記事で紹介した5ステップを押さえておけば、プライベートなコンテナ実行環境を迷わず立ち上げられるはずだ。加えて、apprun-cliを導入すればCI/CDパイプラインによる自動デプロイも実現できる。

    さくらのクラウドの他の機能と組み合わせることで、よりセキュアで運用しやすいインフラを構築できる。関連記事もあわせて確認してほしい。

    参考リンク

  • 第2回:さくらのクラウドで構築するモダンアーキテクチャ VPC設計完全解説

    第2回:さくらのクラウドで構築するモダンアーキテクチャ VPC設計完全解説


    📚 さくらのクラウドで作るモダンアーキテクチャ(全5回)

    • 第1回:さくらのクラウドで作るモダンアーキテクチャ入門
    • 第2回:さくらのクラウドVPC設計(イマココ)
    • 第3回:GitHub ActionsとSelf-hosted RunnerでVPC内DBにmigrateを実行する方法
    • 第4回:AppRun専有型と共用型の違いを徹底解説
    • 第5回:Terraformで再現するさくらのモダンアーキテクチャ

    はじめに

    モダンアーキテクチャの成否は、ネットワーク設計で8割決まります。

    特に、さくらのクラウドはAWSとは設計思想が異なります。

    • AWS:L3(VPC)中心の抽象化された設計
    • さくら:L2(スイッチ)を自分で組む前提の設計

    この違いを理解しないままAppRunやDBを配置すると、

    • VPC連携がうまくいかない
    • 専有型が起動しない
    • 稼働コンテナ数が0になる
    • 意図せずDBが公開される

    といった事故が起きます。

    今回は、

    • L2(スイッチ)
    • L3(VPCルータ)
    • SEG(サービスエンドポイント)

    この3つを軸に、正しいVPC設計を整理します。


    1. L2(スイッチ)とは何か?

    L2スイッチは、同一セグメント内の通信を担うレイヤーです。

    特徴:

    • 同一IPレンジ内で直接通信
    • ブロードキャストドメインを形成
    • ルーティングはしない

    さくらのクラウドでは、セグメントを自分で作るのが前提です。

    AWSのように「VPCを作れば終わり」ではありません。
    まずは どの役割をどのセグメントに分けるか を決めることから始まります。


    2. L3(VPCルータ)の役割

    VPCルータは、異なるセグメント間を接続するL3層です。

    主な機能:

    • ルーティング
    • NAT
    • パケットフィルタ
    • VPN接続

    AWSで例えると:

    • NAT Gateway
    • Internet Gateway
    • Route Table

    をまとめた存在です。

    原則はシンプル。

    L2で分ける
    L3で繋ぐ


    3. SEG(サービスエンドポイント)を忘れるな

    ここが最重要ポイントです。

    SEGとは?

    SEG(Service Endpoint Gateway)は、

    VPC内からさくらのマネージドサービスへ
    インターネットを経由せずに接続する仕組み

    です。

    対象例:

    • コンテナレジストリ
    • AppRun Dedicatedコントロールプレーン
    • オブジェクトストレージ

    なぜSEGが重要なのか?

    AppRun専有型では、

    • ワーカーノードがVPC内に存在
    • 外部に直接出られない構成も多い

    そのためSEGを設定しないと、

    • Dockerイメージがpullできない
    • デプロイが失敗する
    • activeNodeCount=0 のまま止まる

    という状態になります。

    「ネットワークは正しいのに動かない」場合、
    まずSEGを疑うべきです。


    4. 推奨セグメント構成

    今回のシリーズで採用する基本構成は以下です。

    Internet
       ↓
    Cloudflare
       ↓
    AppRun(Frontend)
    
    [VPC内]
      ├─ public-app-seg
      ├─ private-db-seg
      ├─ runner-seg
      └─ SEG(サービス接続)
    

    設計原則:

    • DBはprivate-db-segのみ
    • DBにグローバルIPを持たせない
    • RunnerのみDBアクセス許可
    • AppRun専有型はSEG経由でサービス接続

    5. Terraformでのネットワーク表現例

    ここまでの設計は、Terraformでは次のように表現できます。

    L2(セグメント)

    resource "sakuracloud_switch" "public_app" {
      name = "public-app-seg"
    }
    
    resource "sakuracloud_switch" "private_db" {
      name = "private-db-seg"
    }
    
    resource "sakuracloud_switch" "runner" {
      name = "runner-seg"
    }
    

    L3(VPCルータ)

    resource "sakuracloud_vpc_router" "vpc" {
      name = "vpc-router"
      plan = "standard"
    
      interface {
        switch_id = sakuracloud_switch.public_app.id
        ipaddress = ["192.168.10.1"]
        netmask   = 24
      }
    
      interface {
        switch_id = sakuracloud_switch.private_db.id
        ipaddress = ["192.168.20.1"]
        netmask   = 24
      }
    
      interface {
        switch_id = sakuracloud_switch.runner.id
        ipaddress = ["192.168.30.1"]
        netmask   = 24
      }
    }
    

    ここで重要なのは、

    Terraform上でも
    「L2で分け、L3で束ねる」という思想がそのまま表現される

    という点です。


    SEG(概念例)

    resource "sakuracloud_service_endpoint" "seg" {
      name      = "seg-main"
      switch_id = sakuracloud_switch.public_app.id
    
      services = [
        "container-registry",
        "object-storage",
        "apprun-dedicated-control-plane",
      ]
    }
    

    ※実際の属性はproviderバージョンにより変更される可能性があります。


    6. AWSとの違い

    観点AWSさくら
    セグメント自動生成手動L2作成
    サービス接続VPC EndpointSEG
    NAT専用VPCルータ内蔵
    思想抽象化明示的設計

    さくらは「分かりやすい」代わりに、
    自分で理解して組む責任がある

    しかし一度理解すれば、
    構造は極めてシンプルです。


    設計原則まとめ

    • L2で役割ごとに分離する
    • L3で境界を制御する
    • SEGでマネージドサービスへ閉域接続する
    • DBは絶対にグローバル公開しない
    • AppRun専有型はSEG前提で設計する

    よくある質問(FAQ)

    Q. SEGは必須ですか?

    AppRun専有型で閉域構成を組むなら必須です。


    Q. SEGとNATの違いは?

    NATはインターネット経由。
    SEGは閉域接続。


    Q. L2とL3の違いが曖昧です。

    L2は同一セグメント内通信。
    L3は異なるセグメント間のルーティングです。


    まとめ

    さくらのクラウドでモダンアーキテクチャを組むなら、

    L2・L3・SEG

    この3点を理解することが最重要。

    ここを押さえれば、
    AppRun × VPC構成で迷うことはありません。


    次回は、

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

    を解説します。

    閉域ネットワークとCI/CDをどう両立させるか。
    ここが実運用の核心です。