環境
環境機能は、バックエンド全体にGitのようなブランチングを提供します。各環境はアプリケーションの完全に分離されたコピーで、独自のデータベース、APIスキーマ、ロール、ファイルプロバイダー、ゲートウェイルート、セキュリティ設定を含み、本番データに影響を与えずに開発、テスト、変更のステージングが可能です。
すべてのプロジェクトは単一のmaster環境から始まります。そこから、既存の環境からデータベーススキーマ(およびオプションでデータ)を継承する新しい環境をブランチできます。各ブランチは独立して動作し、1つの環境で行った変更は明示的にマージするまで他に伝播しません。
- 環境の分離: 各環境には独自のPostgreSQLデータベースがあり、ブランチ間の完全なデータ分離を保証します。
- ブランチモード: 新しい環境を作成する際、Full(スキーマ+データ)またはSystem(スキーマのみ)のクローン戦略を選択します。
- 設定のコピー: ファイルストレージプロバイダー、ゲートウェイルート、セキュリティ設定、環境変数はブランチ時にオプションでソース環境からコピーできます。
- ステータスライフサイクル: 環境は、競合する操作を防ぐために定義された状態を遷移します —
active、branching、merging、error、archived。 - 親子関係: 環境はdiffおよびmerge操作のための系譜を追跡するツリー構造を維持します。
- Schema Diff: 前方のみのdiffセマンティクスを使用して、任意の2つの環境のデータベーススキーマを比較します。 Environment Diff を参照。
- Merge: 自動バックアップ、選択的変更適用(cherry-pick)、トランザクションDDLで、1つの環境から別の環境にスキーマ変更を適用します。 Environment Merge を参照。
- バックアップ: S3に保存された自動マージ前バックアップと手動バックアップで、削除された環境を含む任意のターゲット環境に復元可能。 Backups を参照。
- マイグレーション履歴: 各マイグレーションを適用したユーザー、タイムスタンプ、適用された特定の変更を含む、すべてのマージ操作の完全な監査証跡。
環境スコープ
Section titled “環境スコープ”すべてのバックエンドリソースは、現在選択されている環境にスコープされます。上部ナビゲーションバーの環境セレクターで環境を切り替えると、以下のリソースがその環境の状態を反映します:
| リソース | 環境ごとのスコープ |
|---|---|
| データベーステーブルとスキーマ | はい |
| API Explorer (GraphQL) | はい |
| SQL Playground | はい |
| ロールベースアクセス | はい |
| ファイルストレージプロバイダー | はい |
| 認証プロバイダー | はい |
| API Keys | はい |
| カスタムAPI Gatewayルート | はい |
| セキュリティ設定 (CORS, Rate Limits) | はい |
| 環境変数 | はい |
| 統合 | はい |
注: 環境の切り替えは完全なコンテキストリロードをトリガーします。environmentコンテキストは、すべてのリクエストが正しいデータベースと設定に対して解決されるように、プラットフォーム全体のバックエンドサービスに伝播されます。
セキュリティと分離
Section titled “セキュリティと分離”環境システムは、開発段階間でエンタープライズグレードの分離を提供するように設計されています:
- ストレージ分離: 各環境は専用のデータベースでサポートされています。これにより、開発環境のバグやデータ操作が本番データに影響を与えることはありません。
- 設定スコープ: APIキーからセキュリティポリシーまで、すべての設定は環境ごとに独立して管理されます。「Staging」でCORSポリシーを変更しても「Production」には影響しません。
- プラットフォーム全体のコンテキスト: 現在の環境は自動的にプラットフォーム全体に伝播されます。ファイルを閲覧、SQLクエリを実行、API呼び出しを行う場合でも、Archie Coreは正しい環境のリソースと対話していることを保証します。