移行を検証します

動作、セキュリティ、パフォーマンス、可観測性、およびロールバック・ゲートが通過した後にのみトラフィックを移動します。

カットオーバーの前に、次の検証ステップに従います。

  1. 取得されたイベントをリプレイし、予想される出力、エラー、ステータス・コード、ヘッダー、ボディ・スキーマ、オブジェクト・メタデータ、ダウンストリーム書込み、副作用、ログおよびアラーム動作を比較します。
  2. p95/p99期間、最大期間、メモリー・ヘッドルーム、コールド・スタート・センシティブ・パス、ピーク同時実行性、バックログまたはキュー経過、再試行ストーム、ダウンストリーム・レート制限および容量症状をカバーするロードおよび障害テストを実行します。
  3. 不正な形式のペイロード、重複イベント、ポイズン・メッセージ、ダウンストリーム使用不可、パーミッション拒否、シークレット・ローテーション、ネットワーク障害、タイムアウト動作、ループ防止およびロールバック条件をテストします。

OCI関数へのカットオーバー

動作、セキュリティ、パフォーマンス、可観測性、およびロールバック・ゲートが通過した後にのみトラフィックを移動します。

OCI関数に切り替えるには、次のステップに従います:

  1. 機能、パフォーマンス、セキュリティおよび運用検証のゲートが経過したことを確認します。
  2. カットオーバー所有者、ロールバック所有者、成功基準、ロールバック・トリガーおよび予想されるリカバリ時間を記録します。
  3. カットオーバー・ウィンドウ中に無関係なアプリケーション変更を確定します。
  4. 可能な場合は、ワークロードの制限された監視可能な部分をOCI関数にルーティングします。
  5. ビジネス出力、エラー、タイムアウト、レイテンシ、スロットル、バックログ、ダウンストリームの障害を監視します。
  6. 合意された観察期間が経過した後にのみトラフィックを増やします。
  7. 必要な成功基準が失敗した場合は、カットオーバーを停止し、ロールバック計画を実行します。
  8. アプリケーションおよび操作の所有者が本番結果を受け入れる後にのみ、次の移行ウェーブを開始します。

パーセンテージベースのルーティングが使用できない場合は、トリガー、バケット、キュー、リージョンまたは別の制御されたワークロード境界別に初期エクスポージャを制限します。

移行後に検証

移行されたワークロードが、そのアーキテクチャ、動作、パフォーマンス、セキュリティおよび操作要件を満たしていることを確認します。

移行後に検証するには、次のステップに従います。

  1. ワークロード・ロール、ソース・インベントリ、ターゲット・アーキテクチャ、代替策、リスク評価、サービス制限、およびターゲット起動動作について説明します。
  2. トリガー、依存性、セキュリティ、ネットワーキングおよび操作インベントリは、レビュー担当者がターゲットの決定を再現するのに十分です。
  3. 取得されたイベントは、予想されるステータス・コード、ヘッダー、ボディ・スキーマ、オブジェクト・メタデータ、ダウンストリーム書込み、副作用、ログおよびエラー動作を生成します。
  4. 各トリガーには、ペイロード形式、再試行、失敗、順序付け、バッチ動作、冪等性、重複配信、デッド文字または失敗ルーティング、および該当する場合はポイズン・メッセージのテストがあります。
  5. p95/p99期間、最大期間、メモリー・ヘッドルーム、コールド・スタート・センシティブ・パス、ピーク同時実行性、バックログまたはキュー経過時間、タイムアウト数、スロットルまたは429動作、ダウンストリーム・レート制限はワークロード要件を満たします。
  6. 同時実行性制御は、ダウンストリーム・システムを保護し、再試行の嵐や無制限のバックログ増加を回避します。
  7. 許可されたサービス・コールは成功し、拒否されたパスは安全に失敗します。シークレットは、ソース・コード、イメージ、ログ、環境ダンプ、CI出力、スタック・トレースまたはエラー・メッセージには存在しません。
  8. 必要なプライベートおよび外部の依存関係は、承認されたネットワーク・パスを介して到達可能です。トラフィックが移動する前に、ログ、メトリック、アラーム、ダッシュボード、トレース、ランブック、ロールバック・トリガー、所有者、ステップ、予想されるリカバリ時間および最終承認が完了します。

一般的な移行の問題および緩和について

これらの一般的な移行設計、統合および操作の失敗を回避します。
  • すべてのラムダ関数を同じように処理: ターゲットを選択する前に、各関数をロール、トリガー、依存性、実行時動作、トラフィック・プロファイルおよび操作ニーズ別に分類します。
  • OCI関数の早期選択: コードのリファクタ前に、ペイロード、タイムアウト、メモリー、依存性、呼出し、同時実行性、ネットワーキングおよび統合適合性を検証します。
  • イベント・ペイロードが同じ場合: 本番トリガーを接続する前に、OCIハンドラ・アダプタを構築し、取得したソース・イベントをリプレイします。
  • レイヤーおよびネイティブ依存性の無視: OCIファンクション・イメージまたは共有ベース・イメージへの依存性をパッケージ化し、イメージ・サイズ、起動、ネイティブ・ライブラリおよび依存バージョンをテストします。
  • IAM変換の幅が広すぎます: 観測されたランタイム・アクションを、ハッピー・パス・アクセスだけでなく、最小権限のOCIポリシーにマップし、拒否されたパスをテストします。
  • キューまたはストリームのセマンティクスは異なります: 明示的なべき等性、再試行、部分的な障害、障害の宛先、順序付けおよびバックプレッシャの処理を設計します。
  • オブジェクト・イベントによりループが発生: 個別の入出力接頭辞またはフィルタを使用し、作成、更新、削除、再試行、複製およびループ防止の動作を検証します。
  • 操作の延期: 本番トラフィックが移動する前に、ログ、メトリック、アラーム、ダッシュボード、ランブック、障害テストおよびロールバック・チェックを有効にします。