サンドボックスとテスト環境
1)なぜ私達は選ばれた輪郭を必要とします
サンドボックスとテスト環境では、次のことができます:- 生産を危険にさらすことなく、仮説と統合を迅速にテストします。
- フィードバックサイクルを高速化します(PR→プレビューリンク分)。
- 安全なコピーでエラーやインシデントを再現します。
- コントラクト、インテグレーション、ロード、カオステストの実行
- チームを訓練し、「運動場」でパートナーを装備して下さい。
主な原則:分離、構成パリティ、テスト決定、データセキュリティ、デフォルトの可視性。
2)環境の階層とその目的
ローカル(開発)-ローカル開発:Docker Compose/Testcontainers、軽量プロバイダシミュレータ。
サンドボックスは、偽のデータと実際のプロトコルを備えた外部統合(PSP、 KYC、ゲームアグリゲーター)のためのスタンドです。
QA/テスト-統合とe2eテスト、安定したデータ修正、回帰。
「ステージ/プリプロッド」(Stage/Pre-Prod)-アウトラインができるだけ本番に近い(構成/制限/トポロジ)。
一時的なプレビュー-環境「on PR」(数時間/日の寿命)、オフラインリソースとURL、マージ/クローズ後の自動解体。
パリティルールは「Test/Stage ≈ Prodの設定、ポリシー、インフラストラクチャの依存関係」であり、違いは秘密と限界に限定されています。
3)サンドボックスの種類
1.プロバイダサンドボックス:外部PSP/KYC/ゲームはテストエンドポイントを提供します。シミュレータの層を追加して、まれで誤ったケース(タイムアウト、5xx、不安定な署名)をシミュレートします。
2.機能サンドボックス:ドメインサービス(支払い、ボーナス、成果)の自律的インスタンス+修正。
3.トレーニング/デモサンドボックス:DevPortal、キー、クォータ、レート制限を持つパートナーのためのAPI「ショーケース」。
4)契約、シミュレータ、モキ
契約テスト(協定/Buf):消費者/プロバイダはスキームに同意します。互換性のない変更はCIでブロックされます。
プロバイダシミュレータ:エッジケース(ダブルコルバック、クロックドリフト、期限切れのタイムスタンプ付きHMACシグネチャ)を再生します。
イベント修正(Kafka/NATS): ケースライブラリの支払い。認可された'、'kyc。検証された'、'ゲーム。ラウンド。「落ち着いた」
障害注入:制御遅延、ドロップレート、オーダーメッセージ。
webhooks sandboxでのHMAC署名の例:
X-Timestamp: 1730812800
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))
5)テストデータ、GDPR/PCIおよび匿名化
本物のPII/PANオフプロダクションを使用しないでください。
匿名化:合成生成+敏感なフィールドのトークン化;デモアカウントのホワイトリストのみ。
データファクトリ:予測可能なIDとステータスを持つユーザー/トランザクション/セッションファクトリ。
決定論的な種子:テストランと水曜日の間の同一の修正。
保持ポリシー:プレビュー環境とテストデータベースの自動クリーニング。
6)秘密とアクセス
水曜日に別の秘密;一時的なクレジットと制限された役割。
KMS/HSMおよび回転;Gitの秘密を除外しました。
QA/段階のためのRBAC/ABAC;アクセスの監査、交渉によってだけ壊れ目ガラス。
7)非産業環境の観察可能性
ログ-マスキングとPIIなしで、構造化されています。
メトリクス遅延p50/p95/p99、エラーレート、スループット、DLQ、レトライ;
トレース(OTel): 入力リクエストからシミュレータへのエンドツーエンド'trace_id';
ダッシュボードをコードとして-ダッシュボードとアラートは、サービスの横にバージョン管理されます。
8)一時的なプレビュー環境(PRごと)
デフォルトの動作:- PR→CIはイメージを収集し、マイグレーションを生成し、Kubernetesのnamespace 'pr-
'を上げます。 - プレビューURLとテストユーザーのトークンが発行されます。
- 有効なトレーシング/メトリクス;PRを閉じると、環境が削除されます。
yaml apiVersion: v1 kind: Namespace metadata:
name: pr-4821 labels:
env: preview owner: team-payments
9)ローカル開発: 構成/Testcontainers
最小限のdocker-compose。ローカルで実行するにはyml':yaml version: "3. 9"
services:
api:
build:.
environment:
- DB_URL=postgres://postgres:postgres@db:5432/app? sslmode=disable
- KAFKA_BROKER=kafka:9092 ports: ["8080:8080"]
depends_on: [db, kafka]
db:
image: postgres:16 environment: [POSTGRES_PASSWORD=postgres]
ports: ["5432:5432"]
kafka:
image: bitnami/kafka:latest environment:
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 ports: ["9092:9092"]
テスト中の依存関係を自動的に解除するには-Testcontainersで修正を行います。
10)負荷および安定性テスト
ロードプロファイル:「トーナメント」、「支払い波」、「マスフラフ」。
KPI: RPS、 p95/p99、リソース制限(CPU/メモリ)、 TTFB、タイムツーウォレット。
カオスインジェクション:プロバイダの切断、レイテンシの増加、「フレーク」ネットワーク。
サーキットブレーカ/バックオフポリシーはステージでチェックされます。dipはDLQに移動して複製します。
11)ロールバックとリプレイポリシー
DLQからのイベントのリプレイゲートウェイ(手動/自動モード、キーによるフィルタ)。
マイグレーションベース:プレビュー/ステージでアップ/ダウンとドライランをクリアします。破壊的な変更に対する保護。
12) DevPortalとの統合
サンドボックスとプロバイダのカタログ、フィールド要件、クエリの例。
各PR/ブランチの「プレビューを開く」ボタン。SLO/SLAメトリクスウィジェット。
契約からSDKとPostman/Insomniaコレクションの生成。
13) Sandboxの周囲の保証
外部サンドボックスのWAF+IP-allowlist;
キーごとのクォータとレート制限。
個々のドメイン/サブドメイン;非アクティブなキーの自動削除。
画像の脆弱性と各ビルドへの依存性をスキャンします。
14)プロセス: 誰が使用し、どのように
開発者-ローカルおよびプレビュー、迅速なフィードバック。
QA-管理されたデータおよびシミュレータとの安定したテスト/段階。
パートナー-DevPortal、クォータ、監視機能を備えた外部サンドボックス。
SRE/Platform-負荷プロファイル、カオス、SLO検証。
15)サンドボックス起動チェックリスト
- レジストリの契約、シミュレータは成功/エラー/タイムアウト/繰り返しをカバーします。
- テストデータ合成、決定論的、PII/PANなし。
- KMSからの秘密、制限された役割、監査可能。
- メトリック/トレイル/ログが利用可能です。エラー予算とDLQへのアラート。
- 一時的なプレビューはPRで上がり、自動解体されます。
- ロードプロファイルとカオスシナリオはコードによって記述されます。
- Stageでマイグレーションポリシーとイベントリプレイをチェック。
- DevPortalは、ガイドとクエリーコレクションを公開します。
16)実装ロードマップ
M0-M1 (MVP):ローカル環境(Compose)、基本的なPSP/KYCシミュレータ、CIの契約テスト、K8sのプレビュースペース。
M2-M3:据え付け品のカタログ、コードとしてダッシュボード、DLQ+手動再生、負荷プロフィール。
M4-M6:キー/クォータ、カオスインフラストラクチャ、SDK autogen、「並行して2つのバージョン」移行ポリシーを備えた本格的な外部サンドボックス。
M6+:フェイルオーバーと地理分散ステージ、テストでSLAを介したプロバイダのスマートなルーティング、DevPortalの自動トレーニングスクリプト。
17)環境成熟度モデル(簡潔な)
1.基本-テスト/ステージ、手動データ、弱い分離があります。
2.高度-シミュレータ、契約テスト、観察可能性、部分的なプレビュー。
3.エキスパート-PRごとの環境、コードとしてのカオス/ロード、DevPortal、強力なセキュリティ、フルオートメーション。
簡単な結論
適切に設計されたサンドボックスとテスト環境は、配信の「エアバッグ」と「アクセラレータ」です。分離、本番環境とのパリティ、プロバイダシミュレータ、決定的なテストデータ、強力な観測性、プレビュー環境の自動化により、高速で信頼性の高いコード→チェック→リリースサイクルが提供され、回帰のリスクを低減し、プラットフォームのスケーリングを簡素化します。