У нас есть традиция: каждые полгода перед тем, как провести конференцию DotNext, мы публикуем на Хабре десять докладов с предыдущей конференции, которые особенно понравились участникам.
Сейчас до осеннего DotNext остаются считанные дни (он пройдёт 3–4 ноября в онлайне, 20 ноября в Москве с возможностью онлайн-просмотра). Так что публикуем десятку с весеннего. Как обычно, в тексте доклады расположены от десятого места к первому — для максимальной интриги.
10. Гибридная архитектура: слияние микросервисов в монолит по необходимости
Можно много холиварить на тему «микросервисы против монолита»: в разных ситуациях лучше подходит разное, а на старте проекта вообще не всегда понятно, какой окажется ситуация.
Но этот доклад не про холивары и противопоставление, а наоборот, о примирении. Если неизвестно, какой подход будет лучше, как сделать так, чтобы между ними можно было переключаться?
Отвечает на этот вопрос Станислав Сидристый, которого участники прошлых DotNext хорошо знают по его докладам о «кишочках».
9. Как написать высокопроизводительный драйвер базы данных
Есть вещи, которыми прикладные разработчики могут пользоваться каждый день, но при этом особо не задумываясь, как они работают. Одна из таких — базы данных.
Павел Тупицын помогает залезть поглубже и узнать: как вообще мы общаемся с нашей БД? Как работает драйвер (клиент), как его спроектировать и реализовать? В докладе раскрыты все шаги — работа с TCP-сокетами, формат сообщений, сериализация, отказоустойчивость, распределение ресурсов и много другое. Прослушав его, вы узнаете всё необходимое, чтобы написать свой драйвер или спроектировать клиентский протокол для новой базы данных.
8. Kafka: от теории к практике
Григорий Кошелев давно известен многим как знатный «кафковод»: по этой теме он сделал уже целый ряд докладов («Когда всё пошло по Кафке», «Как готовить Кафку, чтобы не пригорало» и другие). Однако чаще всего они были на Java-конференциях, а здесь он обратился в .NET-разработчикам и заготовил .NET-примеры. И рассказал о следующем:
1. Внутреннее устройство Kafka
2. .NET-драйвер к Kafka
3. Сравнение с RabbitMQ
4. Грабли (куда же без них) и best practices
7. Миграция с MS SQL в PostgreSQL, когда нужно ещё вчера
Станислав Флусов ранее уже рассказывал на DotNext о миграции приложения с MS SQL на PostgreSQL. Однако за прошедшее время вопрос сталь лишь актуальнее, и многим понадобилось проделать такую миграцию «ещё вчера».
В новом докладе максимальное внимание уделено инструментам: по работе с БД, конвертации схемы, репликации данных и мониторингу. Все это позволит значительно снизить время, необходимое на миграцию вашего приложения.
6. Exactly-once в микросервисной среде
Какие две вещи в распределённых системах самые сложные?
2. Доставка строго один раз.
1. Гарантированный порядок сообщений.
2. Доставка строго один раз.
В этой шутке есть ощутимая доля правды, в системе из нескольких сервисов и под высокой нагрузкой бывает сложно добиться, чтобы логические и бизнесовые транзакции выполнялись однократно.
Проблема решается за счёт проектирования идемпотентных сервисов. Артем Рудневский рассказал о том, как решались эти проблемы на примере высоконагруженного сервиса, и как в этом помогали Kafka и Redis.
5. Ordering the Chaos: Cleaning Logs and Ordering Events in Microservices
Выше уже говорили и о «микросервисах против монолита», и о гарантированном порядке сообщений, а тут обе эти темы сходятся.
Ну, предположим, распилили мы этот ужасный монолит. И теперь у нас логи одного и того же процесса собираются с помощью множества независимых элементов. И тут выясняется, что если опираться при этом просто на таймстемпы, то с порядком событий может возникать много чехарды.
В итоге ситуация оказывается такой непростой, что Адам Фурманек начал доклад о ней с философского вопроса «Что такое время?» — но не просто обозначил проблему, а рассказал, что помогает с ней справляться.
4. Откуда что взялось в C#
Известно, что языки программирования очень влияют друг на друга. C# и много что «подсмотрел» в других (его даже называли «копией Java»), и сам много что показал другим (такие фичи, как LINQ и async/await, стали активно заимствовать).
Из доклада можно узнать, когда на самом деле придумали обобщённое программирование, поддерживает ли C# ленивые вычисления и можно ли посчитать производную с абсолютной точностью. Зачем разработчику всё это знать? Помимо простого любопытства, это помогает ещё и понять внутреннюю логику языка, объясняет, какие задачи решались при внедрении какой-то фичи.
Для такой темы нужен спикер, который активно взаимодействовал с разными языками на протяжении многих лет, и здесь именно такой: Марк Шевченко пишет на C# уже почти два десятилетия, а на других языках вроде C++ начал писать ещё раньше.
3. Атакуем цепочку поставок
Проблема безопасности всегда стоит остро: уязвимостей много, а способов их эксплуатировать ещё больше. В этом докладе рассмотрим одну из самых горячих проблем современности — атаку на цепочку поставок. На каком этапе здесь что-то может пойти не так? Да, в общем-то, на любом.
Денис Тарасов и Дмитрий Афанасьев позволяют воочию увидеть, как может произойти атака, что с этим можно сделать и почему процесс обеспечения безопасности бесконечный. Доклад рассматривает некоторые инструменты и методологии защиты от подобного рода атак.
2. Обработка XML-файлов как причина появления уязвимостей
И снова о безопасности, но тут в неожиданном ракурсе: поднимите руку, кто в вопросе уязвимостей думает про XML? А между тем дефекты безопасности, возникающие при обработке XML-файлов, хитры. Почему блог, развернутый на вашей машине, может стать причиной утечки данных? Почему при обработке картинок приложение начинает отправлять сетевые запросы?
Сергей Васильев разбирает, как обработка XML-файлов связана с дефектами безопасности, что такое XXE и XEE, и каким образом можно защититься от них.
1. Поговорим о хэш-функциях
И, наконец, лидер — доклад Анатолия Жмура.
Казалось бы, что и зачем вообще говорить .NET-разработчикам в хэш-функциях? Общее представление у всех есть, пользоваться ими при необходимости могут, что ещё нужно-то?
Ну давайте тогда такой вопрос на засыпку. А какое вообще точное определение у термина «хэш-функция»?
Ответ
Оказывается, на самом деле термина «хэш-функция» даже не существует. Это лишь жаргонизм, у которого нет строгого определения. Но некоторый нестрогий набор характеристик вывести можно.
То есть в этом докладе многие узнали что-то новое и интересное для себя прямо начиная со вступления.
Надеемся, вы нашли здесь что-то интересное для себя. И если это так, то почти наверняка найдёте и на следующем DotNext — и если поучаствуете в нём, сможете не просто смотреть видео, а задавать вопросы спикерам и общаться с другими участниками. Напоминаем, он пройдёт 3-4 ноября (онлайн) и 20 ноября (Москва+онлайн), все подробности и билеты — на сайте.
Автор: Daria Solovey