レポート「マイクロサービスについて知っていること」(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レベル)を思い出してください。 初期化サービスの履歴データを確認します。

オプショナル



ダッシュボード


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


例:

画像

Source: https://habr.com/ru/post/J429460/


All Articles