レポート「マイクロサービスについて知っていること」(HL2018、Avito、Vadim Madison)の概要

Hi%username%!



ごく最近、Highload ++カンファレンスは終了しました(主催者とオレグブニンのチーム全体に個人的に感謝します。とてもクールでした!)。



会議の前夜、Alexey fisherは会議で「ストーカー」のイニシアチブグループを作成することを提案しました。 レポートの間に、私たちは交換した小さなメモを書きました。 一部のメモは非常に詳細かつ詳細であることが判明しました。



ソーシャルネットワークのコミュニティはこの形式を積極的に評価したため、私は(許可を得て)最初のレポートの概要を公開することにしました。 この形式が興味深い場合は、さらにいくつかの記事を準備できます。



画像



運転した



Avitoには多くのサービスがあり、それらの間には多くの接続があります。 これにより問題が発生します。





多数のインフラストラクチャ要素:





レイヤーは多数あり、レポートでは1つのみ(PaaS)について説明しています。



プラットフォームには3つの主要部分があります。





標準マイクロサービス開発パイプライン



CLI-push-> CI-> Bake-> Deploy-> Test-> Canary-> Production



CLIプッシュ



長い間、適切な開発者を指導していました。 それでも、それは弱点のままでした。



マイクロサービスの基盤を作成するのに役立つcliユーティリティにより自動化されます。



  1. テンプレートサービスを作成します(多くのPLのテンプレートがサポートされています)。
  2. ローカル開発用のインフラストラクチャを自動的に展開します
  3. データベースを接続します(構成は不要です。開発者はデータベースへのアクセスについては考えません)。
  4. ライブビルド
  5. ディスク生成の自動テスト。


構成はtomlファイルに記述されています。



サンプルファイル:



画像



検証



基本的な検証チェック:





ドキュメント



誰もがドキュメントを持っているべきですが、ほとんど誰もそれを持っていません



ドキュメントには以下を含める必要があります。





ドキュメントを確認する必要があります。



パイプラインの準備





焼く





所有者検索は、プッシュ(プッシュの数とそれらのコードの量)によって決定されます。



潜在的に危険な移行(変更)がある場合、トリガーはAtlasに登録され、サービスは隔離されます。



検疫は、所有者へのプッシュを通じて解決されます(手動モード?)



コンベンションチェック



私たちはチェックします:





テスト



テストは閉ループ(たとえば、hoverfly.io)で実行されます-典型的な負荷が記録されます。 次に、閉ループでエミュレートされます。



リソース消費の対応がチェックされ(極端な場合を別に見て-リソースが少なすぎる/多すぎる)、rpsによってカットオフされます。



負荷テストでは、バージョン間のパフォーマンスデルタも示されます。



カナリアテスト



非常に少数のユーザー(<0.1%)で起動を開始します。



最小負荷5分。 メインの2時間。 その後、すべてが正常であれば、ユーザーのボリュームが増加します。



私たちは見ます:





スクイズテスト



押出試験。



実際のユーザー1インスタンスを障害点までロードします。 その天井を見ます。 次に、別のインスタンスを追加してロードします。 次の天井を見ます。 回帰を見てみましょう。 Atlasの負荷テストのデータを強化または置換します。



スケーリング



CPUのみが悪いので、製品メトリックを追加する必要があります。



最終的なスキーム:





スケーリングするときは、サービスの依存関係を見ることを忘れないでください。 スケーリングのカスケード(+1レベル)を思い出してください。 初期化サービスの履歴データを確認します。



オプショナル





ダッシュボード



上からすべてを集約した形で見て、結論を導き出します。





例:



画像







All Articles