- メタのデータ収集システム, 当社のエンジニアリング チームがソーシャル グラフの現在のスナップショットに使用するもの, 最近大規模な見直しが行われた, um seine Zuverlässigkeit im großen Maßstab zu verbessern.
- レガシー システムから新しいアーキテクチャに移行するには、データ収集システム全体の大規模な移行が必要でした.
- Wir teilen die Lösungen und Strategien, 大規模なシステム移行を成功させた, sowie die Schlüsselfaktoren, die unsere Architekturentscheidungen beeinflusst haben.
メタで, 私たちの 社会図 のいずれかによって駆動されます。 größte MySQL-Bereitstellungen der Welt. 当社のデータ収集システムは、毎日、数ペタバイトのソーシャル グラフ データを MySQL からデータ ウェアハウスに段階的に収集します。, 分析について, レポートと下流のデータ製品, 会社全体のチームをタスクに使用する, 日々の意思決定から機械学習モデルのトレーニングや製品開発に至るまで.
最近、データ収集システムのアーキテクチャを改訂しました, 効率と信頼性を大幅に向上させる. 新しいアーキテクチャは顧客所有のパイプラインから脱却します, 小規模では効果的に機能した, よりシンプルな自己管理型データ ウェアハウス サービスを目指して, ハイパースケール分野でも依然として効率的に機能します.
我々は持っています 100 % ワークロードは正常に変換され、古いシステムは完全に廃止されました. しかし、この規模のデータ キャプチャ システムの移行は大きな課題でした. いくつかの主要なソリューションと戦略がこれに貢献しています, このエリアでの移行が成功したことを示します.
移行の課題
私たちのビジネスが成長するにつれて, データ到着時間の要件がますます厳しくなっているため、従来のデータ収集システムに不安定の兆候が見られました. 私たちは知っていました, 新しいシステムに移行する必要があることを. しかし、私たちも知っていました, これは単なる挑戦以上の意味があることを, どうすれば確実にできるか, すべての注文が適切に実行されること シームレスに移行されました だけでなく、 大規模な移行を自分で実行する方法.
シームレスな移行を確保する
シームレスな移行を確実に行うには, 数千のジョブの移行ライフサイクルを効果的に追跡し、堅牢に展開する必要がありました。- ロールバック制御を設定します, 問題に対処する, 移行プロセス中に発生する可能性がある.
移行ライフサイクル
私たちの最初のステップはこれでした, 移行ジョブの明確なライフサイクルを確立する, プロセス全体を通じてデータの整合性と運用の信頼性を確保する.
![写真[1]-Windows 7、8、10、11 向けのメタ スケールでのデータ インジェスト システムの移行 - Winpcsoft.com](https://winpcsoft.com/wp-content/plugins/wp-fastest-cache-premium/pro/images/blank.gif)
各ジョブの正確性をチェックし、定義された成功基準を満たしている必要がありました。, 移行ライフサイクルの次のステップに進む前に:
- データ品質に問題はありません. 旧システムと新システムで提供されるデータに違いはありません. 私たちはこれをチェックしています, データの行数とチェックサムの両方を比較することで、2 つのシステム間の完全な一貫性を確保します。.
- 着陸待ち時間の退行は観察されない. 新しいシステムによって提供されるデータは、着陸遅延が改善されているか、少なくとも古いシステムのパフォーマンスと同等である必要があります。.
- リソース使用量の低下は観察されません. 熊手- 新しいシステムで実行されているジョブのメモリ使用量は改善されるか、少なくとも古いシステムと同等である必要があります。.
- 重要なテーブルの移行については、追加の移行基準を定義し、チームと合意しました。, サービスに依存した人.
段階 1: シャドウフェーズ
ライフサイクルの最初のステップでは、実稼働前環境でシャドウ ジョブをセットアップします。, 新しいシステムを通じて提供されます. これは本質的に本番環境の現実的なテストです, 各シャドウ ジョブは実稼働ジョブと同じソースを消費します。, ただし、データは別のテーブルに, いわゆるシャドウテーブル, 配達します. このセットアップはそれを助けることができます, 問題を明らかにする, 隔離された場所を提供しながら、新しいシステムを実際の運用データと動作にさらすため, 結果を確認し、修正をすぐに提供できる場所.
実稼働ジョブとシャドウ ジョブ間の行数とチェックサムの不一致を継続的に監視しました。. ズレが生じた場合, 私たちは根本原因をすぐに調査しました, 実稼働前環境で修正をデプロイし、保護する, 矛盾が修正されたこと.
このステップでは熊手も使用します- シャドウ ジョブのストレージ クォータが測定されました, 確実にする, 実稼働環境に十分なリソースがあること, 続ける前に.
シャドウ ジョブが上記の基準を満たしている場合, 実稼働環境に移行され、セキュリティが確保されました, ジョブが本番環境で確実に実行し続けることができること, 次のステップに進む前に.
段階 2: 逆シャドウフェーズ
本番ジョブとシャドウ ジョブが本番環境で確実に実行されると、, リバースシャドウフェーズから始めました. このフェーズでは、シャドウ ジョブ データが本番テーブルに書き込まれました。, 効果的にシャドウ ジョブを新しい本番ジョブにする. その間に、製造オーダー データがシャドウ テーブルに書き込まれます。, そのため、元の製造オーダーはシャドウオーダーとして機能しました。.
このアプローチには 2 つの重要な利点がありました. まず、打ち上げ後も継続的なデータ品質信号を受信し続けることができます。, 2 つのシステムの結果を比較し続けることによって. 第 2 に、不一致が特定された場合、すぐにロールバックできました。, 古いシステムジョブを再作成したり設定したりする必要はありません.
段階 3: 移行のクリーンアップ
両方のジョブから提供されるデータの監視と比較を継続しました. Wenn keine Unstimmigkeiten festgestellt wurden, 現在古いシステムで実行されているシャドウ ジョブが削除されました. その後、新しいシステムがタスクを引き継ぎ、本番ジョブ中にデータを提供し続けました。, これにより移行が完了しました.
カスタムデータ品質分析ツール
また、包括的なデバッグ ツールのセットも開発しました。, um Teammitgliedern dabei zu helfen, 問題点, 移行中に発生する可能性がある, 効率的に特定して解決する.
データ品質分析ツールを開発しました, 確実にする, エッジケースが複数の注文にわたって効果的に記録され、処理されること. ランドされたシャドウ テーブル パーティションごとに、システムは対応する本番テーブル パーティションを読み取り、行数とチェックサムの両方を比較します。. すべての逸脱が記録されました ダイビングリアルタイム分析のためのメタスデータ管理システム. データ品質分析ツールは Scuba のログを 1 時間ごとに読み取ります, 実施されたクエリ, サンプル行を特定するには, それがミスマッチを引き起こした, 詳細なデバッグ情報を Scuba に記録しました。. このプロセスにより、チームメンバーは, 問題の根本原因を迅速に特定して評価する, すでに知られており修正されているかどうか.
リリース検証プロセスの一環として、移行後も同じデータ品質分析ツールが引き続き使用されます。.
ロールアウトとロールバックの処理
新旧両方のデータ キャプチャ システムは変更データ キャプチャを使用しました (CDC), ターゲットテーブルにデータを段階的に追加するには. 各データ インジェスト ジョブには、ソース データベースの完全なダンプ用の独自の内部テーブルがあります。 (完全なダンプ), ソースデータベースへの変更を記録するための内部テーブル (デルタ) データ顧客が使用するターゲットテーブル. ジョブエンティティに関するすべての情報, テーブル名とテーブルスキーマを含む, 中央管理サービスによって保存および管理されます.
![写真[2]-Windows 7、8、10、11 向けのメタ スケールでのデータ インジェスト システムの移行 - Winpcsoft.com](https://winpcsoft.com/wp-content/plugins/wp-fastest-cache-premium/pro/images/blank.gif)
CDCプロセスなので, システムによって生成されたデータは再利用されます, 新しいデータを生成するには. つまり、, 以前の着陸日に問題が発生した場合, 問題のあるデータは新しい着陸データに転送されます. 移行後に問題が発生した場合, ロールバックする必要があります, 着陸したデータを修復し、出血を止めるため.
リスクを軽減するには, 私たちは 2 つのソリューションに焦点を当てました:
- 初期のシグナル, 問題のあるデータが顧客の手に渡る前に.
- 寝返り時に出血を素早く止める方法.
展開後の最初のシグナル
それを待つ代わりに, データ利用者が問題のあるデータの問題を発見できるようにする, 私たちは初期の信号を受信しました, 私たちを報告する人, 移行が成功したかどうか. すでに述べたように, ロールアウト後、移行はリバース シャドウ フェーズに入りました. これはつまり、, シャドウ ジョブ データが実稼働テーブルに書き込まれていること, 効果的にシャドウ ジョブを新しい本番ジョブにする. そして、製造オーダーのデータがシャドウテーブルに書き込まれました, 元の製造オーダーがシャドウオーダーとして機能するようになります。.
早い信号を得るには, 両方の生産にバックフィルを用意しています- シャドージョブと同様に. バックフィル結果が引き続き一致する場合, これはつまり, 移行が成功したこと. 結果が一致しない場合, ジョブはすぐにリセットされ、データ利用者は影響を受けません。.
ロールバック中の不良データの拡散を迅速に阻止
すでに述べたように, CDC プロセスの機能です, 問題のあるデータを新しく生成されたデータに転送できること. 不良データの拡散を迅速に阻止することで、移行がより堅牢になるだけではありません, だけでなく、移行完了後の信頼性も向上します.
リバース シャドウ フェーズ中に特定のパーティションでデータ品質の問題が検出された場合, このパーティションはメタデータでデータ品質が低いパーティションとしてマークされています. このパーティションがデルタ パーティションの場合, 新しいデータは受信されなくなり、チーム メンバーにアラートが送信されます。. このパーティションがターゲット パーティションであった場合, 代わりに、システムは古いパーティションを選択し、それをより多くの差分とマージします。.
![写真[3]-Windows 7、8、10、11 向けのメタ スケールでのデータ インジェスト システムの移行 - Winpcsoft.com](https://winpcsoft.com/wp-content/plugins/wp-fastest-cache-premium/pro/images/blank.gif)
これにより、誤ったデータの拡散を迅速に阻止することができました。. ロールバックの場合、メタデータをすばやくクエリできます。, すべてのパーティションを見つけるには, データ品質が低いとマークされたもの, これを埋め戻しで修正します.
大規模な移行をどのように実行したか
少量のジョブの移行に成功した後, 私たちは自信がありました, 完全な移行を行うことを. 課題は大きく 2 つの領域に分けられます:
- 多数のジョブを自動的に監視および移行する方法. (この課題は膨大な量の仕事によって引き起こされます, 移行する必要があるもの, さらに悪化。)
- 限られた容量で効果的なシャドウ テストを実施する方法.
自動ツールによる監視
何万もの記録ジョブを移行する必要があったため、, 私たちはツールを開発しました, プロセス全体を自動化し、摩擦損失を最小限に抑えた企業.
このような大規模なジョブ セットでシャドウ テストを実行し、エッジ ケースを処理するには、堅牢な自動化と徹底的な検証が必要です, 信頼性と正確性を確保するために.
当社は明確な移行ジョブのライフサイクルとジョブの適格基準を確立しているため、, システムは継続的にジョブ ステータス信号を Scuba に送信しました。, ライフサイクルの適格性基準と、移行ライフサイクルにおけるジョブの現在の段階に関するデータが含まれます。. 外部移行ツールを開発しました, 各ジョブの信号を継続的に監視し、移行ライフサイクルのフェーズ間で自動的にジョブの電源を投入します。- またはダウングレードされた, に応じて, 移行基準を満たしているかどうか (あるいは満たされなくなった). システムにはダッシュボードもあります- ジョブレベルが作成されました, そのため、エンジニアは移行全体の進行状況を迅速に追跡し、個々のジョブを監視およびデバッグできます。.
限られた容量での計画
移行容量が限られていたため, すべてのシャドウ ジョブを同時に実行することはできませんでした. 代わりに、ジョブをバッチで移行しました. 移行効率はこれに大きく依存します, 各移行バッチでジョブがどのように選択されるか.
処理量など様々な特性に合わせたご注文を承っております, 優先的なケースと特別なケースの分類. 技術チームがそれに取り組んでいました, 確保する, 環境が適切に準備されていること, バッチが作成される前に. たとえば、選択基準を設定します。, 既知の問題があるジョブの場合, まだ解決する必要があること, したがって、二重の問題によって引き起こされるノイズを軽減します。. 注文もビジネス ニーズとチームに基づいて優先順位付けされました, サービスに依存した人, 移行前に通知されました.
既知の問題を伴う新しいシャドウ ジョブの作成を回避しました, これらの問題が解決されるまで. 問題が検出されたとき, 影響を受ける可能性のあるすべてのジョブを移行リストから削除し、保留しました。, 解決策が見つかるまで.
前述したように, システムの CDC 設計により、新しいジョブの最初のスナップショットはフル ダンプ経由で取得されました。, 通常は遅くて高価です. 着陸したスナップショットでデータ品質の問題が見つかった場合, 別の完全なダンプもトリガーしました, 修正されたスナップショットを取得するには, 根本的なバグが修正された後. シャドウジョブの作成, 既知の問題がまだ存在している間, したがって、多くの不要なフルダンプがトリガーされることになります, 雇用の創出とデータ品質の回復の両方において. こうした雇用の創出を回避することで、, 大量の追加のフルダンプ作業を回避し、移行効率を向上させました。. 創造的なソリューションも開発しました, スナップショットパーティションの再利用など, 当初は古いシステムによってスナップショットとして提供されていました, ダンプ全体の負荷を軽減するため.
謝辞
チームメンバー全員とリーダーシップに感謝します, Meta でのこのプロジェクトの成功に貢献した人.
