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

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

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

Оглавление

Best practices

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

Евгений Пешков

Тинькофф

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

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


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

Вагиф Абилов

Miles

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

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

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

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


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

Роман Неволин

Sytac

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

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


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

Олег Сафонов

Тинькофф

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

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

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


Введение в Microsoft SignalR

Александр Кузнецов

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


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

Игорь Шаталкин

CUSTIS

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

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

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

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


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

Гурий Самарин

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

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

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

  • jbogard/Respawn

  • EfCore.TestSupport J.P.Smith

  • Testcontainers-dotnet

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


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

Игорь Лабутин

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

Анатолий Кулаков

Монополия

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


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

Анатолий Жмур

Broadridge

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


Internals

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

Станислав Сидристый

ЦРТ

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


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

Вадим Мартынов

Контур

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

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


[Test] + <T> = ❤️

Александр Катин

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

Архитектура

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

Дмитрий Нестерук

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


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

Андрей Ганичев

Dodo Engineering

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

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

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


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

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

ИТ1

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


MediatR не нужен

Андрей Парамонов

Dodo Engineering

Антон Оникийчук

Dodo Engineering

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


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

Андрей Цветцих

Тинькофф, DevBrothers

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

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


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

Денис Цветцих

DevBrothers

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


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

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

Андрей Акиньшин

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

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


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

Дмитрий Сошников

МАИ / НИУ ВШЭ

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

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


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

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

МОНОПОЛИЯ

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


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

Сергей Васильев

PVS-Studio LLC

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

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


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

Роман Просин

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

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

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


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

Марк Шевченко

CraftTalk

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

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

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


Напоследок

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

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

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

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

Комментарии (0)