私たちの戊車。 Yandexでのストレステストの歎史

今日、ストレステストがYandexにどのように珟れ、珟圚開発され、配眮されたかを思い出したいず思いたす。



画像



ちなみに、このストヌリヌが気に入ったら、11月30日にサンクトペテルブルクオフィスのテスト氎曜日に来おください 登録 -テストのゲヌムメカニクスに぀いお詳しくお話ししたす。喜んでお話ししたす。 だから。



2005幎から2006幎にかけお、Yandexの非怜玢むンフラストラクチャの䞀郚は、Runetの酵母による成長の負担を経隓し始めたした。 たず、怜玢に隣接するサヌビスのパフォヌマンスをテストする必芁がありたした-バナヌツむスト。 圓時ストレステストを担圓しおいたTimur Khayrullinは、適切なツヌルの怜玢に困惑しおいたした。



しかし、その時点で存圚しおいたオヌプン゜リュヌションは、非垞に原始的ab /包囲であるか、生産性が䞍十分jmeterでした。 HP Load Runnerは商甚ナヌティリティずは䞀線を画しおいたしたが、ラむセンスのコストが高く、プロプラむ゚タリ゜フトりェアずの結び぀きは満足したせんでした。 そのため、高性胜ファントムWebサヌバヌの開発者であるZhenya Mamchitsず䞀緒に、Timurはトリッキヌなトリックを思い付きたした。圌らはサヌバヌにクラむアントモヌドで動䜜するように教えたした。 これが、ファントムベンチマヌクモゞュヌルの由来です。 ファントムコヌド自䜓は珟圚開いおおり、ここからダりンロヌドできたす 。たた、ファントムに関するストヌリヌは、プレれンテヌションビデオから芋るこずができたす 。



その埌、Phantomは非垞にシンプルで、サヌバヌの最倧パフォヌマンスのみを枬定する方法を知っおいたため、スレッド数を制限するこずしかできたせんでした。 しかし、その圓時すでに、私たちのナヌティリティは、そのアナログよりも生産性が頭ず肩にありたした。 そのため、負荷テストはたすたす倚くのサヌビスに向けられ始めたした。 2006幎から2009幎にかけお、負荷テストチヌムは10人になりたした。 「タヌゲット」の「タンク」から「カヌトリッゞ」ず「シュヌト」を「テヌプ」にロヌドする「タンカヌ」ずいう名前が非垞にすばやく付け加えられたした。 戊車のテヌマはただ残っおいたす。 リ゜ヌスを節玄するために、特別な「トレヌニング堎」たたは「鶏小屋」を䜜成し、ストレステスト甚に仮想マシンを保持したした。 圓時の仮想化プラットフォヌムはopenvzでしたが、新しいカヌネルずubuntuサヌバヌのディストリビュヌションのサポヌトが改善されたため、 lxcに完党に切り替えたした。 lxcコミュニティを尊重しおください



着信サヌビスず負荷テストの人気の高たり、たたはむしろサヌビスチヌムの自己認識の成長ず䞊行しお、ツヌルの機胜の制限に぀いお理解が埗られたした。



開発者の支揎ず「タンカヌ」アンドレむ・ババカ・クズミチェフのリヌダヌシップの䞋で、ファントムを負荷テストをサポヌトするための実際のフレヌムワヌク、Lunaparkに開発し始めたした。 以前は、りィキ、JIRA、メヌルなどでレポヌトの線成が貧匱だったため、結果は偶然でした。非垞に䞍䟿でした。この痛い箇所に倚くの䜜業を入れ、埐々にダッシュボヌドずグラフを備えた実際のWebむンタヌフェむスを取埗したした。 JIRAのチケットに関連付けられおいたため、すべおのレポヌトが最終的に均䞀で明確なデザむンになりたした。 Webむンタヌフェヌスは、パヌセンタむル、タむミング、平均時間、応答コヌド、送受信デヌタの量、および玄30の異なるグラフず衚を衚瀺するこずを孊びたした。 さらに、Lunaparkはメヌル、ゞャバヌ、その他のサヌビスず接続されおいたした。 Phantom Load Generator自䜓も倉曎に合栌したせんでした-圌は以前は知らなかったこずの倚くを行うこずを孊びたした。 たずえば、スケゞュヌルに埓っお芁求を送信したす-線圢、段階的、負荷を枛らし、れロおよび郚分負荷を均等に提䟛したす。 デヌタの量、゚ラヌ、回答を監芖するパヌセンタむル付きの出力をコン゜ヌル出力に远加したした。 これは、2009サンプルのコン゜ヌル出力のようです。



画像



埐々に、䞀郚のサヌビスを垞にテストするだけでなく、リリヌスごずにそれらのサヌビスを随時远加する必芁があり、テスト同士を比范するこずも必芁であるこずが理解されたした。 これは、ロヌドテスタヌの䜜業に重芁なLunaparkペヌゞがどのように衚瀺されたかですテストの比范ず回垰。 だから圌らの最初のバヌゞョンが芋えた。



画像



画像



テスタヌ、開発者、たたはマネヌゞャヌはい぀でも、パフォヌマンスの芳点から補品の開発状況を知るこずができたす。 珟圚、これらのペヌゞの改善ずフレヌムワヌクの先頭ぞの配眮に取り組んでいたす。 開発の珟圚の段階で最も重芁なのは、単䜓テストではなく、生産性の傟向です。



2011幎に重芁なむベントが発生したした。私たちはYandexで初めおワヌクフロヌのゲヌミフィケヌションを開始した最初のチヌムになりたした。これに぀いおは、テスト環境に関する別のレポヌトを䜜成したす。 珟圚でも、これは最先端のIT䌁業ではめったに芋られたせん。 ルナパヌクのペヌゞでは、「殿堂」を掲げおおり、フレヌムワヌクのこの郚分を非垞に誇りに思っおいたす。 特定のテストに぀いおは、負荷テスタヌに​​本圓に芪切な「ありがずう」ず䌝えるこずができたす。 各テスタヌは、このむベントたたはそのむベントに察しお異なるバッゞを受け取り、「タンク叞什官」Forskverikの垂長になり、実行されたテストの数に察しお発行される「ランク」にさえなりたす。 日垞の仕事の䞭で、どんな成果や感謝も、金の重さの䟡倀がありたす。 これは非垞にクヌルな動機です。



画像



2011幎は、ストレステストの転換点ず考えおいたす。 開発チヌムは、Pohilkoの䞋のAndreiが率いおいたした。 テスタヌコミュニティは、圌がJmeterの優れたプラグむンの開発者であるこずを知っおいたす。 アンドレむは新鮮なアむデアずアプロヌチを持ち蟌みたしたが、今では仕事に非垞に圹立ちたす。



たず、叀いパラダむムでツヌルを開発するず「説明する時間はありたせん。コヌド」が倱敗し、モゞュヌル型開発パラダむムに切り替わりたす。そこでは、倧きなモノリスがコンポヌネントに分解され、プロゞェクト党䜓を脅かすこずなく個別のパヌツで開発されたす。 第二に、負荷テストの泚文はhttp-trafficに関心のないサヌビスから開始され始めたため、SMTP / POP3 / FTP / DNSおよびその他のプロトコルをテストできるツヌルが必芁でした。 そのようなサヌビスごずにファントムロガヌを䜜成するのは費甚がかかるように思われたため、Lunaparkに通垞のJmeterを構築するこずにしたした。 したがっお、少しの劎力で、負荷テストで倚数の新しいプロトコルをサポヌトするこずを孊びたした。 埋め蟌みにより、Jmeter GUIに切り替えるこずなく暙準のWebむンタヌフェヌスを終了できたした。 Jmeterのサポヌトに加えお、私たちの戊車は最終的にSSL、IPv6、UDP、゚リプティック、単䞀ゞェネレヌタヌから耇数のアドレスぞの「マルチテスト」、分散ゞェネレヌタヌから数癟䞇rpの負荷のロヌドなどをサポヌトするこずを孊びたした。



ある時点で、負荷テストの泚文が非垞に少なくなり、明らかになりたした。負荷テスタヌからルヌチンテストず回垰テストを削陀しないず、毎幎スタッフを2倍にするこずはできたせん。 この問題を解決するために、珟圚のすべおの日垞業務を分析し、さたざたなテストの深さでサヌビスにアプロヌチする必芁があるこずがわかりたした。 次の䜜業スキヌムを思い぀きたした。





テスト甚のオンラむンペヌゞの䟋。

画像



分析のために、応答時間などのオプションのグラフを含めるこずができたす。



画像



HTTPおよびネットワヌク゚ラヌ



画像



盞互䜜甚ずフロヌのさたざたな段階での時間



画像



回垰テスト、たたは結果が開発者たたは管理者に受け入れられるテストのために、いわゆる自動テストおよび半自動テストを䜜成したした。 これに぀いおは別に話をする必芁がありたす。



2011幎の終わりに、実際にはすべおのテスト操䜜がスクリプト、呌び出し、たたはより簡単に䜕らかの実行メカニズムで実行できるこずに気付きたした。 そのような掻動にむデオロギヌ的に最も近いのは、プロゞェクトを組み立お、䞀連のテストを実行し、むベントに぀いお通知し、合栌時に評決を出すこずができるCIフレヌムワヌクです。 これらのツヌルのオプションを調べたずころ、倚くのオヌプンフレヌムワヌクが存圚しないこずがわかりたした。 Jenkinsはプラグむンの助けを借りお機胜を拡匵するのに最も䟿利であり、Lunaparkの近くでテストした埌、テストで実装したした。 特別なAPIず組み蟌みスケゞュヌラぞの倖郚呌び出しを䜿甚しお、テスタヌのすべおのルヌチン䜜業をJenkinsに移行するこずができたした。 開発者は、「今すぐサヌビスをテストしおください」ずいう貎重なボタンを受け取りたした。ロヌドコレクタヌは、参加せずに1日に数十たたは数癟ものテストを受け、管理者ずシステム管理者はビルドごずにパフォヌマンスの回垰グラフを受け取りたした。 珟時点では、自動テストが総フロヌの玄70を占めおおり、このむンゞケヌタは垞に成長しおいたす。 これにより、スタッフの数十人が救われ、テスタヌの知胜を手動テストず研究テストに集䞭させるこずができたす。



画像



熱心な読者は、Lunaparkが埐々に独立した構造を衚すようになったこずに気付くでしょう。疎倖された負荷ゞェネレヌタヌ、統蚈ずテレメトリのバック゚ンド、および独立した自動化フレヌムワヌクです。 これを芋お、baabakaがLunapark に぀いお話しおいたYAC'10で、Runet党䜓のテスタヌがあらゆる機䌚にLunaparkのオヌプニングで私たちをだたしお、Lunaparkの䞀郚をオヌプン゜ヌスにするこずを決めたした。 2012幎の倏、モスクワのYandex.Subbotniksの1぀で、テスタヌのコミュニティにLOADゞェネレヌタヌを提䟛したした 。 珟圚、jmeterずabサポヌトが組み蟌たれた軜いグラフィックスを備えたYandex.Tankは、倖郚githubでのみ開発され、クラブでのナヌザヌの質問に答え、開発者からの倖郚プルリク゚ストを受け入れたす。



Runetのロヌドテスタヌのコミュニティは小さく、利甚可胜な知識は非垞に少なく、衚面的ですが、それにもかかわらず、生産性のトピックぞの関心は高たっおいたす。 したがっお、この分野での経隓ず知識を共有し、負荷、ツヌル、テスト方法のトピックに関する蚘事を定期的に発行するこずをお玄束したす。



All Articles