Какие доклады будут на DotNext 2022 Autumn

9c6959e6d2c5e953c7b9c884766826cc.jpeg

Как снизить вероятность ошибок в коде? Что нового в .NET и C#? Как правильно работать со статистикой при замерах производительности? Как научить ребёнка программировать?  

Эти вопросы выглядят совершенно разношёрстными. Но у них есть общее: все они получат ответы на ближайшем DotNext. Программа конференции составлена, и мы представляем её Хабру.

А сам DotNext начнётся уже на следующей неделе. Дни 3–4 ноября будут полностью онлайновыми, а вот 20 ноября — на выбор участников: можно прийти на офлайн-часть в Москве, можно подключиться к ней удалённо.

Оглавление

Best practices

Алгоритмы троттлинга запросов

75f3c8d23c18e54ef226b16b6a79adf1.jpegЕвгений Пешков

Тинькофф

Факапы на бэкенде периодически случаются у всех. Части этих факапов можно избежать, если провести нагрузочное тестирование, определить пределы возможностей сервиса и заранее ограничить количество одновременно обрабатываемых запросов. Это позволяет сгладить неравномерность нагрузки и справиться с обработкой хотя бы части запросов, что гораздо лучше полного падения сервиса. 

Решить задачу Rate Limiting помогает примитив синхронизации под названием семафор. Он пропускает внутрь заданное количество потоков, а остальные ставит в очередь. Однако современные приложения — асинхронные, использовать в них обычный семафор неэффективно. И здесь у разработчиков фреймворков и highload-сервисов появляется необходимость выбора алгоритма реализации семафора, работающего не на уровне потоков, а на уровне асинхронных задач. Неудачно выбранный алгоритм еще больше нагрузит сервис, который и так работает под нагрузкой на пределе возможностей.

Распределенный трейсинг OpenTelemetry вместо логирования всего подряд

cca9d5a308b18713164427a2c22d46cb.jpegВагиф Абилов

Miles

Сколько сервисов разрабатывают в вашей организации? И сколькими различными маршрутами могут проходить сообщения между ними? Если ответ на первый вопрос — «больше десяти», то ответом на второй будет «больше ста», а то и «больше тысячи».

Трейсинг ошибок процесса обработки данных или поиск источника замедления работы распределенной системы требует немало времени. А опыт использования кастомных дашбордов и индексов логов для решения этих задач сложно обобщить для применения вне конкретного проекта. Но все не так безнадежно.

OpenTelemetry устанавливает общие стандарты экспорта метрик и трейсов приложений, позволяющие агрегировать их в распределенной среде на разных платформах. А также визуализировать с использованием популярных бэкендов и дашбордов — Datadog, Jaeger, Elastic/Kibana и Application Insights.

Спикер рассмотрит основные принципы трейсинга в OpenTelemetry, разберет примеры использования в веб-сервисах, базах данных, очередях и покажет, как все это экспортировать в различные бэкенды.

Пишем приложения, которые не ломаются в продакшене

889953c2ab5da6c92ba11b72287926b9.jpegРоман Неволин

Sytac

Любой разработчик в своей работе учитывает много метрик качества: производительность, читаемость, расширяемость. Однако чтобы все это было важно, приложение для начала должно просто работать.

Об этом и пойдет речь: о написании кода, который уменьшает вероятность ошибки, о его тестировании и деплое. Разберем, как на каждом из этапов разработки уменьшить вероятность возникновения багов, как отслеживать их на тестировании и что делать, если вы все-таки задеплоили некорректный код.

Пишем код, когда пишем код: source generator’ы

fb96665fe34779fa97c46590035a0a16.pngОлег Сафонов

Тинькофф

Решаем задачу сравнения и логирования объектов, содержащих чувствительные данные. Рассматриваем разные варианты решения: рефлексию, написание кода, генерацию кода.

Используем source generator для решения задачи, обсуждаем интересные проблемы, возникающие при реализации, смотрим, какие проблемы могут демотивировать при написании генератора и как их решить.

Резюмируем результат применения source generator«ов и выделим признаки задач, для которых они могут стать оптимальным решением.

Введение в Microsoft SignalR

39d73357da4119131a37a4fa8e97b9f3.jpegАлександр Кузнецов

Это обзорный доклад о технологии Microsoft SignalR. Александр расскажет о том, для чего предназначена эта технология и на практике рассмотрит ее возможности и ограничения.

Загадочный EF Core, или Как написать свое расширение

865b5d20c5218eaea6ed848731080f2c.jpegИгорь Шаталкин

CUSTIS

В EF Core много полезных фич по работе с базами данных, но что, если этих возможностей не хватает?  

Фреймворк из коробки не умеет создавать вьюшки и отслеживать изменения их исходного кода. А нам могут понадобиться не только вьюшки, но еще и синонимы, гранты и DB link«и как на производственной БД, так и в интеграционных тестах.

Из доклада вы узнаете про загадочный внутренний мир фреймворка: про ключевые интерфейсы, отвечающие за генерацию и применение миграций, про то, как можно подменить эти интерфейсы, и, самое главное, почему тут не поможет контейнер, создаваемый в Startup. Также поговорим про основные объекты EF Core — что такое модель и зачем нужен снэпшот, из чего состоит миграция и зачем нужно транслировать операции в SQL.

Доклад будет интересен как разработчикам, которые столкнулись с задачами создания и обновления вьюшек, синонимов и других SQL-объектов, так и тем, кто хочет написать свое расширение. Мир EF Core станет для вас менее загадочным, но не менее интересным.

Тестируем код, взаимодействующий с базой данных

2925f44a54baf4b2946b3d1dcffcd351.jpgГурий Самарин

Инжиниринговый дивизион Госкорпорации «Росатом»

Как тестировать код, взаимодействующий с базой данных? Сначала нужно понять, какой именно зависимостью является база данных. Управляемой (а значит, деталь реализации) или нет?

Спикер рассмотрит способы разворачивания и доставки изменений до тестовых экземпляров баз данных, расскажет, какие базы данных лучше всего использовать в тестах, и изучит существующие решения:

И попробует самостоятельно создать инфраструктуру для запуска теста в Docker. В большинстве случаев стремитесь тестировать на такой же базе, как в production, только запускайте ее изолировано. Обновляйте базу данных при помощи миграций и раскатывайте их при помощи специальных инструментов (вроде Liquibase).

Что нового в .NET 7 и C# 11

7ea79da5cbfcf1c23d618336aa090b20.jpegИгорь Лабутин

Ланит-Терком

53dffb445816923f91c8cf6503f20fb8.jpegАнатолий Кулаков

Монополия

Тут название говорит само за себя: .NET и C# обновляются, что это нам несёт?

Пиши, как тиктокер, а не как дед. Новые конструкции языка C# в бою

963e098f53c45f4dfafdf0761c77356a.jpegАнатолий Жмур

Broadridge

За 20 лет эволюции вышло много версий языка С#, постепенно набор конструкций расширялся. К сожалению, не многие могут охватить в голове это разнообразие и продолжают писать как «деды писали на Си». В докладе будет много примеров, как можно переписать старый код по-новому, и как не увлекаться этим делом.

Internals

lock (_sync): иллюзия идеального выбора

86084f02c945a942fc2bb447e8674d08.jpegСтанислав Сидристый

ЦРТ

Ввиду того, что lock является конструкцией языка, которая лаконично и понятно создает секцию монопольного исполнения кода, это создает иллюзию единственно верного решения. Станислав рассмотрит алгоритм его работы и ответит на вопрос: так ли это?

Instruction pipelining от 8086 до 2022: как работает конвейер в современных процессорах

70c44d73e17bff08b9f060d61769bdf5.pngВадим Мартынов

Контур

Superscalar pipeline, µop cache, branch prediction, pattern recognition, Out-Of-Order pipeline, re-order buffer, да и просто hyper-threading — все эти механизмы и технологии добавляются в современные процессоры для ускорения выполнения инструкций и улучшения производительности конечных программ. Но глобально современные архитектуры мало чем отличаются от первых Пентиумов и очень похожи на процессоры 8086.

Как работают RISC-процессоры в 2022 году и как это влияет на .NET-программистов — посмотрим на простом примере прикладной задачи расчета выручки сети супермаркетов.

[Test] + = ❤️

09fbf1e99a9421a1429dce9150f1cda0.pngАлександр Катин

Сегодня разработка без написания тестов немыслима, и для удобства широко используются тестовые фреймворки. Для своей работы существующие тестовые фреймворки используют атрибуты, применимость которых из-за их реализации в .NET имеет существенные ограничения. Но в новой версии C# произошла маленькая революция этого особенного типа — они стали обобщёнными, и это невообразимо расширило их потенциал. Например, теперь стало возможным писать более эффективные и выразительные обобщённые тесты. Из коробки популярные тестовые фреймворки не позволяют работать с обобщёнными методами, но предоставляют гибкий функционал для воплощения в жизнь такой возможности. Тому, как подружить т с обобщениям при помощи редко используемых возможностей тестовых фреймворков, и будет посвящен доклад.

Архитектура

Интересные подходы в реализации паттернов проектирования

8aad139acf02637f204f77b8f6a4214c.jpegДмитрий Нестерук

За годы исследований паттернов проектирования в C# удалось выявить некоторые интересные подходы, которые креативно используют возможности языка. В этом докладе посмотрим на то, как некоторые паттерны проектирования Банды Четырех могут быть реализованы весьма необычным путем.

Архитектурные тесты

b13abc37467a9ce29eba04d820e6a1a5.jpegАндрей Ганичев

Dodo Engineering

Когда речь заходит о более или менее сложной системе, для которой предполагается длительное существование, а главное, развитие, вопрос архитектуры становится крайне важным. Но как в процессе жизни системы контролировать правила, которые предполагает та или иная архитектура?

Спикер рассмотрит различные варианты и подробно остановится на одном из них — архитектурных тестах.

С точки зрения реализации, архитектурные тесты — это автоматические тесты, написанные с использованием привычных фреймворков для юнит-тестирования. Архитектурные тесты обладают всеми достоинствами автотестов: быстрый фидбек, наглядная фиксация правил в тестах и возможность встраивания в CI-пайплайн. В докладе обсудим саму идею, поговорим о том, что именно можно тестировать, и рассмотрим существующие OS-инструменты.

Думай как архитектор: майндшифт инженера

d434aff74278ca113177ca9037a7e7d8.jpegДмитрий Таболич

ИТ1

Рассказ Дмитрия — это свободные размышления на тему профессионального карьерного роста инженера на пути к архитектурной дисциплине и практике. Рассмотрим часто встречающиеся барьеры и сложности, а также способы их преодоления. Формат рассуждений позволяет раскрыть базовые различия в мышлении инженера и архитектора на примерах реальных ситуаций.

MediatR не нужен

5775549335db86a9e1bc96bf0f10f959.jpegАндрей Парамонов

Dodo Engineering

04219d86ccc09b85260be4fd38bafec8.jpegАнтон Оникийчук

Dodo Engineering

В индустрии использование MediatR считается хорошим тоном. Поработав с большим количеством сервисов, в которых его применяли, спикеры поняли, что в 99% случаев он вреден. Почему так и этому есть доказательства — обо всем этом вы узнаете из доклада.

Zero-downtime deployment и базы данных

2e186ef316601df4f8716be800016672.jpegАндрей Цветцих

Тинькофф, DevBrothers

Микросервисы уже давно и прочно вошли в нашу жизнь. Они позволяют реализовывать масштабируемые и отказоустойчивые решения. Но при деплое новой версии на кластер иногда возникают ошибки, связанные с обновлением базы данных.

Спикер разберет популярные способы деплоя на кластер. Покажет типовые проблемы, возникающие при обновлении базы данных, и пути их решения. Также разберемся, чем обновление NoSQL баз данных отличается традиционных реляционных баз.

Rich Model и Anemic Model: враги или друзья

95b9b64317fd64c489c12d696d85980d.jpegДенис Цветцих

DevBrothers

В сообществе много холиваров о том, какую модель лучше использовать — Rich или Anemic. При этом лагерь консультантов активно топит за Rich Model, а среди разработчиков популярна Anemic Model. Поговорим о модели без предрассудков и с практической точки зрения. Для начала определимся с понятиями, что принято называть терминами Rich Model и Anemic Model, по каким критериям их можно отличить. Посмотрим, стоит ли использовать две модели данных: бизнес-модель для бизнес-логики и отдельную data-модель для маппинга на базу. Увидим, какие кейсы невозможно реализовать в канонической Rich-модели. Обсудим, так ли страшна анемичная модель, как ее ругают. И придем к прагматичной модели, которая чаще всего встречается на практике.

Расширяем горизонты

Поговорим об описательной статистике перформанс-распределений

d005be92fd161dc236fa72aeb16e0f0f.jpegАндрей Акиньшин

Метрики производительности приложений никогда не описываются одним числом. Они являются случайными значениями из некоторого распределения. Но как нам это распределение описать? Как стабильно вычислить среднее значение и степень вариации? Как высчитать квантили и построить график плотности распределения? Что делать с мультимодальностью и экстремальными выбросами?

Для каждой из этих задач существуют десятки различных методов, каждый из которых обладает собственными характеристиками. В этом докладе мы погрузимся в увлекательный мир описательной статистики и обсудим многообразие доступных математических инструментов. А после доклада у вас появится общее понимание проблематики этой области и адекватности применения тех или иных подходов, что защитит вас от распространённых ошибок при агрегации замеров производительности.

Как научить вашего ребенка программировать (и не только)

9f2590943b4c73d25ae1771e26929c38.jpegДмитрий Сошников

МАИ / НИУ ВШЭ

Дискуссия о том, надо ли всем ли современным детям нужно изучать программирование, ведь «программирование — это вторая грамотность», ведется с середины прошлого века

Попробуем слегка расширить эту дискуссию и посмотреть, какую роль компьютер, как инструмент, может сыграть в формировании у детей стиля мышления и современного научного мировоззрения. Поговорим не только о программировании, но и о генеративном искусстве, Data Science, мейкерстве и об искусственном интеллекте.

Open source с точки зрения юриста

ec46033425058f651a4a7cd04c0ae0fb.jpegОльга Щербакова

МОНОПОЛИЯ

Open source — неюридическая тема, в основе которой лежит юридическая проблематика. Мы поговорим о том, почему юрист становится лучшим «другом» разработчика, и как избежать неожиданных рисков для компании при использовании компонентов или ПО с открытым кодом. Также поговорим о тенденциях в области привлечения к ответственности за нарушения, связанные с неправомерным использованием open source. Узнаем, как это происходит и почему вообще мы должны об этом переживать, разрабатывая ПО в России.

Анализ C# кода на Roslyn: от теории к практике

2bada9c8afbe522e12cc304687829b9d.pngСергей Васильев

PVS-Studio LLC

Roslyn помогает достаточно легко анализировать C# код, но азы знать все равно полезно. Зачем нужны синтаксические деревья? А семантическая модель? И как использовать все это для решения практических задач?

Ответим на эти вопросы, поговорим о подводных камнях и узнаем, что нужно, чтобы написать свой анализатор для C#.

SkillsFlow: разработка системы управления навыками и компетенциями

50719c5d494b923608c31e2af2fe93a1.jpegРоман Просин

Райффайзенбанк

Спикер расскажет о создании системы развития и оценки навыков SkillsFlow. Вы узнаете о глобальной структуре навыков и компетенций для цифрового мира и о том, как реализовать систему непрерывной оценки навыков, начиная с входного интервью кандидата и заканчивая путём развития сотрудника в организации.

По технике будут продемонстрированы возможности ASP.NET Core (кэширование и сжатие ответов, отслеживание изменений конфигурации в K8S без перезагрузки, аутентификация и авторизация OIDC, OAuth, политики авторизации и авторизация на основе ресурсов), ML.NET, развёртывание, управление секретами и конфигурацией в K8S.

Пишем функционально на C# и F#

ea644e4a69576a44b1b8628cba8242af.jpegМарк Шевченко

CraftTalk

В течение последних пятнадцати лет создатели C# добавили в язык много функциональных возможностей: лямбда-функции, вывод типов, записи, деревья выражений и сопоставление с образцом.

Может показаться, что теперь F# в .NET не нужен, потому что всё уже есть в C#, а если нет, то появится в ближайшее время. Так ли это? Попробуем разобраться.

Исследуем малоизвестные возможности C# и попробуем написать на F# код, для которого нет функциональных средств в C#. В конечном итоге попробуем понять, нужен ли F# в современных .NET-проектах.

Напоследок

Доклады — не единственное, что будет на конференции. Помимо часовых монологов, будут и более диалоговые форматы, вроде обсуждения «Объединяем .NET-разработчиков: Как запустить и развить гильдии в компании». Сразу четыре лидера гильдий из разных компаний поговорят о том, что это вообще такое, какие преимущества дают гильдии и как их реализовать.

Будут и другие обсуждения («Обучение от 0+» и «Best practices для разработки Application Layer»), и интервью с некоторыми спикерами.

Но важно ещё вот что: сидеть и молча смотреть — не единственное, что можно делать на конференции. Во время каждого доклада можно задавать вопросы в чате, после завершения доклада — в «дискуссионной зоне» со спикером (офлайновой или в формате видеозвонка), и порой там разгораются оживлённые обсуждения. А уж те участники, кто соберутся в Москве очно, наверняка воспользуются возможностью как следует пообщаться друг с другом и спикерами.

А нам остаётся напомнить, что остальные подробности о конференции (вроде точного расписания) и билеты — на сайте DotNext.

© Habrahabr.ru