ObjectOS

アーキテクチャ

実際に何が動いているのか — 導入を検討しているエンジニアのために。

アーキテクチャ

ObjectOS をデプロイしたときにマシン上で何が動くのか、どのデータがネットワークの外へ出て、どのデータが出ないのかを実践的な視点で解説します。

メンタルモデルは、薄い 2 つのレイヤーです。

  1. メタデータ — objects / views / actions / flows / agents のパッケージ。多くは AI Builder がサンドボックス化されたツール API に対して記述します。手作業で編集される場合もありますが、常にバージョン管理され監査されます。
  2. 単一の Node.js ランタイム が、そのメタデータを解釈して動作するアプリケーション — REST API、Console UI、権限、ジョブ、AI ツール — に変換します。これらはすべて 1 つのプロセス内で、あなたのデータベースと通信しながら動作します。

コード生成のステップはなく、「ユーザーが望むものを記述した」状態と「それが稼働している」状態の間にデプロイパイプラインはありません。ランタイムは HITL の承認後に新しいメタデータをホットロードします。

デプロイするもの

ObjectOS インスタンスごとに 1 つの Node.js プロセス。それだけです。

┌─────────────────────────────────────────────────────┐
│                  ObjectOS process                   │
│  ┌───────────────────────────────────────────────┐  │
│  │   HTTP dispatcher  (/ · /api · /_console …)    │  │
│  ├───────────────────────────────────────────────┤  │
│  │   Per-project ObjectKernel (LRU cached)       │  │
│  │   ├─ Auth (Better Auth)                       │  │
│  │   ├─ Security (RBAC + row-level + field)      │  │
│  │   ├─ ObjectQL (data engine, generates SQL)    │  │
│  │   ├─ REST API generator                       │  │
│  │   └─ Capabilities loaded per artifact         │  │
│  │      (audit, storage, jobs, queue, AI …)      │  │
│  └───────────────────────────────────────────────┘  │
└──────────┬──────────────────────────────────────────┘


   Your business database
   (Postgres / MySQL / SQLite / Turso / MongoDB)

複雑さの度合いは、静的リンクされた単一バイナリ程度です。サイドカーも、Kafka も、別途のキャッシュレイヤーも必要ありません。必要になったときに追加すればよく、初日からそのコストを払う必要はありません。

データはどこにあるのか

データ保管場所ネットワークの外へ出るか?
業務レコードあなたのデータベースいいえ
ユーザーアカウント、セッション、OAuth トークンあなたのデータベースいいえ
監査ログあなたのデータベースいいえ
設定、API キー、シークレットあなたのデータベース / シークレットマネージャーいいえ
アップロードされたファイルあなたのディスク、または S3/R2 バケットいいえ
コンパイル済みアプリ定義(objectstack.jsonディスク上のファイル、またはコントロールプレーンから取得任意

ObjectOS はホームへ通信しません。テレメトリーもライセンスチェックもありません。インターネットアクセスを完全に遮断しても、無期限に動作し続けます。Air-gapped を参照してください。

リクエストはどのように処理されるか

1. Ingress / TLS termination     (your load balancer)
2. HTTP dispatcher               (security headers, request id)
3. Hostname → project resolution (cached, TTL configurable)
4. Get or build per-project kernel from LRU
5. AuthPlugin    — session cookie, bearer token, or API key
6. SecurityPlugin — RBAC + row-level + field-level checks
7. Route handler — generated REST, declarative action, or custom
8. Data driver   — ObjectQL compiles to SQL / Mongo query
9. Response with X-Request-Id propagated

ステップ 4〜8 は、カーネルがウォームな状態であれば通常 5ms 未満で実行されます。

3 つのレイヤー(統合する場合のみ重要)

ほとんどの顧客は ObjectOS のみをデプロイします。残りの 2 つのレイヤーは、アーティファクトがどこから来るのかを知りたい場合に存在します。

レイヤー内容実行される場所
Framework@objectstack/*オープンソースのカーネル、ObjectQL、プラグイン、ドライバーnpm — ビルド時に取り込まれる
Control plane(任意)コンパイル済み objectstack.json アーティファクトを公開する。ホスティングされた ObjectStack Cloud を利用するか、自前で運用するか、まったく使わないかを選べるあなたの CI、当社のクラウド、またはあなたのノート PC
ObjectOSあなたが運用するランタイムあなたのインフラ

単一のアプリを出荷するだけなら、コントロールプレーンは不要です。CI で objectstack.config.ts → dist/objectstack.json をコンパイルし、その JSON をイメージに含めて出荷します。多数のテナントやアプリを抱える社内アプリ marketplace を運用する場合は、コントロールプレーンがカタログの置き場所になります。

ブートモード

モード利用シーン方法
Standalone単一アプリ、開発、評価、エアギャップ環境、ほとんどの本番デプロイpnpm dev、またはディスク上の dist/objectstack.json を実行
File-backed外部管理のアーティファクトを使う本番環境OS_ARTIFACT_PATH=/path/to/objectstack.json を設定
Cloud-connectedコントロールプレーンから供給されるマルチテナント / マルチアプリのデプロイOS_CLOUD_URL + OS_CLOUD_API_KEY を設定

モードは環境変数から自動検出されます。

パフォーマンス特性

指標数値
コールドスタート(プロセス起動からトラフィック受付可能まで)約 1 秒
カーネルごとのウォームアップ(プロジェクトへの最初のリクエスト)capabilities に応じて 50〜300ms
ウォームリクエストのレイテンシ(REST 経由の CRUD)通常 10ms 未満 + データベースのレイテンシ
メモリフットプリントベース約 150MB、アクティブなプロジェクトカーネルごとに約 10〜30MB
インスタンスあたりの同時プロジェクト数OS_KERNEL_CACHE_SIZE(デフォルト 32)によって制限される

なぜこの形なのか

  • サイドカーなしの単一 Node プロセスdocker run に収まり、systemd ユニットに収まり、Lambda のような環境に収まる。
  • プロジェクトごとのカーネル、LRU キャッシュ → 1 つのインスタンスで多数の小さなアプリを、リクエストごとにウォームアップコストを払うことなく処理できる。
  • 宣言されたメタデータの上に生成される API → CI にコード生成のステップはなく、公開すべきクライアント SDK もない。API は構造的にあなたのデータモデルと一致する。
  • すべての capabilities は任意のプラグイン → イメージサイズは実際に使うものに応じてスケールする。

次に読むもの

On this page