技術解説
管理する仕組みと、実際に処理・通信する仕組みを分け、それぞれの責任範囲を明確にしています。
制御プレーンとデータプレーン
HeteroCloudの制御プレーンは、利用者、組織、プロジェクト、IAM、サービスの設定と状態、監査記録を管理します。Flash・Flow・Syouyuなどのプロバイダーは、実際のコンテナ実行・通信・保存を担当します。
コンソールで設定を変更すると、APIが権限を確認し、希望する状態を保存します。ワーカーがプロバイダーへ変更を伝え、実際の状態を継続的に照合します。そのため、更新要求の受付と、実際に利用できる状態への移行には時間差があります。
| 層 | 主な責任 |
|---|---|
| コンソール / CLI | 設定操作と状態・使用量の確認 |
| HeteroCloud API / IAM | 本人確認、組織境界、操作権限、設定と監査 |
| サービスプロバイダー | コンテナ、通信セッション、オブジェクトの実処理 |
| Kubernetes / HeteroNet | ワークロード配置、ノード接続、到達経路 |
ログインとアクセス制御
ブラウザーのログインはOpenID ConnectとPKCEを使ってIDプロバイダーへ接続します。ブラウザーには、管理基盤の秘密鍵やサービス内部の管理用認証情報を渡しません。
IAMは組織の境界を確認した上でポリシーを評価します。許可がない操作は拒否し、明示的な拒否を許可より優先します。CLIのデバイスコード認証では、ブラウザーでログインして対象組織へのアクセスを承認します。
認可判定の一部はLeanによる形式化とRustのテストで検証しています。これはシステム全体に脆弱性がないことや、すべての実行環境の安全性を証明するものではありません。
Flashの実行とコールドスタート
FlashはKubernetes上でコンテナを管理します。通常のコンテナ実行ではgVisorによる分離を利用します。CPU・メモリなどの要求量や、実行環境が対応する機能に応じて配置されます。
最小レプリカ数を0にできる構成では、停止状態から起動する際に待ち時間が発生します。これがコールドスタートです。常時起動するレプリカが必要な場合は最小数を1以上に設定しますが、障害や再配置による中断までなくなるわけではありません。
GPU実行の可否や分離方式は、CPUのみの実行と同一とは限りません。選べるGPUの種類とアクセス範囲、利用上限はコンソールの表示を確認してください。
WireGuard・NAT越え・レイジー接続
HeteroNetの制御プレーンは登録された端末や到達候補を管理し、データプレーンがWireGuardでパケットを運びます。直接到達できる経路を優先し、必要に応じて中継を利用します。
レイジー接続では、通信需要を検知して必要なピアとの接続を用意します。常時接続する相手を絞る設計ですが、初回通信の経路確立には待ち時間が生じることがあります。
端末が増えたときの性能は、同時通信する組み合わせ、NATの条件、中継比率、制御プレーンの構成にも依存します。このページでは、特定の台数や計算量を性能保証として提示しません。
ストレージとシークレット
SyouyuはバケットとS3互換APIを提供し、組織・プロジェクト・サービス単位の権限で保存先を管理します。データの複製は可用性のための仕組みであり、利用者が誤って削除したデータを戻すためのバックアップとは別です。
シークレットは専用の管理基盤に保存し、Flashの設定から必要な値を環境変数として接続します。アプリケーション自身が値をログへ出したり、外部へ送信したりしないように扱う必要があります。
使用量と上限
CPU・メモリなどの実行時間、通信量、保存容量は異なる指標です。CPU時間はCPU資源の使用、メモリ時間はメモリ資源と時間の積、通信量は転送したバイト数、保存容量は保存されているデータ量として区別します。集計期間・単位は各画面とAPIの定義を確認してください。
メトリクスの取得には遅延や失敗があり得ます。取得できなかった値を実際の使用量0と同じ意味には扱わず、計測時刻と取得状態も確認します。コスト管理の値を、個別に案内された料金条件のない請求額として解釈しないでください。
宣言的な構成と検証
インフラやサービスの構成は、Terraform、Ansible、Helm、Argo CDなどを使って管理します。設定と実際の状態を比較し、変更内容をリポジトリで確認できる形にします。
単体テスト、契約の検証、実環境での接続確認など、対象に応じた検証を組み合わせます。ソースコードと実装状況は公開リポジトリで確認できます。