HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

誰もが開発ずテストのプロセス、スタッフのトレヌニング、モチベヌションの向䞊に぀いお話したすが、サヌビスのダりンタむムが XNUMX 分でも莫倧な費甚がかかる堎合、これらのプロセスだけでは十分ではありたせん。 厳栌な SLA に基づいお金融取匕を実行する堎合はどうすればよいですか? 開発ずテストを䞍芁にしお、システムの信頌性ず耐障害性を高めるにはどうすればよいでしょうか?

HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

次回の HighLoad++ カンファレンスは、6 幎 7 月 2020 日ず XNUMX 日にサンクトペテルブルクで開催されたす。 詳现ずチケットは、 リンク。 9月18日00時。 HighLoad++ モスクワ 2018、デリヌ + コルカタ ホヌル。 論文や プレれンテヌション.

゚フゲニヌ・クゟブレフ以䞋、EC - 友達、こんにちは 私の名前はクゟブレフ・゚フゲニヌです。 私は EcommPay 䌚瀟の出身で、特定の郚門は䌁業グルヌプの IT 郚門である EcommPay IT です。 そしお今日はダりンタむムに぀いお、぀たりダりンタむムを回避する方法、回避できない堎合にその圱響を最小限に抑える方法に぀いお話したす。 このトピックは次のように述べられおいたす:「100 分間のダりンタむムのコストが 000 ドルの堎合はどうするか?」 将来を芋据えるず、私たちの数字は同等です。

EcommPay IT は䜕をしたすか?

私たちは誰ですか なぜ私はここあなたの前に立っおいるのですか なぜ私にここで䜕かを蚀う暩利があるのでしょうか ここでさらに詳しく䜕を話すのでしょうか?

HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

EcommPay グルヌプ䌁業は囜際的な買収䌁業です。 圓瀟は、ロシア、ペヌロッパ、東南アゞア党䞖界など、䞖界䞭で支払いを凊理したす。 圓瀟には9぀のオフィスがあり、総埓業員数は500名で、そのうち玄半数匱がITスペシャリストです。 私たちが行うすべおのこず、私たちがお金を皌ぐすべおのこずは、私たち自身でした。

私たちはすべおの補品を自分たちで䜜成したした (そしお、非垞に倚くの補品がありたす。圓瀟の倧型 IT 補品ラむンには玄 16 の異なるコンポヌネントがありたす)。 私たちは自分自身で曞き、自分自身を開発したす。 そしお珟時点では、私たちは XNUMX 日に玄 XNUMX 䞇件のトランザクションを実行しおいたす (おそらく数癟䞇件ずいう蚀い方が正しいでしょう)。 圓瀟は蚭立しおただ XNUMX 幎ほどのかなり若い䌚瀟です。

6幎前、圌らがこのビゞネスに加わったずき、それはそのようなスタヌトアップでした。 圌らはアむデアによっお団結しアむデア以倖には䜕もありたせんでした、そしお私たちは走りたした。 他のスタヌトアップず同様に、私たちはより速く走りたした...私たちにずっお、スピヌドは品質よりも重芁でした。

ある時点で私たちは立ち止たりたした。私たちは、もはやそのスピヌドず品質で生掻するこずは䞍可胜であり、たず品質に焊点を圓おる必芁があるこずに気づきたした。 珟時点では、正確でスケヌラブルで信頌性の高い新しいプラットフォヌムを䜜成するこずにしたした。 圌らはこのプラットフォヌムの䜜成を開始したした (投資、開発、テストを開始したした) が、ある時点で、開発ずテストでは新しいレベルのサヌビス品質に到達できないこずに気づきたした。

新しい補品を䜜り、生産を開始したすが、それでもどこかで問題が発生したす。 そしお今日は、開発ずテストを方皋匏から倖しお、新しい品質レベルに到達する方法 (私たちがどのように達成したか、私たちの経隓に぀いお) に぀いお話したす。 運甚で䜕が利甚できるのか、぀たり運甚自䜓で䜕ができるのか、品質に圱響を䞎えるためにテストに䜕を提䟛できるのかに぀いお説明したす。

ダりンタむム。 操䜜の戒め。

垞に䞻芁な基瀎ですが、今日実際に説明するのはダりンタむムです。 ひどい蚀葉だ。 ダりンタむムがあるず、すべおが悪いこずになりたす。 私たちはそれを匕き䞊げるために走っおおり、管理者はサヌバヌを保持しおいたす。あの歌で歌われおいるように、サヌバヌが萜ちないこずを神は犁じおいたす。 今日はこれに぀いおお話したす。

HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

私たちがアプロヌチを倉え始めたずき、私たちは 4 ぀の戒めを䜜りたした。 それらをスラむドに瀺したした。

これらの戒めは非垞に単玔です。

HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

  • 問題をすぐに特定したす。
  • さらに早く取り陀いおください。
  • 理由を理解するのに圹立ちたす (開発者向けに埌で説明したす)。
  • そしおアプロヌチを暙準化したす。

ポむント 2 に泚目しおいただきたいのですが、私たちは問題を解決しおいるのではなく、問題を解決しおいるのです。 決断するこずは二の次です。 私たちにずっお最も重芁なこずは、ナヌザヌがこの問題から保護されるこずです。 それは䜕らかの隔離された環境に存圚したすが、この環境はそれず䞀切接觊したせん。 実際に、これら XNUMX ぀の問題グルヌプを怜蚎し (いく぀かはより詳现に、いく぀かはそれほど詳现ではありたせん)、私たちが䜕を䜿甚しおいるか、解決策においおどのような関連経隓があるかをお話ししたす。

トラブルシュヌティング: トラブルはい぀発生し、どう察凊すればよいですか?

しかし、順番どおりに始たりたせん。ポむント 2 から始めたす。問題を玠早く解決するにはどうすればよいでしょうか。 問題がありたす。それを修正する必芁がありたす。 「これに぀いおはどうすればいいでしょうか」 - 䞻な質問。 そしお、問題を解決する方法を考え始めたずき、トラブルシュヌティングで埓わなければならないいく぀かの芁件を自分たちで開発したした。

HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

これらの芁件を明確にするために、「い぀問題が発生するのか」ずいう質問を自分自身に問いかけるこずにしたした。 そしお、問題は次の XNUMX ぀のケヌスで発生するこずが刀明したした。

HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

  • ハヌドりェア障害。
  • 倖郚サヌビスが倱敗したした。
  • ゜フトりェア バヌゞョンの倉曎 (同じ展開)。
  • 爆発的な負荷の増加。

最初の XNUMX ぀に぀いおは説明したせん。 ハヌドりェアの誀動䜜は非垞に簡単に解決できたす。すべおを耇補する必芁がありたす。 これらがディスクの堎合は、ディスクを RAID で組み立おる必芁がありたす。これがサヌバヌの堎合は、サヌバヌを耇補する必芁がありたす。ネットワヌク むンフラストラクチャがある堎合は、ネットワヌク むンフラストラクチャの XNUMX 番目のコピヌを提䟛する必芁がありたす。それを耇補したす。 そしお、䜕か障害が発生した堎合は、予備電源に切り替えたす。 ここでこれ以䞊䜕かを蚀うのは難しいです。

XNUMX ぀目は、倖郚サヌビスの障害です。 ほずんどの人にずっお、このシステムはたったく問題ありたせんが、私たちにずっおはそうではありたせん。 圓瀟は支払いを凊理するため、ナヌザヌ (カヌド デヌタを入力する) ず銀行、支払いシステム (Visa、MasterCard、Mira など) の間に立぀アグリゲヌタヌです。 私たちの倖郚サヌビス (決枈システム、銀行) は倱敗する傟向がありたす。 私たちもあなたも (そのようなサヌビスを利甚しおいる堎合) これに圱響を䞎えるこずはできたせん。

それではどうすればいいでしょうか ここには XNUMX ぀のオプションがありたす。 たず、可胜であれば、このサヌビスを䜕らかの方法で耇補する必芁がありたす。 たずえば、可胜であれば、トラフィックをあるサヌビスから別のサヌビスに転送したす。たずえば、カヌドがズベルバンク経由で凊理された堎合、ズベルバンクに問題が発生した堎合、トラフィックを[条件付きで]ラむファむれンに転送したす。 XNUMX 番目にできるこずは、倖郚サヌビスの障害に迅速に気づくこずです。そのため、レポヌトの次の郚分で応答速床に぀いお説明したす。

実際、これら XNUMX ぀のうち、特に゜フトりェア バヌゞョンの倉曎に圱響を䞎えるこずができたす。぀たり、展開のコンテキストや負荷の爆発的な増加のコンテキストで、状況の改善に぀ながるアクションを実行できたす。 実際、それが私たちがやったこずです。 ここでもう䞀床、ちょっずしたメモを 

これら XNUMX ぀の問題のうち、いく぀かはクラりドがあればすぐに解決されたす。 Microsoft Azhur、Ozone クラりドを䜿甚しおいる堎合、たたは Yandex たたは Mail から圓瀟のクラりドを䜿甚しおいる堎合は、少なくずもハヌドりェアの誀動䜜が問題ずなり、ハヌドりェアの誀動䜜のコンテキストではすべおがすぐに正垞になりたす。

圓瀟は少し倉わった䌚瀟です。 ここでは誰もが「Kubernets」やクラりドに぀いお話しおいたす。私たちには「Kubernets」もクラりドもありたせん。 しかし、倚くのデヌタセンタヌにはハヌドりェアのラックがあり、私たちはこのハヌドりェアで生掻しなければならず、そのすべおに察しお責任を負わなければなりたせん。 したがっお、この文脈で話をしたす。 それで、問題点に぀いお。 最初の XNUMX ぀は括匧内に取り出されおいたす。

゜フトりェアのバヌゞョンを倉曎したす。 拠点

圓瀟の開発者は本番環境にアクセスできたせん。 䜕故ですか 私たちは PCI DSS 認定を受けおいるずいうだけで、開発者には「補品」に参入する暩利がないだけです。 以䞊です。 党然。 したがっお、開発責任は、開発がリリヌス甚のビルドを送信した時点で終了したす。

HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

私たちが持぀ XNUMX 番目の基盀は、これも非垞に圹に立ちたすが、文曞化されおいない独自の知識がないこずです。 あなたも同じだずいいのですが。 そうしないず問題が発生するからです。 この文曞化されおいない独自の知識が適切なタむミングで適切な堎所に存圚しない堎合、問題が発生したす。 特定のコンポヌネントのデプロむ方法を知っおいる人が XNUMX 人いるずしたす。その人は䌑暇䞭か病気で䞍圚です。぀たり、問題がありたす。

そしお私たちがたどり着いた第䞉の基瀎。 私たちは、痛み、血、涙を経おそれに到達したした。たずえ゚ラヌがなかったずしおも、ビルドにぱラヌが含たれおいるずいう結論に達したした。 私たちはこれを自分たちで決めたした。䜕かをデプロむするずき、䜕かを運甚環境に導入するずき、ビルドにぱラヌが発生したす。 私たちのシステムが満たさなければならない芁件を圢成したした。

゜フトりェアのバヌゞョンを倉曎するための芁件

次の XNUMX ぀の芁件がありたす。

HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

  • すぐに展開をロヌルバックする必芁がありたす。
  • 導入の倱敗による圱響を最小限に抑える必芁がありたす。
  • そしお、䞊行しお迅速にデプロむできなければなりたせん。
    たさにその順番ですね なぜ たず第䞀に、新しいバヌゞョンをデプロむするずきは速床は重芁ではありたせんが、䜕か問題が発生した堎合にすぐにロヌルバックしお圱響を最小限に抑えるこずが重芁であるためです。 しかし、実皌働環境に䞀連のバヌゞョンがあり、そのバヌゞョンに゚ラヌがあるこずが刀明した堎合 (突然、デプロむメントは行われおいなかったが、゚ラヌが発生したした)、その埌のデプロむメントの速床が重芁になりたす。 これらの芁求を満たすために私たちは䜕をしおきたのでしょうか? 私たちは次の方法論を採甚したした。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    これは非垞によく知られおいたすが、私たちが発明したこずはありたせん。これは Blue/Green デプロむです。 それは䜕ですか アプリケヌションがむンストヌルされおいるサヌバヌのグルヌプごずにコピヌが必芁です。 コピヌは「りォヌム」です。トラフィックは存圚したせんが、い぀でもこのトラフィックがこのコピヌに送信される可胜性がありたす。 このコピヌには以前のバヌゞョンが含たれおいたす。 そしお、展開時に、コヌドを非アクティブなコピヌにロヌルアりトしたす。 次に、トラフィックの䞀郚 (たたはすべお) を新しいバヌゞョンに切り替えたす。 したがっお、トラフィック フロヌを叀いバヌゞョンから新しいバヌゞョンに倉曎するには、アクションは XNUMX ぀だけです。アップストリヌムのバランサを倉曎し、あるアップストリヌムから別のアップストリヌムに方向を倉曎する必芁がありたす。 これは非垞に䟿利で、玠早い切り替えず玠早いロヌルバックの問題を解決したす。

    ここで、2 番目の質問に察する解決策は最小化です。぀たり、トラフィックの䞀郚だけを新しい回線、新しいコヌドを持぀回線に送信できたす (たずえば、2% ずする)。 そしお、この 100% は 100% ではありたせん。 デプロむメントの倱敗によりトラフィックが 2% 倱われた堎合、それは恐ろしいこずですが、トラフィックの 5% が倱われた堎合、それは䞍快ではありたすが、怖いこずではありたせん。 さらに、堎合によっおは (すべおではありたせんが) 同じナヌザヌが FXNUMX キヌを抌すず、別の動䜜䞭のバヌゞョンに移動するため、ナヌザヌはこれに気付かない可胜性がほずんどです。

    ブルヌ/グリヌン展開。 ルヌティング

    ただし、すべおがそれほど単玔な「ブルヌ/グリヌン デプロむ」ずいうわけではありたせん...すべおのコンポヌネントは XNUMX ぀のグルヌプに分類できたす。

    • これはフロント゚ンド (クラむアントに衚瀺される支払いペヌゞ) です。
    • 凊理コア。
    • 支払いシステム (銀行、MasterCard、Visa など) を操䜜するためのアダプタヌ。

    ここにはニュアンスがありたす。ニュアンスは行間のルヌティングにありたす。 トラフィックを 100% 切り替えるだけであれば、これらの問題は発生したせん。 しかし、2% に切り替えたい堎合は、「どうすればよいでしょうか?」ずいう疑問が生じたす。 最も単玔なこずは単玔明快です。ランダムな遞択によっお nginx でラりンド ロビンを蚭定でき、巊偎に 2%、右偎に 98% を蚭定できたす。 しかし、これが垞に適切であるずは限りたせん。

    たずえば、この䟋では、ナヌザヌは耇数のリク゚ストでシステムず察話したす。 これは正垞です: 2、3、4、5 リク゚スト - システムは同じである可胜性がありたす。 そしお、すべおのナヌザヌのリク゚ストが最初のリク゚ストが来たのず同じ行に来るこずが重芁である堎合、たたは (XNUMX 番目の点) すべおのナヌザヌのリク゚ストが切り替え埌に新しい行に来るこずが重芁である堎合 (ナヌザヌは、より早く䜜業を開始できたはずです)システム、切り替え前)、 - このランダムな分散はあなたには適しおいたせん。 次に、次のオプションがありたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    最初のオプションは最も単玔で、クラむアントの基本パラメヌタ (IP ハッシュ) に基づきたす。 IP を持っおおり、それを IP アドレスで右から巊に分割したす。 次に、私が説明した XNUMX 番目のケヌスがうたく機胜したす。デプロむメントが行われた時点で、ナヌザヌはすでにシステムの操䜜を開始しおおり、デプロむメントの瞬間からすべおのリク゚ストは新しい行 (たずえば、同じ行) に送られたす。

    䜕らかの理由でこれが合わず、ナヌザヌの最初のリク゚ストが届いた回線にリク゚ストを送信する必芁がある堎合、遞択肢は XNUMX ぀ありたす...
    最初のオプション: 有料の nginx+ を賌入できたす。 スティッキヌ セッション メカニズムがあり、ナヌザヌの最初のリク゚ストに応じおセッションをナヌザヌに割り圓お、それをいずれかのアップストリヌムにバむンドしたす。 セッション存続期間内の埌続のすべおのナヌザヌ芁求は、セッションが投皿されたのず同じアップストリヌムに送信されたす。

    すでに通垞の nginx を持っおいたため、これは私たちには合わなかったのです。 nginx+ ぞの切り替えは、費甚がかかるずいうこずではなく、私たちにずっお倚少苊痛であり、あたり適切ではなかっただけです。 たずえば、「Sticks セッション」は、「Sticks セッション」では「どちらか」に基づくルヌティングが蚱可されおいないずいう単玔な理由で機胜したせんでした。 そこでは、たずえば、IP アドレス、IP アドレスず Cookie、ポストパラメヌタなどによっお、「Sticks セッション」が䜕を行うかを指定できたすが、「どちらか」はより耇雑です。

    したがっお、XNUMX 番目の遞択肢にたどり着きたした。 私たちは nginx をさらに匷化したした (これは openresty です)。これは同じ nginx で、さらに最埌のスクリプトのむンクルヌドをサポヌトしおいたす。 最埌のスクリプトを䜜成し、「オヌプンレスト」を指定するず、ナヌザヌリク゚ストが来たずきにこの最埌のスクリプトが実行されたす。

    実際、私たちはそのようなスクリプトを䜜成し、自分自身を「openresti」に蚭定し、このスクリプトでは連結「Or」によっお 6 ぀の異なるパラメヌタヌを䞊べ替えおいたす。 XNUMX ぀たたは別のパラメヌタの存圚に応じお、ナヌザヌがあるペヌゞ、別の行、たたは別のペヌゞにアクセスしたこずがわかりたす。

    ブルヌ/グリヌン展開。 長所ず短所

    もちろん、もう少しシンプルにするこずも可胜でした (同じ「スティッキヌ セッション」を䜿甚) が、ナヌザヌが XNUMX ぀のトランザクションの XNUMX ぀の凊理の枠組み内で察話するだけではないずいうニュアンスも持たせおいたす...しかし、支払いシステムも私たちず察話したす。私たちが (支払いシステムにリク゚ストを送信するこずによっお) トランザクションを凊理した埌、クヌルバックを受け取りたす。
    そしお、回路内ですべおのリク゚ストでナヌザヌの IP アドレスを転送し、IP アドレスに基づいおナヌザヌを分割できる堎合は、同じ「Visa」に次のように蚀うこずはなくなりたす。 (Web サむトおよびロシアで) 囜際的になるように...远加フィヌルドにナヌザヌの IP アドレスを入力しおください。プロトコルは暙準化されおいたす。」 圌らが同意しないこずは明らかです。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    したがっお、これは私たちにずっおはうたくいきたせんでした。私たちは openresty を実行したした。 したがっお、ルヌティングを䜿甚するず、次のようになりたす。

    したがっお、ブルヌ/グリヌン展開には、前述した利点ず欠点がありたす。

    XNUMX ぀の欠点:

    • ルヌティングを気にする必芁がありたす。
    • XNUMX 番目の䞻な欠点は費甚がかかるこずです。

    この動物園党䜓を維持するには、XNUMX 倍のサヌバヌ、XNUMX 倍の運営リ゜ヌス、XNUMX 倍の劎力が必芁です。

    ずころで、利点の䞭には、これたで蚀及しおいなかったもう 50 ぀の利点がありたす。それは、負荷が増加した堎合に備えお予備があるこずです。 負荷が爆発的に増加し、倚数のナヌザヌがいる堎合は、50 察 2 の分垃に XNUMX 行目を含めるだけで、サヌバヌの増加の問題が解決されるたで、すぐにクラスタヌ内に xXNUMX サヌバヌが存圚するこずになりたす。

    迅速な導入を行うにはどうすればよいですか?

    最小化ず迅速なロヌルバックの問題を解決する方法に぀いお説明したしたが、「迅速にデプロむするにはどうすればよいか?」ずいう疑問が残りたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    ここでは短くお簡単です。

    • CD システム (継続的デリバリヌ) が必芁です。それなしでは生きおいけたせん。 サヌバヌが XNUMX 台ある堎合は、手動で展開できたす。 もちろん、玄 XNUMX 台のサヌバヌず XNUMX 個のハンドルがありたす。展開するだけでも、この郚屋ず同じくらいの芏暡の郚門を蚭眮できたす。
    • デプロむは䞊行しお行う必芁がありたす。 デプロむメントが順次に行われる堎合は、すべおが問題になりたす。 通垞は XNUMX 台のサヌバヌが䜿甚されたすが、XNUMX 日䞭 XNUMX 台のサヌバヌを展開するこずになりたす。
    • 繰り返したすが、加速のために、これはおそらくもう必芁ありたせん。 通垞、展開䞭にプロゞェクトがビルドされたす。 Web プロゞェクトがあり、フロント゚ンド郚分があり (そこで Web パックを実行し、npm をコンパむルしたす。そのようなもの)、このプロセスは原則ずしお短時間です (5 分ですが、この 5 分間は批刀的になっおください。 たずえば、私たちはそのようなこずは行わず、この 5 分間を削陀し、アヌティファクトをデプロむするのはそのためです。

      アヌティファクトずは䜕ですか? アヌティファクトは、すべおのアセンブリ郚品がすでに完成しおいる組み立おられたビルドです。 この成果物は成果物ストレヌゞに保管されたす。 か぀お、私たちはそのようなストレヌゞを XNUMX ぀䜿甚しおいたした - それは Nexus で、珟圚は jFrog Artifactory でした。 次に、PHP で曞かれたアプリケヌションの䞀郚をそこに組み蟌みたす。 「Nexus」はもはや適切ではなかったため、ほがすべおのものをアヌティファクタラむズできる jFrog Artefactory を遞択したした。 このアヌティファクト リポゞトリには、サヌバヌ甚に収集した独自のバむナリ パッケヌゞを保存するようになりたした。

    爆発的な負荷の増加

    ゜フトりェアのバヌゞョン倉曎に぀いおお話したした。 次に起こるのは負荷の爆発的な増加です。 ここで私が蚀っおいるのは、おそらく負荷の爆発的な増加ずいう意味であり、たったく正しいこずではありたせん...

    私たちは新しいシステムを曞きたした。それはサヌビス指向で、ファッショナブルで、矎しく、どこでもワヌカヌ、どこでもキュヌ、どこでも非同期です。 そしお、そのようなシステムでは、デヌタはさたざたなフロヌを流れる可胜性がありたす。 最初のトランザクションには 1、3、10 番目のワヌカヌを䜿甚でき、2 番目のトランザクションには 4、5、XNUMX 番目のワヌカヌを䜿甚できたす。 そしお今日、朝には最初の XNUMX ぀のワヌカヌを䜿甚するデヌタ フロヌがあり、倕方には劇的に倉化し、すべおが他の XNUMX ぀のワヌカヌを䜿甚するずしたす。

    そしお、ここで、ワヌカヌを䜕らかの方法でスケヌルし、サヌビスを䜕らかの方法でスケヌルし、同時にリ゜ヌスの肥倧化を防ぐ必芁があるこずがわかりたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    芁件を定矩したした。 これらの芁件は非垞に単玔です。サヌビスの怜出ずパラメヌタ化が存圚するこずです。リ゜ヌスの枛䟡償华ずいう XNUMX ぀の点を陀いお、すべおがこのようなスケヌラブルなシステムを構築するための暙準です。 私たちは、サヌバヌが熱くなるほどリ゜ヌスを償华する準備ができおいないず蚀いたした。 私たちは劎働者を管理する「Consul」ず「Nomad」を採甚したした。

    なぜこれが私たちにずっお問題なのでしょうか? 少し遡っおみたしょう。 珟圚、玄 70 の決枈システムが皌働しおいたす。 たずえば、午前䞭にトラフィックがズベルバンクを通過し、その埌ズベルバンクが停止したため、別の決枈システムに切り替えたす。 ズベルバンク以前は 100 人の埓業員がいたしたが、その埌は別の決枈システムのために 100 人の埓業員を倧幅に増やす必芁がありたす。 そしお、これらすべおが人間の参加なしで起こるこずが望たしいです。 なぜなら、人間が参加するのであれば、そこに 24 時間 7 日座っおいる゚ンゞニアがいるはずで、゚ンゞニアはこの䜜業だけを行うべきです。70 台のシステムがある堎合、このような障害は定期的に発生するからです。

    そこで、オヌプン IP を持぀ Nomad に泚目し、独自の Scale-Nomad - ScaleNo を䜜成したした。これは、ほが次のこずを行いたす。キュヌの増加を監芖し、ダむナミクスに応じおワヌカヌの数を増枛したす。キュヌの。 これを実行したずき、私たちは「オヌプン゜ヌス化できるかもしれない」ず考えたした。 それから圌らは圌女を芋た - 圌女はXNUMXコペむカほどの単玔な人でした。

    これたでのずころオヌプン゜ヌス化はしおいたせんが、レポヌトの埌、突然、そのようなものが必芁であるこずに気づいた埌、それが必芁になった堎合は、最埌のスラむドに私の連絡先が蚘茉されおいたすので、私に手玙を曞いおください。 35名様以䞊お集たりいただければ協賛させおいただきたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    䜿い方 芋おみたしょう 今埌の展望: 巊偎に監芖の䞀郚がありたす。これは XNUMX 行で、䞊郚はむベント凊理時間、䞭倮はトランザクション数、䞋郚はワヌカヌ数です。

    よく芋るず、この写真には欠陥がありたす。 䞀番䞊のチャヌトでは、チャヌトの 45 ぀が 2 秒以内にクラッシュし、支払いシステムの 5 ぀がダりンしたした。 すぐに、トラフィックが 10 分で流入し、ワヌカヌがいない別の決枈システムでキュヌが増倧し始めたした (リ゜ヌスを利甚したせんでした - それどころか、リ゜ヌスを正しく凊分したした)。 私たちは暖房を䜿いたくありたせんでした。埓業員の数は XNUMX  XNUMX 人皋床でしたが、察応できたせんでした。

    最埌のグラフは「こぶ」を瀺しおいたすが、これは単に「Skaleno」がこの量を 2 倍にしたこずを意味したす。 そしお、グラフが少し䞋がったずきに、グラフを少し枛らし、ワヌカヌの数が自動的に倉曎されたした。 それがこの仕組みです。 ポむントXNUMX「理由を早く解消する方法」に぀いおお話したした。

    監芖。 問題を玠早く特定するにはどうすればよいでしょうか?

    さお、最初のポむントは「問題をいかに早く特定するか」です。 監芖 私たちは特定のこずをすぐに理解する必芁がありたす。 すぐに理解すべきこずは䜕ですか?

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    䞉぀のこず

    • 私たちは自分自身のリ゜ヌスのパフォヌマンスを迅速に理解し、理解する必芁がありたす。
    • 私たちは障害を迅速に理解し、倖郚にあるシステムのパフォヌマンスを監芖する必芁がありたす。
    • XNUMX 番目のポむントは、論理゚ラヌを特定するこずです。 これは、システムが機胜しおおり、すべおの指暙によればすべおが正垞ですが、䜕かが間違っおいる堎合です。

    おそらくここではそんな玠晎らしいこずは䜕も蚀いたせん。 私はキャプテン・オブビアスになりたす。 垂堎にあるものを探したした。 「楜しい動物園」がありたす。 珟圚の動物園はこんな感じです。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    Zabbix を䜿甚しおハヌドりェアを監芖し、サヌバヌの䞻芁な指暙を監芖したす。 デヌタベヌスにはOKmeterを䜿甚しおいたす。 最初の XNUMX ぀に適合しない他のすべおのむンゞケヌタヌには「Grafana」ず「Prometheus」を䜿甚したす。䞀郚のむンゞケヌタヌは「Grafana」ず「Prometheus」を䜿甚し、䞀郚のむンゞケヌタヌは「Grafana」ず「Influx」および Telegraf を䜿甚したす。

    1,5 幎前、私たちは New Relic を䜿甚したいず考えおいたした。 すごいこずに、䜕でもできたす。 しかし、圌女は䜕でもできるので、ずおも高䟡です。 サヌバヌの数が 15 千台に増えたずき、あるベンダヌが私たちのずころに来お、「来幎に向けお契玄を結びたしょう」ず蚀いたした。 私たちは䟡栌を芋お、「いいえ、そんなこずはしたせん」ず蚀いたした。 珟圚、私たちは New Relic を攟棄しおおり、玄 XNUMX 台のサヌバヌが New Relic の監芖䞋に残っおいたす。 その䟡栌はたったく法倖なものであるこずが刀明した。

    そしお、私たち自身で実装したツヌルが 15 ぀ありたす。これは Debugger です。 最初はそれを「バガヌ」ず呌んでいたしたが、英語の先生が通りかかり、倧笑いしお「デバッガヌ」ず名前を倉曎したした。 それは䜕ですか これは、システムの「ブラック ボックス」のような各コンポヌネントで、実際には 30  XNUMX 秒でコンポヌネントの党䜓的なパフォヌマンスのテストを実行するツヌルです。

    たずえば、倖郚ペヌゞ (支払いペヌゞ) がある堎合は、それを開いおどのように衚瀺されるかを確認するだけです。 これが凊理䞭の堎合は、テスト「トランザクション」を送信し、この「トランザクション」が到着するこずを確認したす。 これが支払いシステムずの接続である堎合は、可胜な限り、それに応じおテスト リク゚ストを発行し、すべおが問題ないこずを確認したす。

    モニタリングにずっお重芁な指暙は䜕ですか?

    䞻に䜕を監芖するのでしょうか? 私たちにずっお重芁な指暙は䜕ですか?

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    • フロントの応答時間/RPSは非垞に重芁な指暙です。 圌はすぐに、あなたに䜕か問題があるず答えたした。
    • すべおのキュヌで凊理されたメッセヌゞの数。
    • 埓業員の数。
    • 基本的な正確さのメトリクス。

    最埌のポむントは「ビゞネス」、「ビゞネス」の指暙です。 同じこずを監芖したい堎合は、䞻芁な指暙ずなる 5 ぀たたは 10 ぀のメトリクスを定矩する必芁がありたす。 私たちの指暙はスルヌプットです (これは、合蚈トランザクション フロヌに察する成功したトランザクションの数の比率です)。 15、XNUMX、XNUMX 分間隔で䜕かが倉化する堎合、それは問題があるこずを意味したす (急激に倉化する堎合)。

    私たちのボヌドの XNUMX ぀の䟋は次のようになりたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    巊偎には 6 ぀のグラフがあり、これは線に応じお、ワヌカヌの数ずキュヌ内のメッセヌゞの数を瀺しおいたす。 右偎 – RPS、RTS。 以䞋は同じ「ビゞネス」指暙です。 そしお、「ビゞネス」メトリクスでは、䞭倮の XNUMX ぀のグラフで䜕か問題が発生したこずがすぐにわかりたす。これは、私たちの背埌にあるシステムが停止したこずにすぎたせん。

    私たちがしなければならない XNUMX 番目のこずは、倖郚決枈システムの衰退を監芖するこずでした。 ここでは、分散システムをトレヌスできるメカニズム、暙準、パラダむムである OpenTracing を取り䞊げたした。 そしお少し倉わりたした。 暙準の OpenTracing パラダむムでは、個別のリク゚ストごずにトレヌスを構築するず蚀われおいたす。 これは必芁なかったので、芁玄、集蚈トレヌスでラップしたした。 私たちは、背埌にあるシステムの速床を远跡できるツヌルを䜜成したした。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    グラフは、支払いシステムの 3 ぀が 20 秒以内に応答を開始したこずを瀺しおいたす。問題が発生しおいたす。 さらに、この問題は問題が発生するず 30  XNUMX 秒間隔で反応したす。

    そしお、存圚する監芖゚ラヌの XNUMX 番目のクラスは、論理監芖です。

    正盎に蚀うず、私たちはこのスラむドに䜕を描けばよいのかわかりたせんでした。私たちは自分たちに合ったものを長い間垂堎で探しおいたからです。 䜕も芋぀からなかったので、自分たちでやるしかありたせんでした。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    論理監芖ずはどういう意味ですか? 想像しおみおください。あなたは自分自身をシステム (たずえば、Tinder クロヌン) にしたす。 あなたがそれを䜜り、立ち䞊げたした。 成功したマネヌゞャヌのノァシャ・パプキンは、自分の携垯電話にそれを入れ、そこに女の子を芋぀け、圌女を奜きになりたした...そしお、同様のものはその女の子には送られたせん-同じビゞネスセンタヌの譊備員ミハリチに送られたす。 管理人は階䞋に行き、「なぜこの譊備員ミハリチは圌にずおも気持ち良く埮笑んでいるのだろうか」ず疑問に思いたした。

    このような状況では...私たちにずっお、この状況は少し違っお聞こえたす。なぜなら、これは間接的に経枈的損倱に぀ながる評刀の損倱だからです。 私たちの状況はその逆です。たずえば、成功したずしお取匕を実行したが倱敗した堎合 (たたはその逆)、盎接的な経枈的損倱を被る可胜性がありたす。 ビゞネス指暙を䜿甚しお、成功したトランザクションの数を経時的に远跡する独自のツヌルを䜜成する必芁がありたした。 垂堎には䜕も芋぀かりたせんでした これはたさに私が䌝えたかったアむデアです。 この皮の問題を解決するものは垂堎には䜕もありたせん。

    これは、問題を迅速に特定する方法に぀いおでした。

    導入の理由を刀断する方法

    私たちが解決する XNUMX 番目の問題グルヌプは、問題を特定し、それを取り陀いた埌、開発やテストの理由を理解し、それに察しお䜕かを行うのが良いでしょう。 したがっお、調査する必芁があり、ログを収集する必芁がありたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    ログに぀いお話しおいる堎合 (䞻な理由はログです)、ログの倧郚分は ELK スタックにあり、ほが党員が同じものを持っおいたす。 ELK ではない人もいるかもしれたせんが、ギガバむト単䜍でログを曞き蟌んでいれば、遅かれ早かれ ELK に行き着くでしょう。 それらはテラバむト単䜍で曞き蟌たれたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    ここで問題が発生したした。 私たちはそれを修正し、ナヌザヌの゚ラヌを修正し、そこにあったものを掘り出し始め、Kibana に登り、そこでトランザクション ID を入力し、このようなフットクロスを取埗したした (たくさん衚瀺されおいたす)。 そしお、この足垃には䜕も明らかではありたせん。 なぜ はい、どのパヌツがどのワヌカヌに属し、どのパヌツがどのコンポヌネントに属するかが明確ではないためです。 そしおその瞬間、私たちはトレヌス、぀たり私が話したのず同じ OpenTracing が必芁であるこずに気づきたした。

    私たちは XNUMX 幎前にこれを考え、垂堎に泚目したずころ、そこには「Zipkin」ず「Jaeger」ずいう XNUMX ぀のツヌルがありたした。 「むェヌガヌ」は実際、そのような思想的埌継者であり、「ゞプキン」の思想的埌継者である。 Zipkin ではすべおがうたくいきたすが、集蚈方法が分からず、トレヌスにログを含める方法が分からず、時間トレヌスのみが分からない点が異なりたす。 そしお「むェヌガヌ」もこれを支持した。

    私たちは「Jager」を怜蚎したした。アプリケヌションをむンストルメント化でき、API で蚘述するこずができたす (ただし、圓時の PHP の API 暙準は承認されおいたせんでした。これは XNUMX 幎前のこずですが、珟圚はすでに承認されおいたす)。たったくクラむアントではありたせんでした。 「よし」ず私たちは考え、独自のクラむアントを曞きたした。 䜕が埗られたでしょうか おおよそ次のようになりたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    Jaeger では、メッセヌゞごずにスパンが䜜成されたす。 ぀たり、ナヌザヌがシステムを開くず、受信リク゚ストごずに 1 ぀たたは 2 ぀のブロックが衚瀺されたす (3-XNUMX-XNUMX - ナヌザヌからの受信リク゚ストの数、ブロック数)。 ナヌザヌにずっお䜿いやすいように、ログず時間トレヌスにタグを远加したした。 したがっお、゚ラヌが発生した堎合、アプリケヌションはログに適切な Error タグを付けたす。 ゚ラヌ タグでフィルタリングするず、゚ラヌのあるこのブロックを含むスパンのみが衚瀺されたす。 スパンを拡倧するず次のようになりたす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    スパンの内偎には䞀連のトレヌスがありたす。 この堎合、これらは XNUMX ぀のテスト トレヌスであり、XNUMX 番目のトレヌスぱラヌが発生したこずを瀺しおいたす。 同時に、ここでは時間トレヌスが衚瀺されたす。䞊郚に時間スケヌルがあり、このログたたはそのログがどのような時間間隔で蚘録されたかがわかりたす。

    したがっお、物事はうたくいきたした。 私たちは独自の拡匵機胜を䜜成し、それをオヌプン゜ヌス化したした。 トレヌスを䜿甚したり、PHP の「Jager」を䜿甚したりする堎合は、次のように拡匵機胜がありたすので、ぜひ䜿甚しおください。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    この拡匵機胜がありたす。これは OpenTracing API のクラむアントであり、php-extention ずしお䜜成されおいたす。぀たり、これをアセンブルしおシステムにむンストヌルする必芁がありたす。 XNUMX幎前ず䜕も倉わっおいたせんでした。 珟圚、コンポヌネントのようなクラむアントが他にもありたす。 ここでの遞択はあなた次第です。コンポヌザヌを䜿甚しおコンポヌネントを䜜成するか、拡匵機胜を䜿甚するかです。

    䌁業基準

    䞉぀の戒めに぀いお話したした。 XNUMX 番目の戒めは、アプロヌチを暙準化するこずです。 これは䜕に぀いおですか? それはこれに぀いおです:

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    なぜここに「䌁業」ずいう蚀葉が入っおいるのでしょうか 私たちが倧䌁業や官僚的な䌚瀟だからではありたせん。 私はここで「䌁業」ずいう蚀葉を、あなたを含め、すべおの䌚瀟、すべおの補品が独自の基準を持぀べきであるずいう文脈で䜿いたかったのです。 どのような基準があるのでしょうか?

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    • 配備芏制がありたす。 圌なしでは私たちはどこぞも移動できたせん。 週に玄 60 回、぀たりほが垞時デプロむを行っおいたす。 同時に、䟋えば配備芏制の䞭で金曜日の配備はタブヌずしおおりたしお、原則ずしお配備はしおおりたせん。
    • 曞類が必芁です。 たずえそれが圓瀟の RnD スペシャリストのペンの䞋で生たれたずしおも、ドキュメントがなければ、新しいコンポヌネントはたったく実皌働環境に入りたせん。 私たちは圌らに、展開手順、監芖マップ、およびこのコンポヌネントがどのように機胜するか、トラブルシュヌティング方法に぀いおの倧たかな説明 (プログラマが曞ける皋床) を芁求したす。
    • 私たちは問題の原因を解決するのではなく、問題を解決したす - すでに述べたこずです。 ナヌザヌを問題から守るこずは私たちにずっお重芁です。
    • クリアランスはございたす。 たずえば、2 分以内にトラフィックの XNUMX% が倱われた堎合は、ダりンタむムずはみなされたせん。 これは基本的に統蚈には含たれおいたせん。 それがパヌセンテヌゞでより倚くの堎合、たたは䞀時的な堎合は、すでにカりントされおいたす。
    • そしお私たちは垞に事埌分析を曞きたす。 私たちに䜕が起こっおも、本番環境で誰かが異垞な行動をずった状況は事埌分析にも反映されたす。 事埌怜蚌ずは、自分に䜕が起こったのか、詳现なタむミング、それを修正するために䜕をしたか、そしおこれは必須のブロックです今埌このようなこずが起こらないようにするために䜕をするかを曞く文曞です。 これは必須であり、その埌の分析に必芁です。

    ダりンタむムずは䜕ですか?

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    これは䞀䜓䜕をもたらしたのでしょうか

    これにより、過去 6 か月間での安定性指暙は 99,97 でした (安定性に関しお特定の問題があり、これはクラむアントにも私たちにも適しおいたせんでした) ずいう事実が生じたした。 これはそれほど倚くないず蚀えたす。 はい、私たちには努力すべきこずがありたす。 この指暙のうち、玄半分は、いわば、私たちの安定性ではなく、私たちの目の前にあり、サヌビスずしお䜿甚されおいる Web アプリケヌション ファむアりォヌルの安定性ですが、クラむアントはこれを気にしたせん。

    私たちは倜寝るこずを孊びたした。 ぀いに 半幎前にはできたせんでした。 この結果に関しお、2 ぀泚意しおおきたいず思いたす。 昚倜、原子炉の制埡システムに関する玠晎らしい報告がありたした。 このシステムを䜜成した人に私の声が聞こえるなら、「2% はダりンタむムではない」ずいう私の蚀葉は忘れおください。 あなたにずっお、たずえ XNUMX 分であっおも XNUMX% はダりンタむムです。

    それだけです あなたの質問。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    バランサヌずデヌタベヌスの移行に぀いお

    聎衆からの質問以䞋、B – こんばんは。 このような管理者レポヌトをありがずうございたす! バランサヌに぀いおの短い質問です。 WAF があるずおっしゃいたしたが、぀たり、ある皮の倖郚バランサヌを䜿甚しおいるず理解しおいたす。

    EK: – いいえ、圓瀟のサヌビスはバランサヌずしお䜿甚されたす。 この堎合、WAF は私たちにずっおもっぱら DDoS 防埡ツヌルです。

    で – バランサヌに぀いお䞀蚀お願いしたす。

    EK: – すでに述べたように、これは openresty 内のサヌバヌのグルヌプです。 珟圚、排他的に応答する 5 ぀の予玄グルヌプがありたす。぀たり、openresty のみを実行するサヌバヌであり、トラフィックのみをプロキシしたす。 したがっお、私たちがどのくらいの量を保持しおいるかを理解するには、珟圚、数癟メガビットの通垞のトラフィック フロヌがありたす。 圌らは察凊し、気分が良く、無理をするこずさえありたせん。

    で ――玠朎な疑問も。 こちらはBlue/Green展開です。 たずえば、デヌタベヌスの移行では䜕をしたすか?

    EK: - 良い質問 ブルヌ/グリヌン展開では、回線ごずに個別のキュヌがありたす。 ぀たり、ワヌカヌからワヌカヌに送信されるむベント キュヌに぀いお話しおいる堎合、青の線ず緑の線には別個のキュヌが存圚したす。 デヌタベヌス自䜓に぀いお話しおいる堎合、意図的に可胜な限り絞り蟌み、実質的にすべおをキュヌに移動し、デヌタベヌスにはトランザクションのスタックのみを保存したす。 たた、トランザクション スタックはすべおの行で同じです。 このコンテキストのデヌタベヌスでは、コヌドの䞡方のバヌゞョンがトランザクションで䜕が起こっおいるかを認識する必芁があるため、デヌタベヌスを青ず緑に分割したせん。

    皆さん、私もあなたたちに刺激を䞎えるちょっずしたご耒矎を甚意しおいたす。それは本です。 そしお、最優秀質問ずしお衚地されるはずです。

    で - こんにちは。 ご報告ありがずうございたす。 質問はこれです。 あなたは支払いを監芖し、通信するサヌビスを監芖したす...しかし、ある人がどういうわけか支払いペヌゞにアクセスしお支払いを行い、プロゞェクトがその人にお金を入金したこずをどうやっお監芖するのでしょうか? ぀たり、マヌチャントが察応可胜であり、コヌルバックを受け入れたこずをどのように監芖するのでしょうか?

    EK: – この堎合の「加盟店」ずは、決枈システムずたったく同じ倖郚サヌビスです。 私たちは販売者の応答速床を監芖したす。

    デヌタベヌスの暗号化に぀いお

    で - こんにちは。 少し関連した質問がありたす。 PCI DSS の機密デヌタがありたす。 転送する必芁があるキュヌに PAN をどのように保存するのか知りたいのですが。 暗号化を䜿甚しおいたすか? そしお、これは XNUMX 番目の質問に぀ながりたす。PCI DSS によれば、倉曎 (管理者の解任など) があった堎合にはデヌタベヌスを定期的に再暗号化する必芁がありたす。この堎合、アクセシビリティはどうなりたすか?

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    EK: - 玠晎らしい質問ですね たず、PAN をキュヌに保存したせん。 原則ずしお、私たちには PAN をクリアな圢匏でどこにも保存する暩利がないため、特別なサヌビス (「Kademon」ず呌びたす) を䜿甚したす。これは XNUMX ぀のこずだけを行うサヌビスです。入力ずしおメッセヌゞを受信し、送信したす。暗号化されたメッセヌゞを送信したす。 そしお、この暗号化されたメッセヌゞずずもにすべおを保存したす。 したがっお、キヌの長さは XNUMX キロバむト未満であるため、これは深刻で信頌性がありたす。

    で – 今は 2 キロバむト必芁ですか?

    EK: – ぀い昚日たで 256 だったような気がしたす... さお、他にはどこがあるでしょうか?!

    したがっお、これが最初です。 そしお第二に、既存の゜リュヌションは、再暗号化手順をサポヌトしおいたす。3 ぀のペアの「keks」キヌがあり、暗号化する「デック」を提䟛したすキヌはキヌであり、デックは暗号化するキヌの掟生です。 。 そしお、この手順が開始されるず (XNUMX か月から±数か月たで定期的に発生したす)、新しい「ケヌキ」のペアをダりンロヌドし、デヌタを再暗号化したす。 圓瀟では、すべおのデヌタを削陀し、新しい方法で暗号化する別のサヌビスを提䟛しおいたす。 デヌタは、暗号化されたキヌの識別子の隣に保存されたす。 したがっお、新しいキヌでデヌタを暗号化するずすぐに、叀いキヌは削陀されたす。

    堎合によっおは、手動で支払いを行う必芁がある堎合もありたす...

    で – ぀たり、䜕らかの操䜜に察しお返金が届いた堎合でも、叀いキヌを䜿甚しお埩号化したすか?

    EK: - はい。

    で – それでは、もう XNUMX ぀の小さな質問です。 䜕らかの障害や萜䞋、むンシデントが発生した堎合、手動で取匕を進める必芁がありたす。 そのような状況がありたす。

    EK: - はい、時々。

    で – このデヌタはどこから入手したのですか? それずも自分でこの保管斜蚭に行きたすか

    EK: – いいえ、もちろん、サポヌトのためのむンタヌフェヌスを含むある皮のバックオフィス システムがありたす。 トランザクションがどのようなステヌタスにあるのかがわからない堎合 (たずえば、支払いシステムがタむムアりトで応答するたで)、アプリオリにわかりたせん。぀たり、完党な自信を持っおのみ最終ステヌタスを割り圓おたす。 この堎合、トランザクションを手動凊理甚の特別なステヌタスに割り圓おたす。 翌日の朝、サポヌトは、これこれのトランザクションが支払いシステムに残っおいるずいう情報を受け取るずすぐに、このむンタヌフェむスで手動で凊理したす。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    で – いく぀か質問がありたす。 その 99,97 ぀は、PCI DSS ゟヌンの継続です。回路をどのように蚘録したすか? この質問は、開発者がログに䜕でも曞き蟌める可胜性があるためです。 XNUMX 番目の質問: ホットフィックスはどのように展開したすか? デヌタベヌス内のハンドルを䜿甚するこずは XNUMX ぀のオプションですが、無料のホットフィックスがある堎合がありたす。その手順は䜕ですか? XNUMX 番目の質問は、おそらく RTO、RPO に関連するものです。 可甚性は XNUMX で、ほが XNUMX でした。しかし、私が理解しおいるずころによるず、XNUMX 番目のデヌタ センタヌ、XNUMX 番目のデヌタ センタヌ、XNUMX 番目のデヌタ センタヌがあるず思いたす。それらの同期、耇補、その他すべおをどのように行うのですか?

    EK: - 最初のものから始めたしょう。 最初の質問はログに関するものでしたか? ログを曞き蟌むずき、すべおの機密デヌタをマスクするレむダヌがありたす。 圌女はマスクず远加のフィヌルドを確認したす。 したがっお、ログには、すでにマスクされたデヌタず PCI DSS 回路が含たれおいたす。 これは、テスト郚門に割り圓おられる通垞のタスクの XNUMX ぀です。 圌らは、開発者が䜕かを曞き留めおいないこずを制埡するために、曞き蟌んだログを含む各タスクをチェックする必芁がありたす。これは、コヌドレビュヌ䞭の定期的なタスクの XNUMX ぀です。 その埌のチェックは、情報セキュリティ郚門によっお週に XNUMX 回皋床定期的に実行されたす。最終日のログが遞択的に取埗され、テスト サヌバヌから特別なスキャナヌ アナラむザヌを介しおすべおがチェックされたす。
    ホットフィックスに぀いお。 これは圓瀟の配備芏制に含たれおいたす。 ホットフィックスに぀いおは別の条項を蚭けおいたす。 私たちは、必芁なずきにホットフィックスを XNUMX 時間䜓制で展開しおいるず考えおいたす。 バヌゞョンが組み立おられ、実行され、成果物が埗られるずすぐに、サポヌトからの電話でシステム管理者が垞駐し、必芁なずきにすぐにデプロむされたす。

    「フォヌナむン」に぀いお。 私たちが今持っおいる数字はたさに達成されたものであり、私たちは別のデヌタセンタヌでそれを目指しお努力したした。 珟圚、XNUMX 番目のデヌタ センタヌがあり、それらの間のルヌティングを開始しおいたすが、デヌタ センタヌ間のレプリケヌションの問題は、たさに重芁な問題です。 私たちはさたざたな手段を䜿っお䞀床にそれを解決しようずしたした。同じ「タランチュラ」を䜿甚しようずしたしたが、うたくいきたせんでした。すぐにお䌝えしたす。 そのため、最終的に「sens」を手動で泚文するこずになりたした。 実際、システム内の各アプリケヌションは、デヌタセンタヌ間で必芁な「倉曎完了」同期を非同期で実行したす。

    で – XNUMX本目を手に入れたのなら、なぜXNUMX本目を手に入れなかったのですか ただ誰もスプリットブレむンを持っおいないので...

    EK: – しかし、私たちにはスプリットブレむンはありたせん。 各アプリケヌションはマルチマスタヌによっお駆動されるため、リク゚ストがどのセンタヌに送信されたかは私たちにずっお重芁ではありたせん。 デヌタ センタヌの XNUMX ぀が故障し (これに䟝存しおいたす)、ナヌザヌのリク゚ストの途䞭で XNUMX 番目のデヌタ センタヌに切り替わった堎合、実際にこのナヌザヌを倱う可胜性があるずいう事実に備えおいたす。 しかし、これらは単䜍、絶察単䜍になりたす。

    で - こんばんは。 ご報告ありがずうございたす。 本番環境でいく぀かのテスト トランザクションを実行するデバッガに぀いお話したした。 しかし、テストトランザクションに぀いお教えおください。 どれくらいの深さたで行きたすか

    EK: – コンポヌネント党䜓の党サむクルを通過したす。 コンポヌネントの堎合、テスト トランザクションず運甚トランザクションの間に違いはありたせん。 しかし、論理的な芳点から芋るず、これは単にシステム内の別個のプロゞェクトであり、テスト トランザクションのみが実行されたす。

    で ―どこで切るんですか ここにコアが送信されたした...

    EK: – この堎合、私たちはテストトランザクションのために「Kor」の背埌にいたす...私たちはルヌティングのようなものを持っおいたす「Kor」はどの支払いシステムに送信するかを知っおいたす - 私たちは停の支払いシステムに送信したす、それは単にhttp信号を䞎え、それだけです。

    で – 教えおください、あなたのアプリケヌションは XNUMX ぀の巚倧なモノリスで曞かれおいたしたか、それずもいく぀かのサヌビスたたはマむクロサヌビスに分割されたしたか?

    EK: – もちろん、モノリスはありたせん。サヌビス指向のアプリケヌションがありたす。 私たちのサヌビスはモノリスでできおいるず冗談を蚀っおいたすが、実際には非垞に倧芏暡です。 マむクロサヌビスず呌ぶのは難しいですが、分散マシンのワヌカヌがその䞭で動䜜するサヌビスです。

    サヌバヌ䞊のサヌビスが䟵害された堎合...

    で –それでは次の質問です。 たずえそれがモノリスだったずしおも、あなたは、これらのむンスタント サヌバヌが倚数あるず蚀いたした。それらはすべお基本的にデヌタを凊理したす。問題は、「むンスタント サヌバヌの XNUMX ぀たたはアプリケヌションが䟵害された堎合、個々のリンクは、䜕らかのアクセス制埡があるのでしょうか どちらが䜕ができるでしょうか どのような情報を埗るには誰に連絡すればよいですか?

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    EK: - はい、間違いなく。 セキュリティ芁件は非垞に厳しいものです。 たず、オヌプンデヌタの移動があり、ポヌトはトラフィックの移動が事前に予枬されるポヌトのみです。 コンポヌネントが 5-4-3-2 経由でデヌタベヌス (たずえば、Muskul ず) 通信する堎合、5-4-3-2 のみがそのコンポヌネントに察しおオヌプンになり、他のポヌトや他のトラフィック方向は䜿甚できなくなりたす。 さらに、圓瀟の本番環境には玄 10 個の異なるセキュリティ ルヌプがあるこずを理解する必芁がありたす。 たずえアプリケヌションが䜕らかの圢で䟵害されたずしおも、これは別のネットワヌク セキュリティ ゟヌンであるため、攻撃者はサヌバヌ管理コン゜ヌルにアクセスするこずはできたせん。

    で – この文脈で、私にずっおより興味深いのは、サヌビスず特定の契玄を結んでいるずいうこずです。サヌビスで䜕ができるか、どのような「アクション」を通じお盞互に連絡できるか...そしお、通垞の流れでは、特定のサヌビスがいく぀かのサヌビスを芁求したす。もう䞀方の行には「アクション」のリストが衚瀺されたす。 圌らは通垞の状況では他人に頌るこずはないようで、他の責任領域を抱えおいたす。 そのうちの XNUMX ぀が䟵害された堎合、そのサヌビスの「動䜜」を䞭断するこずができるでしょうか?

    EK: - わかりたした。 通垞の状況で別のサヌバヌずの通信が蚱可されおいる堎合は、「はい」です。 SLA 契玄によれば、最初の 3 ぀の「アクション」のみが蚱可され、4 ぀の「アクション」は蚱可されないずいうこずは監芖されたせん。 圓瀟では原理的に回路に察しお 4 レベルの保護システムをすでに導入しおいるため、これはおそらく冗長です。 私たちはむンサむドのレベルではなく、茪郭で自分たちを守るこずを奜みたす。

    Visa、MasterCard、ズベルバンクの仕組み

    で – あるデヌタセンタヌから別のデヌタセンタヌぞのナヌザヌの切り替えに぀いおの点を明確にしたいず思いたす。 私の知る限り、Visa ず MasterCard は 8583 バむナリ同期プロトコルを䜿甚しお動䜜しおおり、混圚しおいたす。 そしお、私が知りたかったのは、今、切り替えずいうこずは、盎接「Visa」ず「MasterCard」なのでしょうか、それずも支払いシステムの前、凊理の前なのでしょうか

    EK: - これはミックス前です。 私たちのミックスは同じデヌタセンタヌにありたす。

    で – ざっくり蚀うず、接続ポむントはXNUMX぀ですか

    EK: – 「Visa」ず「MasterCard」 – はい。 単玔に、たずえば XNUMX 番目のミックス ペアを取埗するために個別の契玄を締結するには、Visa ず MasterCard がむンフラストラクチャにかなり倚額の投資を必芁ずするからです。 これらは XNUMX ぀のデヌタ センタヌ内で予玄されおいたすが、䞇が䞀、Visa ず MasterCard ぞの接続が混圚しおいる圓瀟のデヌタ センタヌが停止した堎合、Visa ず MasterCard ずの接続が倱われるこずになりたす...

    で – 予玄はどのようにしお行うこずができたすか? Visa では原則ずしお XNUMX 回の接続しか蚱可されおいないこずは知っおいたす。

    EK: – 圌らは機噚を自分たちで䟛絊したす。 いずれにせよ、内郚は完党に冗長化された機噚を受け取りたした。

    で – スタンドはConnects Orangeのものですか

    EK: - はい。

    で – しかし、この堎合はどうでしょうか。デヌタセンタヌが消滅した堎合、どうやっおそれを䜿い続けるこずができるのでしょうか? それずもただ亀通が止たっただけでしょうか

    EK: - いいえ。 この堎合、トラフィックを別のチャネルに切り替えるだけですが、圓然のこずながら、私たちにずっおもクラむアントにずっおもコストが高くなりたす。 ただし、トラフィックは Visa や MasterCard ぞの盎接接続を経由せず、条件付きの Sberbank を経由したす (非垞に倧げさです)。

    ズベルバンクの埓業員を気分を害した堎合は、心からお詫び申し䞊げたす。 しかし、我々の統蚈によるず、ロシアの銀行の䞭でズベルバンクが最も頻繁に砎綻しおいる。 ズベルバンクで䜕かが萜ちない月はありたせん。

    HighLoad++、Evgeniy Kuzovlev (EcommPay IT): 100000 分間のダりンタむムで XNUMX ドルの損倱が発生した堎合の察凊方法

    いく぀かの広告 🙂

    い぀もご宿泊いただきありがずうございたす。 私たちの蚘事が気に入っおいたすか? もっず興味深いコンテンツを芋たいですか? 泚文したり、友人に勧めたりしお私たちをサポヌトしおください。 開発者向けのクラりド VPS は 4.99 ドルから, 圓瀟があなたのために発明した、゚ントリヌレベルのサヌバヌのナニヌクな類䌌物です。 VPS (KVM) E5-2697 v3 (6 コア) 10GB DDR4 480GB SSD 1Gbps 19 ドルからの真実、たたはサヌバヌを共有する方法? (RAID1 および RAID10、最倧 24 コア、最倧 40GB DDR4 で利甚可胜)。

    アムステルダムの゚クむニクス Tier IV デヌタセンタヌでは Dell R730xd が 2 倍安い? ここだけ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV 199 ドルから オランダで Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 ドルから! に぀いお読む むンフラストラクチャヌ䌁業を構築する方法730 ペニヌで 5 ナヌロの䟡倀がある Dell R2650xd E4-9000 vXNUMX サヌバヌを䜿甚したクラスですか?

出所 habr.com

コメントを远加したす