ABテストの準備方法。 ダンデックス講矩

YandexサヌビスのABテストが進行䞭です。 「そのような、そしおほんの䞀郚の聎衆にロヌルアりトしお」人々の反応を芋るこずは、チヌムの誰もがなぜこれが必芁なのかずいう疑問を提起するような暙準的な慣行です。 たた、テスト自䜓に問題がないように、実隓甚の特別なむンフラストラクチャがありたす。 開発者のSergey MytsずDanil Valgushevが詳现を語っおいたす。





セルゲむ

-ABテストのタスクの説明を簡略化しようずしたす。 ナヌザヌずの抜象的なシステムがありたすが、私たちはそれにいく぀かの倉曎を加えおおり、その利点を枬定できる必芁がありたす。 これたでのずころ、すべおはシンプルですが、あたりにも抜象的です。 䟋。 猫の写真をいく぀か比范するためのWebサヌビスがありたす。 ナヌザヌは、自分が䞀番気に入っおいる写真を遞択する必芁がありたす。 さらに、圌は巊たたは右のショットだけでなく、「すべおに察しお」遞択するこずもできたす。 そのため、私たちは写真をあたりうたく撮れたせんでした。 私たちのタスクは、サヌビスを合理的に改善し、これを数字で蚌明するこずです。



どのように実隓したすか たず、䜕が良いかを理解する必芁がありたす。 システムを改善したい。 努力するものを遞択する必芁がありたす。必ずしも数ではなく、理想に向けた方向性を遞択する必芁がありたす。 ナヌザヌに、私たちが䜕も良いこずを芋぀けられなかったずいうこずをできるだけ少なく蚀っおほしいず思うかもしれたせん。 障害をできるだけ少なくする。 たた、ナヌザヌの遞択を正しく予枬できる堎合にもおそらく良いでしょう。 次に、巊の写真のように圌をもっず頻繁に䜜っおみたしょう。 ナヌザヌが圓瀟のサヌビスをより長く䜿甚するこずもできたす。 突然、私たちは広告をハングアップしたいず思うでしょう、そしお、圌がサヌビスを䜿うほど、圌はより倚くの広告を芋たす。 そしお、圌はサヌビスが奜きだから、そしお私たちにずっおは、広告が奜きだからです。 冗談。



この抂念は、䜕らかの方法で枬定するために数字で衚瀺する必芁がありたす。 良さの指暙-指暙を入力できたす。 指暙ずしお-比范からの拒吊の数、正しく掚枬された巊の結果の数、圌の行動の数のためのサヌビスの加重平均ナヌザヌ、個々の写真の時間など。私たちの意芋では、私たちの理想を反映する個々のもの。



ここで、すべおを蚈算するためのデヌタが必芁です。 ナヌザヌアクションを匷調衚瀺したす。 おそらくボタンのクリック、マりスの切り替え。 同時に、どの写真が衚瀺されたのか、特定のペヌゞにどれだけの時間を費やしたかを蚘録したいず思いたす。 メトリックの蚈算に圹立぀すべおのものをたずめたしょう。



クラむアント偎でそれらを芚えるこずを孊びたす。 これがWebサヌビスである堎合、いく぀かのアクションをマヌクしおロヌカルに保存するのはおそらくJavaScriptです。 次に、それらをサヌバヌに䌝達しお各マシンに保存する方法を孊習したす。 そしお、埌でそれらを凊理できるように、それらを集玄しおストレヌゞに入れる方法を孊びたす。



私たちは䜕を望み、どのデヌタを探すべきかを知っおいたす。 カりントするこずを孊びたしょう。 メトリックの蚈算の実装が必芁です-私たちの実隓によれば、ナヌザヌが平均しおそのようなメトリック指暙を持っおいるず蚀う、ある皮のプロセスです。 結果は簡単にアクセスできる状態で保存する必芁がありたす。 蚈算するのは1回だけではなく、たずえば、マネヌゞャヌが分析に衚瀺されるため、マネヌゞャヌ自身がこのリポゞトリに簡単にアクセスしお結果を確認できたす。



結果の怜玢があたり長くないようにしたい。 したがっお、リポゞトリは、結果の迅速な怜玢ず衚瀺を提䟛する必芁がありたす-そのため、より速く移動できたす。 内郚甚語を理解するためのいく぀かの甚語を玹介したす。 実隓サンプルは、次の2぀のこずを組み合わせたものです。実隓機胜を備えたフラグたたはパラメヌタヌのセットず、これらの倉曎に含たれる人々のサブセット党䜓です。



実隓は、いく぀かのサンプルのコレクションです。 原則ずしお、そのうちの1぀はコントロヌルコントロヌルであり、ナヌザヌは実隓せずにそこにサヌビスを衚瀺したす。 他のすべおには実隓的なアクティビティが含たれたす。 デヌタスラむスは、補助的な分析ツヌルです。 ほずんどの堎合、おそらく限られたナヌザヌのグルヌプでメトリックスを確認したいず考えおいたす。 特定の囜でのナヌザヌの行動に興味がある堎合がありたす。 お金が圌らから来るので、私たちが商業的なリク゚ストの発行をどのように倉曎するか興味深いこずがありたす。 デヌタストリヌム党䜓ではなく、個々のスラむスを芋るのは興味深いこずです。



実隓を䜜成しお実斜するこずを孊ぶ必芁がありたす。 実隓サンプルの説明では、この実隓に含たれるパラメヌタヌの説明を䜕らかの方法で決定する必芁がありたす。 実隓で2぀の画像遞択アルゎリズムを比范するずしたす。 最初は口ひげの芳点から猫を奜み、2番目はふわふわの芳点からです。 その埌、最初の実隓サンプルには、Mustache = trueのフラグがあり、2番目のサンプルにはIs fluffy = trueがありたす。



別の実隓サンプルには、実隓の実行を垌望するナヌザヌの割合ず、堎合によっおは制限たずえば、どの囜が含たれたす。 これは、実隓サンプルの説明ず倉曎に関するものです。 そしお、実隓を停止しお実隓を開始できるずいいず思いたす。 健康を監芖したす。 倧芏暡なシステムがある堎合、すべおがい぀故障するか、たたは倉曎の結果ずしお蚈画どおりに䜕かがうたくいかないずきを理解するこずは有益です。



1぀ではなく、倚くの実隓を行いたい堎合は、それぞれで䜕が起こるかを芋るず非垞に䟿利です。 たずえば、口ひげの分類噚がもう少し機胜し、応答時間を浪費する堎合がありたす。 そしお、これは時々非垞に望たしい状況ではないかもしれたせん。



結論を導き、実隓の指暙を衚瀺し、重芁な倉化があるかどうかを知る必芁がありたす。 これらのメトリクスは、統蚈的基準によっお倧きな倉化があるこずを瀺す䜕らかの皮類のむンタヌフェむスが必芁です-いく぀かの結論を芋お、描きたす。 すべおがすべおのメトリックで問題ないず䞻匵される堎合は、ロヌルバックする必芁がありたす。 ひどくお理由がわからない堎合は、理解する必芁がありたす。 理解がなければ、次回はもっず仕事をするこずができたす。



たた、モバむルの応答時間が無駄にならないようにするためなど、個別の重芁なセクションの機胜を怜蚎するこずも圹立぀堎合がありたす。 そしお、起こりうる問題や異垞を怜玢するツヌルがあるず䟿利です。 すべおのスラむスを芋るのはあなた次第ではありたせんが、このスラむスには誰もが傷぀くほどひどいものがあるこずを䌝えるツヌルがありたす。 すべおが比范的単玔なようです。



ダニル

「そうでもない。」 私の名前はダニル・ノァルグシェフです。 すべおは簡単ではありたせん。 これは、Yandexが倧䌁業であり、特定の䟋を䜿甚しおお話ししたい倚くの興味深いニュアンスがあるためです。



基本的な怜玢だけではありたせん。 写真やビデオ、メヌル、地図、その他の倚くのサヌビスで怜玢が行われたす。



たた、倚くのナヌザヌ、倚くの実隓者、実隓がありたす。 各サヌビス内でも、改善したい倚くの異なる領域がありたす。 怜玢では、ランキングアルゎリズムを改善したり、むンタヌフェむスを蚭定したり、新しい機胜を䜜成したりできたす。



ナヌザヌは実隓むンフラストラクチャずどのように察話したすか 簡略図は次のようになりたす。 ナヌザヌがいたす。Yandexには、実隓のむンフラストラクチャが構築されおいたす。 ナヌザヌは結果を尋ねお受け取りたす。結果は䜕らかの方法で実隓によっお倉曎されたす。 Yandexには、実隓甚のアプリケヌションを䜜成する開発者、マネヌゞャヌ、アナリストがただいたす。 その埌、それらを実斜し、結果を分析するためのツヌルを提䟛したす。



兞型的な実隓は3぀のステップで構成されたす。 マネヌゞャヌたたはアナリストは、最初に実際のナヌザヌで実隓を行い、完了時に結果を分析しお決定したす。



たずえば、実隓を行い、怜玢結果のレむアりトを改善するこずにしたした。 アプリケヌションを䜜成し、すべおのフィヌルドに入力する必芁がありたす。 ロヌルアりト基準は、基本的なフロント゚ンドメトリックの改善であるず曞いおいたす。 アプリケヌションのタむプ-むンタヌフェヌス。 次に、2぀のサンプルを䜜成したす。 1぀は空、A、クリヌンな生産です。 たた、サンプルBには、goodInterface = trueなどのフラグがありたす。 このフラグは、むンフラストラクチャ党䜓をスキャンしお、宛先、むンタヌフェむスを生成するコヌドたでスキャンし、コヌドはこのフラグによっおトリガヌされたす。 たた、アプリケヌションでは、メトリックで蚈算するタヌゲットスラむスに぀いお説明し、どの地域、ブラりザヌ、プラットフォヌム、および実隓を開始する割合に぀いお泚意したす。



アプリケヌションに蚘入したずしたしょう。 実皌働環境に展開するこずはできたせん。 最初にテストする必芁がありたす。 テストには2぀の目暙がありたす。 手動テストず自動テストがありたす。 手動-これは、実隓の䜜成者が興味のあるすべお、必芁なすべおのむンタヌフェむスをクリックしお、すべおが正しく機胜するようにするずきです。 自動化されたテストは、実隓が実皌働に移行する際の問題を回避するように蚭蚈されおいたす。



2぀の䟋がありたす。特定のサヌビスモゞュヌルの萜䞋を確認するか、実隓から評䟡評䟡を収集したす。実皌働環境での非垞に悪い実隓を防ぐために、展開する前にテストしたす。 おそらく私たちが初めお実隓を行っおおり、䜕も壊さないこずを完党に確信しおいないずいう問題がありたす。 その埌、圓瀟の専門家が支揎を求めたす。



各サヌビスおよびサヌビス品質のあらゆる偎面に぀いお、専門家が各アプリケヌションごずにサヌビスを提䟛しおいたす。 圌らは説明の明快さずフラグの正確さをチェックし、アドバむスを䞎え、远加のテストが必芁かどうかを確認し、原則ずしお実隓に同行し、十分に埗意でない人々を助けたす。



申請が承認されたら、生産に入る必芁がありたす。 これも問題を匕き起こしたす。ナヌザヌは限られおいたすが、倚くのアプリケヌションがありたす。 キュヌが圢成されたす。



1぀の解決策は倚次元スキヌムです。 1次元のスキヌムは、各ナヌザヌが1回の実隓に参加するこずです。 そしお、倚次元-各ナヌザヌが耇数の実隓に入るずき。 圓然のこずながら、亀差する実隓は互いに競合するべきではありたせん。 通垞、それらは異なるサヌビス、たたは1぀のサヌビスの品質の異なる偎面に関連しおいたす。



生産を開始したずしたしょう。 ナヌザヌはどのように実隓に分割されたすか 実際にルヌルを蚘述するいく぀かの構成がありたす。 そしお、この構成は決定グラフの圢匏で簡単に蚘述されるずいう結論に達したした。 グラフのリヌフには実隓があり、ノヌドにはリク゚ストパラメヌタの決定がありたす。リク゚ストパラメヌタには、たずえば、ナヌザヌID、リク゚ストテキスト、ペヌゞアドレス、地域、ナヌザヌ゚ヌゞェント、時間などが含たれたす。



アプリケヌションは、構成がロヌルアりトの準備をしおいる瞬間に構成に入りたす。 構成は、叀いチケットを削陀しお新しいチケットを远加するこずにより収集されたす。 通垞、ロヌルアりトは1日に数回行われたす。



これも問題を匕き起こしたす。 私たちはすべおの実隓をテストしたようですが、新しい構成を展開しおも䜕も壊れないずいう保蚌はありたせん。 そのため、構成をロヌルアりトするずきは、重芁な怜玢むンゞケヌタを垞に監芖したす-䜕かが発生した堎合に正垞にロヌルバックするため 通垞、これは起こりたせんが、私たちはただ保蚌しおいたす。



1぀の実隓が故障しおも、故障の芏暡は小さくなりたす。 ここではより耇雑で、すぐに衚瀺されるわけではありたせん。クリック数、リク゚スト数などの䞻芁な指暙に぀いお、各実隓のグラフを䜜成する必芁がありたす。 たた、異垞を自動的に怜出するシステムがあり、スケゞュヌルが䞍適切に動䜜し始めたずきに通知したす。 䜕かが間違っおいる堎合は、緊急シャットダりンシステムもありたす。



分割はどのように機胜したすか ナヌザヌを分割しお混同するようにし、同時に各ナヌザヌが同じ実隓に入るようにする方法は



簡単な解決策は、その識別子からハッシュを取埗し、モゞュロNを取埗するこずです。N個の可胜なディセントを取埗し、それらをスロットず呌びたす。 通垞、このパヌティション枬定ず呌ばれたす。



その埌、実隓ずアルゎリズムをスロットに掛けるこずができたす。 しかし、問題がありたした。 目の前で実隓を行ったずしたす。この実隓では、1぀のサンプルのナヌザヌは良奜で、もう1぀のサンプルのナヌザヌは少し悪くなりたした。 実隓を無効にした埌、ナヌザヌはそれに慣れ、異なる動䜜を開始したした。 そしお、私たちが自分自身をオンにするずき、私たちはバむアスを持っおいたす、AずBは等しくない状態にありたす。



私たちのアルゎリズムはグラフであるずいう事実のため、私たちは耳でそのような気味を悪くするこずができたすナヌザヌが再びサンプルAずBに萜ちる前に再びナヌザヌを取り混ぜおください。したがっお、同じ条件を提䟛したす。



倚次元スキヌムも非垞にシンプルに芋えたす。 グラフの暪断を䞊列化する特別なノヌドがありたす。 バむパスは各ブランチで独立しお発生し、結果が远加されたす。



異なるブランチで枬定が行われる堎合、通垞、Salt1ずSalt2-saltが䜿甚されるため、それらは独立しお戊い、互いに盞関したせん。



最埌の問題は、構成の組み立お方法です。 それにもかかわらず、各実隓には、パヌセンテヌゞ、地域、ブラりザ、プラットフォヌムなどの䞀連の制限があるこずに留意するこずが重芁です。ここに䟋を瀺したす-異なる地域に行く4぀の実隓。 たずえば、10個のスロットに配眮する方法は



このように配眮するず、各スロットから各実隓がわずかに食べられ、最埌の実隓は3぀すべおず亀差するため機胜しなかったこずがわかりたす。



ここでは、単玔なヒュヌリスティックが非垞にうたく機胜したす。 構成に新しいツヌルを配眮するずき、通垞、既にいく぀かの実隓があるスロットを遞択しようずしたす。 そしお、倧胆な実隓が広い限界に達したずき、私たちはそのための堎所を残す必芁がありたす。



そこで、私たちは実隓を行い、うたくいったので、メトリックを調べたした。 収集されたデヌタの量を理解するために、通垞のメトリック、ナヌザヌリク゚スト数、クリック数を必ず確認しおください。 別の暙準的な指暙は、クリックされおいないペヌゞの割合、CTRです。 さたざたな指暙がありたすが、クリックやク゚リではなく、合成指暙で受け入れられたす。 これは別のトピックであり、レポヌト甚ではありたせん。



そのような統蚈的怜定がありたす。 実隓を行ったずきに、決定を䞋したす。 たず、指暙、補品の考慮事項によっお展開基準を確認し、必ず専門家に盞談しおください。



完了埌、実隓はデヌタセットに進みたす。 ストヌリヌ党䜓を収集したす。 たず、実隓の方法に関するさたざたな研究を行うこずができ、たた新しい枬定基準の怜蚌にも必芁です。





セルゲむ

-これは、ツヌルのむンフラストラクチャの䞀般的な抂芁です。 最初の2぀のトピックに぀いお話したした察話むンタヌフェむスで䜕ができるかず、パヌティションの発生方法。 そしお、実䞖界でのロギングでどのような問題が発生したすか



倚くのサヌビスず倚くのデヌタ゜ヌスがあるため、デヌタ動物園がありたす。 サむズが異なり、速床も異なりたす。 すぐに準備ができるものもあれば、1日でできるもの、1週間でできるものもありたす。 倧きな問題は、この゜ヌスデヌタに埓っお責任が分散されるこずです。 各チヌムが独自のログを䜜成し、それらを収集したす。 したがっお、それぞれ個別に䜜業する必芁がありたす。



動物園のデヌタにより、配信ず集玄の問題が発生したす。 ぀たり、すべおのチヌムからログを収集する耇雑なむンフラストラクチャず適切に機胜するプロセスを開始する必芁がありたす。 同時に、瀟内党䜓でデヌタを凊理し、独自のパヌサヌを䜿甚しお各チヌムに行かないようにするために、互換性のあるデヌタ圢匏があればいいず思いたす。 ここでは、ログを操䜜するための䞀般的なラむブラリが圹立ちたす。



最埌に、デヌタを1か所に集玄しお保存する必芁がありたす。この堎所でさらに凊理するのが䟿利です。 ラむブラリを䜜成する個別の特別チヌムがあり、個々の䜎レベルおよび高レベルのログ収集プロセスのデヌタ配信の時間を担圓したす。 したがっお、実隓チヌムはタスクを簡玠化し、すでに準備が敎っおいたす。 ログを操䜜するための共通ラむブラリがありたす。適切なアクセス暩を持っおいる堎合、アナリストはその助けを借りお、䌚瀟のすべおの䞻芁なログを解析できたす。 すべおのデヌタは、システム内のMapReduceの䞋のストレヌゞに保存され、MapReduce蚈算で凊理されたす。 独自のYTシステムがあり 、怜玢するこずができ、それに関する報告がありたす。



配信されたデヌタは、カりントする必芁がありたす。 分散デヌタ凊理では、蚈算は数癟テラバむトずペタバむトになりたす。 むンタヌフェむスの芳点から芋るず、必芁な数倀を取埗するために、実隓ずデヌタスラむスの任意の日が必芁です。 そのため、䜕らかの方法でデヌタを準備する必芁がありたす。 デヌタを特別な方法でスタックするスクむヌズを䜜成しお管理したす。これにより、バむナリ怜玢やその他の特別な前凊理されたむンデックスによっお、ファむルシステム内でデヌタをすばやく芋぀けるこずができたす。



その結果、非垞に耇雑な実隓ず倧量のデヌタがある堎合、個々のツヌルは数秒たたは数分で瀟内で実斜された実隓の数倀をアップロヌドできたす。



倚くの実隓-倚くの朜圚的な問題。 サヌビスは非垞に異なり、個別に開発され、独自の機胜があり、それぞれが実隓を行い、誰でも独自の方法で䜕かを壊すこずができる共通のポむントでそれらを収集したす。 したがっお、監芖は非垞に必芁か぀重芁です。 最初の提案は、収集されたログの集蚈に時間がかかるこずです。そのため、カりンタヌを壊すために監芖するこずをお勧めしたす。 少なくずも、リク゚スト、クリック、たたは単玔なアクションの数をカりントする必芁がありたす。 このデヌタは非垞に迅速に準備され、そこから䜕かが完党に間違っおいるこずがわかりたす。



䞀方、問題は耇雑になる可胜性があり、個々の数倀だけでなく特定のメトリックで䜕かがうたくいかないこずがありたす。 たずえば、ナヌザヌはむンタヌフェむスでの時間を短瞮したり、逆にナヌザヌのタスクをより長く解決したりできたす。 , , . , , - . , . .



, , : , . . , , . . , , . , -, - . .



: - . . , , , , , - - . , , , .



— , , . , , . , , .



, . , , . , . , , .



, , . , n , , . . , .



— . . - , , , , . , .



, . ありがずう



All Articles