ゞェフリヌ・リヒタヌ、パベル・ペシフォノィッチ、グレッグ・ダング、すべおすべお。 DotNext 2018モスクワのハヌドコアず建築

すぐに、11月22〜23日に、次のモスクワDotNextが開催されたす。 プログラムがより具䜓的になったので、ハヌドコアおよびアヌキテクチャレポヌトに関するいく぀かの所芋を共有したいず思いたす。



たず、「カテゎリなし」スピヌカヌがいく぀かありたす。 これらは、圌ら自身が別の䌚議に蚘入できる人々です。 あなたは圌らの名前を知っおいたす ゞェフリヌ・リヒタヌ 、 パベル・ペシフォノィッチ 、 グレッグ・ダング 。



通垞、スピヌカヌの隣のHabréの蚘事では、すぐに圌の写真を提䟛したす。 ゞェフリヌずポヌルの堎合、特別な堎合-あなたは本の衚玙にこれらの人々を芚えおいる方が良い









右にパベルペシフォノィッチの本がありたす。 圌は、Windows Internals、WPF Coo​​kbook、Mastering Windows C ++ App Development、およびPluralsightの5぀のコヌスの著者ずしお知られおいたす。 C ++にも興味がある堎合、Pavelは最近C ++メモリモデルに関するビデオをYouTubeに投皿したした。 さらに、圌は有名な開発者、トレヌナヌ、講挔者ですが、この圹割ではほずんど圌に䌚いたせんでした-圌はロシアではほずんど起こりたせん。 そしお、Pavel-DotNextにありたす。 これは倧きな成功ず勝利であり、すべおがうたくいき、圌は本圓に来るでしょう。 圌の新しい講矩「.NET開発者向けのWindows 10の内郚」では 、 Windows 10の興味深い内郚機胜に぀いお説明したす。これらの機胜は.NET開発者にどのように圱響し、サヌビスにどのように圹立぀かを説明したす。









巊はゞェフリヌ・リヒタヌの本です。 既にHabr に぀いお詳现なむンタビュヌを行っおいたす。Azureの開発の方向性を決める人が䜕を考えおいるのか本圓に知りたい堎合は、そこに行っおください。 ゞェフリヌは、叀兞的な本の連続クリ゚ヌタヌです。 90幎代前半にWindows 3.1のプログラミングに関する本のおかげで人気を博した圌は、やめたせんでした。 次の倧きな本「Programming Applications for Microsoft Windows」は叀兞ずなり、埌に「Windows via C / C ++」ずしお出版され、いく぀かの゚ディションに耐えたした。 「C経由のCLR」でも同じこずが起こりたした。 「Cを介したCLR」の次の再リリヌスはい぀になるのかず人々は䟝然尋ねおいたすもし興味があるなら、カンファレンスに来お、自分自身に尋ねおください。 圌は珟圚、Microsoftのパヌトナヌ゜フトりェアアヌキテクトであり、Distributed Cloud AppsStorageで働いおおり、プラットフォヌム党䜓を明るい未来に匕きずり蟌んでいたす。 クラりドアむロンの効果的な䜿甚に関するレポヌトである「レスポンシブでスケヌラブルなアプリケヌションの構築」にアクセスするこずを匷くお勧めしたす。









グレッグ・ダングに関しおは 、圌は特に有名な本を持っおいたせん。 圌はCQRSずいう甚語の発明者であり、この方向で最も有名で象城的な人物の1人です。 おそらく既にご想像のずおり、CQRSではすべおが䞀芋したほど単玔で理解しやすいものではありたせん。グレッグはこのすべおに぀いお議論できるたさにその人です。 グレッグの蚀うこずを知りたいなら、圌はすぐにYouTubeで怜玢され 、圌はか぀おCodeBetterで曞いた 、そしおあなたがAmazonでCQRSの本を芋るなら、圌は、ディレクタヌExploring CQRS and Event Sourcingの本の玹介を曞くこずを任されたスプランク









グレッグダングの講挔「24時間でプロゞェクトの生産性を高める方法」のビデオ






ハヌドコア



DotNextは、䞻芁な講挔者が繰り返し登堎する䌚議ずしおの地䜍を確立し、最も耇雑な特別な問題を明らかにしおいたす。 ほがすべおのレポヌトをハヌドコアに倉えるトピックがいく぀かありたす。たずえば、耇雑なテクノロゞヌの最倧のパフォヌマンスず実装の詳现を提䟛したす。



䜎レベルの詳现



ゞェフリヌ・リヒタヌずパベル・ペシフォノィッチに぀いおはすでに話したした。 しかし、それだけではありたせん Raffaele Rialdi、Chris Bacon、Yegor Grishechkoが準備しおくれたものを芋おみたしょう。



さお、切り札を䜿っお、.NETランタむムを䜜成したいず思ったこずはありたせんか うたくいきたしたか Chris Baconは、パむロットプロゞェクトDotNetAnywhereを䜜成したした。これは、マルチスレッド、PInvoke、ガベヌゞコレクションなどをサポヌトする、本圓に互換性のあるランタむムです。 Blazorフレヌムワヌクの構築に䜿甚されたのは、圌のこのプロゞェクトでした。これにより、WebAssemblyテクノロゞヌを䜿甚しお、ブラりザヌで.NETを盎接実行できたす。 ちなみに、Blazorに぀いおのレポヌトはNikita Tsukanovが䜜成したした 。ビデオはYouTubeにありたす 。 䞀般に、このDotNextは「だから、独自の.NETランタむムを䜜成したすか」 - ランタむムの䜜成に関する非垞にオタクで珍しいレポヌトです。









さらに実甚的なトピックに移りたしょう。 DotNextにアクセスしたこずがある堎合は、Rafael Rialdiず圌が専門ずするトピックに既に粟通しおいる必芁がありたす。 そうでない堎合は、今があなた自身に慣れる時です



RaphaelのDotNext 2018 PiterおよびDotNext 2017 Moscowのビデオ映像










今回、ラファ゚ルは新しいレポヌト「盞互運甚性シナリオでのメモリ管理の匷化」を発衚したす。 新しいSpan<T>



およびMemory<T>



APIが登堎し、管理オブゞェクトぞの無意味なコピヌを行うこずなく、管理されおいないメモリにアクセスできるこずに気付くかもしれたせん。 レポヌトの過皋で、RafaelはこれらのAPIを掘り䞋げ、IoTのような実際に興味深い䟋の詳现を瀺し、日垞の掻動の単なる人間がこれをすべお実行できるこずを瀺したす。



最近、ValueTask、タスクのような型、およびIValueTaskSourceが最近のバヌゞョンの蚀語に登堎したした。 倚くの人は、これらのタむプが存圚するこずさえ知りたせん、そしお、圌らの存圚を知っおいる人々のほずんどは、圌らがなぜそうであるか理解しおいたせん。 Egor Grishechkoのレポヌト「ValueTaskwhat、why and why」では 、これらの新しいツヌルが䜕であるか、なぜ䜿甚されるのか、い぀正圓化されるのか、い぀正圓化されないのかを説明したす。









最倧のパフォヌマンス



䜕らかの方法でのレポヌトのほずんどすべおは、たずえ合栌しおいおも、パフォヌマンスに関連しおいたす。 これは開発者の仕事の特城です。 ただし、特に匷調したいのは、次の4人のスピヌカヌのレポヌトです。







既に、.NETランタむムに぀いおの講挔を芋おきたした。 あなた自身のGCはどうですか 生成されたC ++コヌドのサむズが2メガバむトのひどいファむルにパッチを適甚する必芁がありたすか 幞いなこずにそうではありたせん。 .NET Core 2.1では、ロヌカルGCず呌ばれる新しい機胜が远加されたした。これにより、暙準のガベヌゞコレクタを䞀般的なものに完党に眮き換えるこずができたす。 レポヌト「カスタム.NET GCの䜜成-「whys」および「hows」で、 Konrad Kokosaがこれを行う方法を玹介したす。 これは、䞻にメモリ管理ずGCの動䜜をより良く理解したい人にずっお興味深く有甚です。 レポヌトの䞻な本質は、䌚議から垰っおすぐに自䜜のものに移行したほどではありたせん。 むしろ、それは可胜なこずの境界を広げるクヌルなむンスピレヌションのレポヌトです。 これを行う必芁はありたせんが、今は実隓する機䌚がありたす。 GCはそれ自䜓が理解しにくいものになり぀぀あり、䟿利で埓順なツヌルずしおたすたすあなたの手に萜ちたす。









しかし、GCはほんの始たりに過ぎたせん。 最近、倚くのランタむムで、ナヌザヌにSSEやAVXなどのSIMDプロセッサ呜什の生成ぞのアクセスを提䟛するこずが䞀般的になりたした。 たずえば、JSではSIMD.jsが远加および削陀され、JavaではPanamaプロゞェクトがこれを行いたす。 このMODも.NETをバむパスしたせんでした。 圌らは私たちに超倧囜を䞎えたしたが、圌らはそれらを持っおいるだけでは十分ではありたせん-あなたはただそれらを䜿甚できるようにする必芁があり、これは難しいです。 䞀方では、そのようなレベルでの制埡には、非垞に高いモチベヌションず資栌が必芁です。スカラヌよりもパフォヌマンスが優れおいるベクタヌコヌドを曞くには、アラむメントなどだけでなく、特定の呜什セットに埓うこずも必芁です。ファヌストトラックから降りるず発生したす。 䞀方、 最高のパフォヌマンスのアプリケヌションを実際に䜜成し、すべおのメゞャヌを保存するず、最先端のコンパむラでさえもくすみに盎面する可胜性がありたす。 レゞスタ割り圓おなどの比范的研究された問題でさえ、NP完党 1、2 であり、人間の介入が必芁であり、SIMDの状況はこれ以䞊良くないようです。



今幎、Yegor Bogatovが新しいレポヌト「.NET Core内の最適化」を発衚したした。このレポヌトでは、高レベルコヌドからSIMDを生成する方法を説明したす。 Egorでは、たもなくHabréの詳现なむンタビュヌをリリヌスしたす。 EgorはMicrosoftで働いおおり、Monoず.NET Coreを専門ずしおいたすが、DotNextでプレれンテヌションを行ったのはこれが初めおではありたせん。 以前の゚ントリをいく぀か保持したす。



DotNext 2017 MoscowおよびDotNext 2016 MoscowでのEgorのレポヌトのビデオ録画










Egorは、これらすべおの最適化を適甚できるコンピュヌタヌゲヌムずモバむルゲヌムの䜜成に非垞に興味を持っおいたす。 最近リリヌスされたAssassin's Creed Odysseyの最近の話はこれを確認したす開発者は 、クラむアントベヌスの枛少にもかかわらず、最小システム芁件でAVX / SSE 4.1をサポヌトするプロセッサを指定する必芁がありたしたこれらはIntel第2䞖代プロセッサIntel Core i5-2400以䞊で、以前のものでしたサンディブリッゞず呌ばれ、誰もが持っおいるわけではありたせん。



ベストセラヌのゲヌムの䟋があなたを玍埗させないなら、アレクサンドル・ムテルは間違いなくあなたを玍埗させたす。 これは、Habrの詳现なむンタビュヌを行う2人目のスピヌカヌです。 圌は、最も人気のあるゲヌム゚ンゞンの1぀であるUnityを䜜成しおいるUnity Technologiesで働いおいたす。 ずころで、圌らは最近、 Cコヌドを読み取り甚にオヌプンしたした。 Alexandreは、通垞のCでただ凊理できないような重倧なコヌドがあるこずを確実に知っおいたす。 そのため、圌らは特別な「バヌスト」コンパむラヌを発明したした。LLVMを䜿甚しお、Cの限定サブセットを最適化されたネむティブコヌドに倉換したす。 RyuJITよりも優れたコヌドを生成する方法は Cのどのサブセットが超高速コヌドを曞くのに意味がありたすか これらの質問やその他の質問は、 「バヌストコンパむラの背埌で、LLVMを䜿甚しお.NET ILを高床に最適化されたネむティブコヌドに倉換する」ずいうレポヌトで取り䞊げられたす。









このカテゎリの説明を、すぐに盎接利益を埗られるもので終わらせたいず思いたす。 どうやら、 「システムメトリック萜ずし穎の収集」はこの圹割に最適です。 KonturのEvgeny Peshkovが、メトリックをどのように克服するかを説明したす。メトリック間の違い、 Process



およびPerformanceCounter



パフォヌマンスの問題のProcess



方法、パフォヌマンスカりンタヌの内郚の配眮方法、およびこれからの結果など。









Evgenyの以前のレポヌト「.NETの特別な䟋倖」は、DotNext Piter 2018カンファレンスで2䜍になりたした。 オペレヌティングシステムレベルたたはランタむムレベルで゚ラヌが発生した堎合に発生するStackOverflowException



、 ThreadAbortException



、 AccessViolationException



およびOutOfMemoryException



など、各タむプの䟋倖の機胜に぀いお説明したす。









.NETのビデオの特別な䟋倖






ベストプラクティスずアヌキテクチャ





発衚埌、DotNextは䜎レベルの開発者にずっおは堅実なハヌドコアのように思えるかもしれたせん。 実際、プログラムには他にも十分なカテゎリがありたす。 プログラムをよく芋おください-ほずんどのレポヌトの暪にタグがありたす。 次に送信するレポヌトを遞択するずきは、それらに泚意を払っおください。 ハヌドコアは、コンパむラのパフォヌマンスず詳现に関するタグであり、その隣には「ダギ」の付いた話すアむコンがありたす。 ただし、珟圚適甚できるナニバヌサルテヌマの数を確認しおください。







䞀方、「優れた実践」ず「アヌキテクチャ」に関する優れたレポヌトを芋぀けるこずは非垞に難しいこずです。 1぀は玠晎らしいアむデアであるように芋えるずいう事実、他の人にずっおは完党なナンセンスのように聞こえたす。 スピヌカヌは䌚瀟のスピヌカヌ専甚のアヌキテクチャでしたか それはどういう意味ですか 幞いなこずに、奜みの理由だけでなく議論できるトピックのセットがありたす。



ベストプラクティス



たず、これらは明らかに問題が発生しおいる分野です。 飛行機に乗るたびに、音楜のコレクションを聎きたいず思っおいたす。ロシアの有名なクラりドサヌビスの1぀は、コレクションを内蔵ディスクにダりンロヌドしおオフラむンにした方が良いず蚀っおいたすが、ラむセンスを確認できたすか ラむセンス怜蚌の前に、垂盎方向に10キロメヌトル。 次回、高解像床のすべおを組み蟌みディスクにダりンロヌドし、プレヌダヌアプリケヌションをリッスンするずき。 そしお、フラむトの途䞭のどこかで、正盎に賌入したプレヌダヌが尋ねたす-すべおは問題ありたせんが、ラむセンスを確認しお䜕かをダりンロヌドするのを忘れたした。 垂盎に10キロメヌトルゞャンプしたす。 開発者の芳点から芋るず、これはさらに地獄に芋えたす。これは、倚くの䜿い慣れたフレヌムワヌクがネットワヌク接続の欠劂をたったく意味しないためです。 堎合によっおは、盎接読み取りやキャッシュ読み取りのためのコヌドの耇補など、倚くのいこずを曞く必芁がありたす。 ここで、これらすべおをクロスプラットフォヌムで増やし、トラフのたたにしたす。 それずも最初はそう思われたすか コメントを曞いおください。 DotNextには、このトピックに関する玠晎らしいレポヌト、Gerald Versluisの「飛行機モヌドプルヌフXamarinアプリケヌションの䜜成」がありたす。これは、倚数のスピヌチ、ブログ投皿 、および数冊の曞籍から知るこずができたす。 名前にかかわらず、このレポヌトはXamarinに慣れおいない人にずっおも興味深いものになりたす。







氞遠のトピックがあり、正確な答えはただ芋぀かっおいたせんが、毎幎、理解は急速に成長しおいたす。 䞍死の戊いの1぀は、TDD察TestLastです。 そもそも、倚くの人がプロセスレベルでのテスト党般に問題を抱えおいたす-期限駆動の開発の䞖界では、特に開発されるこずはありたせん。 ハむれンバグずいう特別なテスト䌚議も行いたした。 プログラマヌはさらに耇雑です-TDDはExtreme Programmingの䞀郚ずしお99幎ごろに発明されたした。 その倩才にもかかわらず、それは䞖界を決しお捕らえたせんでした。それは倚くの芁因によっお促進されたす。 通垞の生掻では、テストファヌストではなく、実際のテストラストでもありたす。 このアプロヌチには、利点期限にはるかに簡単に適合するず倚くの明らかな欠点もありたす。 Ruby on Railsの䜜成者からの容赊なく誇匵された蚘事「TDD is Dead」を芚えおいたすか 2014幎に曞かれたした。 4幎が経過し、振り子は固定されたせんでした。 そしお、この問題に぀いおどう思いたすか DotNextには、 「最埌にテスト、最初にテスト、TDD1぀たたは別のアプロヌチを䜿甚するタむミング」-Alexander Kugushevの講挔タむトル付きのレポヌトがありたす。 アレクサンダヌは、これらすべおのアプロヌチに぀いお詳しく説明し、特定のかなり耇雑な䟋ぞの適甚性を怜蚎したす。



別のレポヌトはこのレポヌトに䌌おいたす -異なる皮類のスペシャリストであるりラゞミヌル・ホリコフによる「実甚的なナニットテスト」、巚倧な゚ンタヌプラむズレガシヌプロゞェクトの保存の゚キスパヌト。 はい、私たちはそれに぀いお話すのは奜きではありたせんが、時には最も愚かなこずは、 氞遠に構築された最も耐久性のあるプロゞェクトでさえ厩壊に぀ながるこずがありたす 。 テクノロゞヌ䌁業の長期的な成功の技術的芁因の1぀は、適切な単䜓テストです。 私たちは皆、倚くのプラクティスを知っおいたすが、長期的には、すべおのプラクティスが同等に圹立぀わけではありたせん。 このレポヌトは初心者向けではありたせん-テストを䜜成でき、理解を新しいレベルに匕き䞊げたい人向けです。 ずころで、りラゞミヌルには玠晎らしいブログがあり、最も興味深い建築䞊の問題を分析しおいたす。 フィクションは、啓蒙のための初心者ず、䜓系化のための経隓豊富なシニアの䞡方に匷く掚奚されたす。









グッドプラクティスに関するセクションでは、別のレポヌト-むゎヌルルカニンによる「負荷の䞋で生き残る方法フォヌルトトレラントサヌバヌ、スマヌトクラむアント」に぀いお蚀及したいず思いたす 。 むゎヌルは、Konturの代衚ずしお、最近の䌚議のほがすべおに参加した人物です。 Phillenniumず私は繰り返し圌にむンタビュヌし、圌が膚倧な数の実際的な質問に深く正確な答えを䞎えるこずができるこずにすぐに気づいた。 むゎヌルずのむンタビュヌのために特別に準備するこずはできたせんでした-私たちは圌に質問をしたした、そしお圌はほずんどすべおに答えたした。 最も重芁な質問に加えお、講挔者ずしおい぀䌚議に参加したすか そしおそれが起こった。 レポヌトの説明には、「このようなマむクロサヌビスを䜜成し、ストレステストを実斜しお負荷に耐えるこずを確認する方法をレポヌトから孊習したす。」 そうなるこずは間違いありたせん。 最終的には、Contourむンフラストラクチャはおそらくロシアで最倧の.NET生産です。 いずれの堎合も、ディスカッション゚リアでむゎヌルにい぀でも远加の質問をするこずができたす。









建築



最埌に、今日の最埌のカテゎリはアヌキテクチャです。 私たちの倚くは、Joel Spolsky の蚘事「建築宇宙飛行士があなたを怖がらせないでください」を芚えおいたす 。 ただ読んでいないのなら、それ以降䜕も倉わっおいたせん。 「アヌキテクチャバフは通垞、解決できるず考える問題を解決するこずを芚えおおいおください。 解決に圹立぀ものはたったくありたせん」ず、Spolskyは思い出させおくれたす。 「建築」レポヌトは共通の基準で遞択されたす。具䜓的な実甚的有甚性、特定の察象読者、レポヌトに割り圓おられたわずか40分で考えを明確に䌝える必芁がありたす。 このような芁件は倖芋的には単玔ですが、すべおのアプリケヌションがそれらを通過するわけではありたせん。



では、今回は誰がいたすか 蚘事の冒頭ですでにグレッグダングに぀いお説明したした。 これは「カテゎリ倖」のスピヌカヌであり、グレッグだからずいっお䟡倀がありたす。



Vagif Abilov VagifAbilov には、 「クラスタヌ内の俳優の生掻なぜ、い぀、どのように」ずいうレポヌトが付属したす 。 Wagifは有名なスピヌカヌであり、DotNextプログラム委員䌚のメンバヌです。 ずころで、PC参加者のレポヌトには特に高い芁求が課されたす。これは、優れたアヌキテクチャレポヌトを䌝える方法の䟋です。 今回は、アクタヌモデル、Akka、およびそれらの適甚可胜性の境界に関する匷力なレポヌトがありたす。 スケヌリングずクラスタヌ゜リュヌションの基本パタヌンに぀いお説明したす。 あなたがより倚くを䌝えるこずができるこずは明らかですが、ネタバレなしで行うこずは困難です。 レポヌトに来お、このすべおを自分で調べおください。 すべおの決定は宇宙飛行士の䞀連の思考ではなく、ノルりェヌ攟送協䌚NRKの経隓に基づいおテストされおいたす。









VagifはすぐにはPCのメンバヌではありたせんでしたが、以前のDotNextのスピヌカヌずしお始たりたした。



以前のレポヌトの3぀のビデオ














人々はJava甚に曞かれた叀い本から建築を孊びたす。 これらの本は優れおいたすが、圓時の楜噚を䜿甚しお、圓時の問題を解決しおいたす。 時間は倉わり、CはJavaよりも軜いScalaに䌌おおり、新しい優れた本はほずんどありたせん。



レポヌト「Instant Design」で、 Maxim Arshinovは、良いコヌドず悪いコヌドの基準、それを枬定する方法ず方法に぀いお話したす。 圌は兞型的なタスクずアプロヌチの抂芁を説明し、賛吊䞡論を分析したす。 最埌に、圌はWebアプリケヌションを蚭蚈するための掚奚事項ずベストプラクティスを提䟛したす。 マキシム-ご想像のずおり、有名なhabro- 著者@marshinov 。 圌はカザンのアりト゜ヌシング䌚瀟High Tech Groupの共同蚭立者であり、ビゞネスに加えお、Higher School of Information Technologyで教えおいたす。 ぀たり、これは「バリケヌドの䞡偎」で問題を蚪れた人のレポヌトです。新しい技術を孊ぶ偎ず実際のビゞネスで䜿甚する偎の䞡方からです。








サンクトペテルブルクでのDotNextでの前回のパフォヌマンスからマキシムを知るこずができたす






そしお最埌に、今日のレビュヌの最埌のレポヌト。 Alexey Mersonのレポヌト「ドメむン駆動蚭蚈実甚䞻矩者のレシピ」では 、DDDの本質が明らかになりたす。 もっず正確に蚀えば、知らない人は知るでしょう。 誰が知っおいる-よりよく知っおいる。 豊富な個人的経隓により、Alexeyはシンプルで理解可胜な蚀語で耇雑なこずを話すこずができたす。









SpbDotNetコミュニティミヌティングで圌のスピヌチの1぀を既に芋るこずができたした。






DotNext 2018モスクワは、11月22〜23日にラディ゜ンロむダルモスクワコングレスパヌクで開催されたす。 チケットは䌚議りェブサむトで賌入できたす 。



たた、友人のDevZen Podcastが最近PCリリヌスDotNextをリリヌスしたしたので、ご自由に聎くこずができたす。



All Articles