Peter the Great St. Petersburg Polytechnic UniversityのOdnoklassnikiチームの教育プロジェクトであるTechnopolisに関する講義の公開を開始しています。 負荷の高いアプリケーションを作成することは、コードの設計と作成だけでなく、製品のライフサイクル全体にわたる非常に多くの他の側面でもあります。 負荷の高いシステムを作成して使用するプロセス全体を実行します。 動作機能、ネットワーク、負荷分散、メモリ階層、および日常的なツールに特に注意が払われます。 また、監視、監査などについても説明します。 このコースの講義は、Odnoklassniki Vadim Tseskoの主任開発者が率いる専門家チームによって行われます。
講義リスト:
- はじめに(Vadim Tsesko incubos )
- 典型的なアーキテクチャ(Alexander Khristoforov)
- 操作(イリア・シャチャニコフ)
- ネットワークスタック(Dmitry Samsonov dmitrysamsonov )
- バランシング(アンドレイ・ドーマス)
- プロセッサとメモリ(Alexey Gorbov)
- データウェアハウス(Sergey Egorichev)
- JVM(Andrey Pangin apangin )
- モニタリング(Sergey Sharapov Sharapoff )
- 雲(レオニドタララエフ)
講義1.はじめに(Vadim Tsesko)
プレゼンテーション
Technostreamチャンネルのビデオ
インターネットの出現から始まり、クラウドコンピューティングで終わる、Webおよび情報システムの開発段階の機能に関する議論。 コースの目的と内容、およびこのトピックに関する新しい知識の独立した取得のソースが考慮されます。 結論として、各学生がJavaでHTTP APIを使用して分散キーと値のストレージを開発する個々のプロジェクトについて話しました。
ストレージ開発は、ローカルバージョン、分散バージョン、負荷テスト、最適化の3つの段階に分かれています。 ストアの非公式の仕様が記述され、機能テストのセットが提供されます。 テクノロジーの選択は、何によっても制限されません(Java言語を除く)。 決定は、GitHubでプルリクエストとして行われます。
ライブデモモードの入門講義の終わりに、コースプロジェクトの第1ステージが完了しました。 第3段階では、wrkやYandex.Tankなどの一般的なオープンロードテストツール、およびプロファイリング用の非同期プロファイラーが使用されることに注意してください。
講義2.典型的なアーキテクチャ(Alexander Khristoforov)
プレゼンテーション
Technostreamチャンネルのビデオ
メッセンジャーを例として使用すると、さまざまなアーキテクチャオプション、その利点、欠点、落とし穴が考慮されます。 パフォーマンスと最適化の問題に触れました。 パフォーマンスとフォールトトレランスの両方の目的でシステムをスケーリングする一般的な方法について説明します。 さまざまなレプリケーションオプションとデータの一貫性の問題について詳しく説明します。 結論として、キャッシュ、キューおよびマイクロサービスの使用について話します。
講義3.操作(イリヤ・シャチャニコフ)
プレゼンテーション
Technostreamチャンネルのビデオ
分散サービスの高可用性を確保する問題が考慮されます。 さまざまなタスク、役割、およびそれらを解決するチーム-操作の機能について説明しました。 Odnoklassnikiで開発されたプラクティス、構成管理、変更、可用性、インシデント、問題に基づいて、ITILの最も重要な側面に触れました。 また、大規模システムを管理するときに使用されるツールの違いについても説明します。
講義4.ネットワークスタック(Dmitry Samsonov)
プレゼンテーション
Technostreamチャンネルのビデオ
理論的側面と実用的側面の両方から、ネットワークスタック、TCP / IPで始まり、HTTPSとQUICで終わるネットワークスタック全体を詳細に調査しました。 Linuxでのネットワーク実装の実用的な機能、TCPの最も重要な側面、およびネットワークの構成と最適化のためのツールに特に注意が払われます。 最後に、最新のプロトコルとその開発の動機について説明します。
レクチャー5.バランシング(Andrey Domas)
プレゼンテーション
Technostreamチャンネルのビデオ
負荷分散とは何か、それはどのようなタスクを解決し、どのような問題を引き起こすかについて話します。 一般的なソリューションは、ネットワークモデルのさまざまなレベルで提示されます:マスタースレーブ、L4、GSLB DNS。 CDN機能メカニズムのトピックであるエニーキャストとユニキャストについて説明します。 さらに、バランシングの助けを借りて対抗できるいくつかのタイプの攻撃が考慮されます。
講義6.プロセッサーとメモリー(Alexey Gorbov)
プレゼンテーション
Technostreamチャンネルのビデオ
Von Neumannアーキテクチャからパイプラインアーキテクチャ、マルチコアアーキテクチャ、マルチレベルキャッシング、高度な命令セットへのプロセッサアーキテクチャの進化とその動作メカニズムについて触れます。 講義の第2部では、例としてLinuxを使用したRAM管理の主な側面、つまり仮想メモリ、プロセスメモリ、NUMA、ページ、キャッシュについて説明します。 結論として、典型的な問題が検査され、その診断と除去が行われます。
講義7.データウェアハウス(Sergey Egorichev)
プレゼンテーション
Technostreamチャンネルのビデオ
さまざまなデータウェアハウスについて話しました。 それらがどのような基本的な特徴を持ち、どのように互いに異なるのかを見つけました。 HDDとSSDの動作の基本原理とその機能を検討し、長所と短所も強調しました。 一般的な最適化方法、最も一般的なI / Oスケジューラ、およびファイルシステムについて説明しました。 データウェアハウスを監視する必要性と、特に注意を払う価値があるものについて説明しました。 また、高負荷システムの一部のストレージの基本要件を決定し、アプリケーションの設計中に頻繁に発生するリポジトリのタイプを選択するという質問に答えようとしました。
講義8. JVM(アンドレイ・パンギン)
プレゼンテーション
Technostreamチャンネルのビデオ
この講義は、最新の仮想Javaマシンの設計と、Javaでの負荷の高いシステムの開発の特性に焦点を当てています。 JVMの主要コンポーネント(クラスローダー、インタープリター、JITコンパイラー、ガベージコレクター)が分析されます。 HotSpot JVMコンパイラの最適化とJavaプログラムのパフォーマンスを測定するためのテクニックについて説明します。 メモリ管理メカニズムとさまざまなGCアルゴリズム(Mark-SweepからShenandoahまで)を検討します。 サーバーアプリケーションの最適化、一時停止への対処、JavaでのLinuxネットワークスタックの効果的な使用に関する推奨事項が示されています。
講義9.モニタリング(セルゲイシャラポフ)
プレゼンテーション
Technostreamチャンネルのビデオ
この講義は、オドノクラスニキの監視システムに専念します。監視システムは、機器とポータルのビジネスロジックの両方の異常を検出するタスクを任されています。 それは、どのオープンソースソリューションが使用されているのか、なぜ選択されたのか、そして運用中に遭遇した問題についてです。 講義の最初の部分では、新しいソリューションの導入や現在のソリューションの最終化の問題が発生した場合の、監視ツールの選択に対するアプローチの概要を説明します。 2番目の部分は、ビジネスロジックを監視するための独自のシステムがどのように開発および実装され、密接に関連する多くのコンポーネントで構成されるこのシステムが現在どのように機能しているかを説明します。
講義10.雲(レオニド・タララエフ)
プレゼンテーション
Technostreamチャンネルのビデオ
この講義では、クラウドコンピューティング、さまざまなタスクに「クラウド」を使用する利点と欠点について説明します。 IaaS、PaaS、SaaS、および従来のITモデルが比較されます。 OSおよび最新の中央処理装置での仮想化とそのサポートについて説明しました。 仮想マシンとコンテナーの違いを示し、Dockerの例を使用してコンテナー化がどのように機能するかを「ライブ」で説明します。 AWS、Google Gloud、Azureの例でクラウドプロバイダーが提供する機会と、内部のニーズに応じて独自のクラウドが必要になることがある理由と、一般的にはその方法を説明します。
すべての講義のプレイリストはリンクにあり 、youtubeのリンクにもあります。
コースプロジェクトはここにあります 。
閉じたプルリクエストの中で様々な解決策が見つかります 。
テクノポリスプロジェクトの他のコースの放送とビデオ録画は、OKのプロジェクトの公式グループにあります。
また、 Technostreamチャンネルには、Mail.Ru Groupのすべての教育プロジェクト(テクノアトム、テクノパーク、テクノポリス、テクノスフィア、テクノトレック)のIT専門家によるプログラミングとデータ分析に関する講義とマスタークラスがあります。