「Drunk」データベース:1つのデータベース上に7つのテストサイトを作成し、それぞれに独自の増分と差分がある方法

30 Tbの生産ベースを持つ保険会社を想像してください。 それはそのような大きな鉄の倉庫にあり、非常に重いサーバーによって提供されます。 すべてが美しいです。 ここで、機能または機能の一部を作成し、戦闘ベースでテストする必要があると想像してください。 いくつかの理由でベースの一部をピンチオフすることはできません。



あなたは何をしますか? さて、従来の方法では、30〜35 TBのストレージをもう1つ(ただし、5倍安く、遅く、シンプルで、バックアップなしで)データベースを複製します。 そして、コピーで作業します。 良い計画



いや 事実、複数の開発チームがある場合(そして、この場合はその数が4から10に増えた場合)、それぞれ4から10のテストサイトが必要です。 またはそれ以上。 このようなハードウェアを購入するのは単純に非現実的です。そのため、戦闘拠点を1回複製し、それを各サーバーに個別のテスト拠点として「表示」し、すべての変更をテストサイトに保存できるソリューションが必要です。 このように:







物理ベースと同じノードに互いに分離された7つのテストサイトを展開した方法を説明します。



そうだった



30 TBの生産ベースがあり、4つの開発者グループがあり、データベースをテスト環境にコピーするたびに、各グループに30 TBが必要です。 ベースのロールバックおよび避けられないロールバックのプロセス(テスト中、開発者がブレークするとすぐに)には長い時間がかかり、会社のすべてのエンジニアを獲得します。 Storagists、バーゲン管理者、そして十分なスペースがない場合は、インフラ管理者、そしてハードウェアを購入する入札委員会が関与します。 1つのテストのプロセスは数ヶ月続きます。 プロジェクトの開始時に、開発者はテスト環境に合わせて立ち、文字通り壁に登りました。 また、セキュリティガードは、データベースジャグリングがあまり制御されていないため、起きていることから少し引きずり出されましたが、これは問題が少ないことです。 主なことは、テストがきしみながらゆっくりと進み、機能の実装から実装までに6か月以上かかる可能性があることです。



したがって、現代のビジネスで開発することは不可能です。 彼らは書いて、本番環境で本番環境でテストを開始しました。 理想的-3日から1週間。



今どのように機能しますか





1.戦闘データベース(本番)とテスト機器を備えたスタンドがあります-私たちの場合、30 TBの生産性が27 TBのテストサイトでした(テストベースを圧縮することが判明しました-これは戦闘パフォーマンスに影響しました)。







2.インストール中にこの戦闘ベースをテストストレージにロールして、テストベースを作成します(これは結局30 TBの長い時間です)。 次に、1日に1回複製プロセスを設定します。







3.ここで、複数のテストサーバーをテストベースに接続すると、各サーバーがデータに独自の変更を加え、これらすべてが遅かれ早かれテストを地獄に変えます。 実際、プロジェクトの開始前に起こったように。 したがって、データベースを取得して「乗算」し、各テストサーバーの変更を保存する必要があります。 結果は次のとおりです。







ここでは、Delphixソフトウェアを搭載したサーバーが仮想化プラットフォームとして機能します。 本番サーバーとテストストレージシステムの間のギャップに含まれ、個々の本番サーバーにデータベースの独自の仮想バージョンを提供します。 テストサーバーがこのバージョンに書き込む場合、データはデータベース自体ではなく、別のdiff(この別のテストサーバーによって作成された変更のみを表示する小さなデータベース)に入力されます。 したがって、1つの大きなメインテストベースと4つの異なる小さなベースの変更に基づいて、4つの異なるテストスタンドが得られます。



差分を含む各ベースも20分の増分レイヤーに保存されます。テストチームの結果を20分間ロールバックできます。 最初のチームがベースを壊した場合、これは彼女にのみ適用されます-残りは彼女の差分とそのステータスを見ません。



4.これはすでにクールですが、過剰な複製からメインベースをオフロードする最後の仕上げがあります。 ここにあります:







メインの運用データベースではなく、バックアップ運用データベースからコピーを取得し始めました。



注:実稼働からバックアップへの移行は単調であり、バックアップからテストベースへの移行も一方向です。 個別の差分のみを解除できます。



インフラストラクチャで何が起こったのか



バトルスタンドは変わりません。 テストベンチ:運用サーバーの数を増やしました(軍事サーバーと比較して低電力-これは鉄で、3-4年前に戦闘運用からテストに置き換えられました)。 差分を保存するには、SHDがもう少し必要です。 さらに、仮想付録Delfixを備えたサーバー。 仮想サーバーは大量のミラーを吸い込みました。 それだけです





テストサーバー-Delphixが実行されているのと同じ物理サーバー上の仮想マシン







最良の部分は、管理者とストレージエンジニアが軍事の場合にのみ引き出されることです。 各開発チームは、楽しみのために独自のサンドボックスでプレイします。 彼らはあなたがすべてを自分でできるGUIとコンソールを持っています:







そして、管理者には次のように表示されます。











まあ、もちろん、彼らは何か複雑な場合、管理者を介して行くことができます。 たとえば、新しいインスタンスはそれを介して行われます。



警備員が突然好んだもう一つの素晴らしいオプションは、ベースをマスクすることでした。 Delfixはミラーを作成できるだけでなく、ハッシュデータを作成したり、ランダムノイズを導入したり、平均化したり、パターンに従ってマスクしたりすることもできます。 ちなみに、このオプションはさまざまな通信で積極的に使用されています。



今年1月からのチームは新しいサーキットに乗って、とても満足しています。 開発チームの数が増えました。



このストーリーでは、すべてがスムーズに進みました。 驚きから-別の顧客で、古いSHDがテストベンチから落ちたが、調査の結果、問題はソフトウェアではなくハードウェアにあることが判明した。 実装中、帯域幅が気に入らなかったため、初期同期だけで4日かかりました。 その結果、DRPミラーから標準のOracleメカニズムコピーをゆっくりと悲しい形で作成しましたが、これは長い間不快でした。スタンバイバックアップが別のデータセンターにあるためです。 ベンダーと一緒に、彼らは設定で遊ぶ方法を見つけました(彼らは少しのネットワーク診断が必要で、多くの問題を見つけました)、パッケージングで作業し、データベース全体を一日にロールアップするのにかかる時間を短縮しました。 ベンダーは全体として何をすべきかを知っていました-彼らにとって状況はよく知られています。



現在、7つのチームが27 TBを使用しています。これは、初期化中に圧縮されるベース(3分の1まで)と1年ごとの差分です。 私は彼らがそこに多くの文字データを持っていたと言わなければならないので、それは非常にうまくいった。 顧客は、さらに3つのグループへのアクセスを許可する予定です。



もちろん、そのようなインフラストラクチャで全負荷テストを実行することは不可能です。 必要な場合は、個別の物理的腺が必要です。



はい、完全なデータベースが必要な理由の質問に答えます:組み込みの手順にロジックがあり(今回)、短いサンプルでは多くのテストが完全に代表的ではありません-データベーステーブルごとに最大1000レコードを「切り捨てる」ことができれば、もちろん顧客は、私はそのような庭を作りません



世界体験



通常、このようなタスクはソフトウェアとハ​​ードウェアの動物園によって解決されます。原則として、それはある種のゴールデンゲートまたはアナログであり、次にアレイレベルでスナップショットを作成し、スクリプトからバインドします。 私たちの事例は、ロシアでのデルピックスの最初の主要な実装です。



当然、その前に、世界中でソフトウェアがどのように使用されているかを調べましたが、ここで興味深いことがわかりました。 米国で6か月(一部のNDAの下での契約)を節約したMDMのインフラストラクチャは次のとおりです。





Delphix Server:複数のソースデータベースを2番目まで同期する



NASAの歴史:







より興味深い話は、City Index、Clean Harbors、SABMillerです。 全体としては、機能のアイデアから実装まで2週間でチームが非常に迅速に開発できたという事実に帰着します。 これは非常に重要です。Grefはこれについて話しているだけで、銀行は実装速度に遅れをとっています。



発売まで3週間



1月に、顧客は詳細な技術要件を提供しました。 それでも彼が何を望んでいるのか正確には分からないが、非常に優れた技術的インプットを持っている。 要するに、7拠点分のスペースが足りなかったため、ストレージを購入したかったのです。 最初に、スペースまたはハードウェアストレージを節約するソリューションを探しました。 まあ、まず第一に、彼らは要件を実現することができます。 新しいx7アイアンの購入は選択肢ではありません(高価で信じられないほど長いです)。



いくつかのソリューションを計算しましたが、ほぼ全員が不完全なカバレッジを持っているか、戦闘データベースの負荷が大幅に増加しました。 本番環境にあるサードパーティのスクリプトは、部門内のキューに直接影響しました。 スナップショットが遅くなりました-すべての部門がすぐにブレーキを受けました。



この構成でDelphixを出荷することにし、テストを依頼しました。 ビデオ会議でベンダーと顧客の管理者とすべてについて話し合い、ベンダーからISOイメージを受け取り、それを展開して確認しました。



彼らは約3週間運転しました。 製品は顧客にとって非常に理解しやすく、すべてがほとんど直感的です。 彼らは、インターフェースで何をすべきかを理解しました。 私たちは、彼らが自分で習得するよりも長く機器との統合ソリューションに取り組みました。 次-テスト操作、ローリングメディア、実装。



まとめ



このツールは優れています。簡単に実装でき、落とし穴はほとんどありません。唯一のことは、最初の同期が複雑であることです。 同様のタスクに強くお勧めします。



参照資料






All Articles