![](https://habrastorage.org/webt/7v/zu/kr/7vzukrlay3v2komlqh0nee84pq0.jpeg)
В прошлом году конференция DotNext проходила в Москве один день, а в этом стала двухдневной. Теперь, когда очередной московский DotNext позади, а зрители прислали свой фидбэк, время оглянуться: как всё прошло, и что вошло в увеличившийся хронометраж? Подробности под катом, а для затравки скажем, что слово «performance» оказалось актуально в обоих значениях: и «производительность», и «художественное выступление».
Первым спикером первого дня стал Андрей DreamWalker Акиньшин (JetBrains), представлять которого зрителям DotNext уже не требуется: его доклады каждый раз получают отличные оценки. Но если на предыдущем московском DotNext он рассказывал о такой «общей» теме, как арифметические операции, то теперь о «близкой к продакшну»: тестировании производительности. Недостаточно просто проверить производительность однократно — что делать, чтобы при каждом новом релизе быть уверенным, что она внезапно не просядет? Многие выбирают вариант «ничего», но таких в выступлении мимоходом пожурили.
![](https://habrastorage.org/webt/kz/8x/h_/kz8xh_fom684qnazcsbcqzwqkaa.jpeg)
Понятно, что для самого Андрея эта тема актуальна в связи с его работой над Rider, и, рассказывая о возможных проблемах, он ссылался на опыт проекта: «при переходе с Mono 4.9 на Mono 5.2 ряд наших тестов стал внезапно вылетать по таймауту. Что делать? Говорите, увеличить таймаут? Остаться на старой версии Mono? Нет, это всё нехорошие варианты». И способы справляться с проблемами тоже брал из собственной практики: «у нас есть merge robots, которые при каждом merge автоматически прогоняют тесты, и если они не пройдут, то ничего не смерджится».
![](https://habrastorage.org/webt/dl/7d/k2/dl7dk25jasjqerk6jngerh77ccy.jpeg)
Слово «перформанс» в первый день можно было услышать и от других спикеров — скажем, у Карела Зикмунда (Microsoft) оно содержалось прямо в названии доклада «.NET Core Networking stack and Performance». Но внимание к производительности не означает, что больше было не о чем послушать. Например, одним из любимцев публики оказался Дмитрий Сошников (Microsoft): ранее он уже рассказывал на DotNext про AI-решения от Microsoft, но тогда они были ориентированы в первую очередь на Python, а теперь появились более подходящие для .NET-разработчиков, так что его новый доклад об искусственном интеллекте был встречен очень тепло.
Анатолий Кулаков, как и Андрей Акиньшин, порицал подход, когда просто пишут работающий код и не интересуются его дальнейшей судьбой — по его мнению, разработчикам надо понимать, что потом происходит в продакшне, и доклад был посвящён сбору и представлению различных метрик. Из него можно было, в частности, узнать интересные подробности о time series databases, хранящих всё с привязкой ко времени. Поскольку о таких БД слышно реже, чем о реляционных или графовых, на них легко не обращать внимания, считая трендом графовые — вот они, мол, активно растут. Но Анатолий обратил внимание аудитории на то, что вообще-то по темпам роста как раз time series далеко впереди. Конечно, это ничего не говорит об абсолютных цифрах (легко быстро расти, когда ты маленький), но это даёт повод присмотреться внимательнее.
![](https://habrastorage.org/webt/gp/h6/th/gph6thenixlk9of_1use8vot96c.jpeg)
Когда начинаешь собирать и хранить множество данных, встаёт вопрос объёма — и среди прочего Анатолий показывал, как впечатляюще в time series database ужимают информацию вида «timestamp / tags / fields». Для временных меток можно не сохранять каждый раз полное время, а указывать дельту с предыдущим замером — это уже экономит место. А если снимаешь показания через определённые промежутки времени, эта разница оказывается одной и той же, и тогда полезнее дельта второго порядка: она становится вообще нулевой. Благодаря этому всему в Facebook обнаружили, что 96% их временных меток ужимаются до одного бита. С тегами тоже есть куда потесниться: когда количество возможных сочетаний не астрономическое, можно закодировать каждое из них и указывать только код. Хорошо, а что с самими фиксируемыми значениями, которые гораздо непредсказуемее? Практика показала, что даже тут куда экономичнее хранить вместо полного значения его XOR с предыдущим.
Вагиф Абилов рассказывал про потоки Akka Streams — например, о том, как «обратное давление» (backpressure) помогает потокам данных идти с нужной скоростью, используя и pull-, и push-подход. Самым удивительным моментом для многих оказалась концовка доклада, когда Вагиф «для закрепления пройденного» исполнил композицию собственного сочинения «Akka Stream Rap» (там тоже не обошлось без «применения backpressure, чтобы справиться с нарастающим темпом песни»). Зрители реагировали на это в духе «теперь я видел всё, осталось разве что зачитать исходники .NET Core под “Кровосток”».
![](https://habrastorage.org/webt/tz/ym/nk/tzymnk7ow7xrlsyikmwi4xya9jw.jpeg)
Но на самом деле в тот момент зрители видели далеко не всё: это выступление было лишь разминкой. После того, как все доклады первого дня закончились, дело дошло до вечеринки, и началось более масштабное шоу. Кроме Вагифа, на DotNext присутствовал ещё один музыкальный спикер — англичанин Дилан Битти, который любит переделывать рок-хиты в песни о разработке. Представление о его творчестве можно получить по этой пародии на Pink Floyd «Another Brick in the Wall (Part 2)»:
Дилан возит с собой на конференции компактную гитару, а Вагиф играет на клавишных, поэтому они решили объединить усилия и устроили совместный performance, исполнив и целый ряд пародий Дилана, и тот же «Akka Stream Rap» Вагифа. Присутствовавшие получили много удовольствия: тот же Карел Зикмунд по ходу действия написал целый ряд твитов, становившихся всё более и более восхищёнными, а позже на YouTube под «Enterprise Waterfall» появился комментарий «мы с тимлидом решили повесить в офисе постеры с цитатами из этой песни».
![](https://habrastorage.org/webt/kq/to/f6/kqtof6zh-exa82tgffhiebd-wfk.jpeg)
Когда пародии кончились, перешли просто к кавер-версиям, но даже тут Дилан удивил многих, специально к DotNext разучив русскоязычный припев «Песни для радио» Noize MC. В общем, вечеринка удалась.
Второй день тоже начался с одним из самых любимых спикеров DotNext-аудитории: Саша Гольдштейн говорил об отладке и профилировании .NET Core-приложений под Linux. И об уровне его погружения в тему хорошо говорит фраза из начала доклада: «кое-что из того, что покажу, сейчас держится на написанных мной скриптах, но я надеюсь, что в будущем появится официальная поддержка». Когда спикер недоволен тем, что предоставляет вендор («Microsoft предлагает под Linux создать файл mytrace.zip, а затем скопировать его на Windows-машину и открывать там с помощью PerfView — но ведь у нас под рукой может даже не быть Windows»), и сам доделывает ещё не реализованное, это дорогого стоит.
![](https://habrastorage.org/webt/qh/ti/em/qhtiem04h7ibgyvnqxi8n4lzmki.jpeg)
Из-за того, что ситуация с Linux-инструментами в .NET-мире пока что оставляет желать лучшего, ранее в связи с Linux Саша обратил внимание на Java и даже выступил на нашей конференции JPoint. Забавно, что на DotNext в одном временном слоте с ним оказался спикер с противоположной ситуацией: Егора Бугаенко давно знают джависты, а тут он впервые пробовал себя перед дотнетчиками.
![](https://habrastorage.org/webt/ay/sw/kw/ayswkwykjppmkd6drkznwuxnq-e.jpeg)
Егор известен тем, что при его появлении всё начинает бурлить: одни бурно возражают его радикальным идеям, другие соглашаются, а третьи говорят «я не согласен, но тут есть повод задуматься». На DotNext он говорил о TDD (эта тема как раз не привязана жёстко к конкретному стеку) — и здесь произошло то же самое. Позиция «зачем писать тесты, когда баги ещё не дали о себе знать» прожгла не один зрительский стул. Вот показательная деталь: когда после конференции зрители присылали отзывы на доклады, в случае с Егором один из отзывов оказался не стандартной короткой репликой, а возражением на три тысячи знаков. Неудивительно, что в дискуссионной зоне, куда каждый спикер отправлялся после своего доклада, Егор тоже услышал немало контраргументов от зрителей. Кстати, эти зоны вообще полюбились спикерам DotNext:
Несмотря на «холиварность» Егора, рекордсменом по проведённому в дискуссионной зоне времени стал Федерико Луиc. И хотя в своём докладе он возвращал всех к теме производительности («Patterns for high-performance C#»), серьёзность темы не помешала ему покорить наши сердца маленьким эффектным жестом. Как известно посетителям наших конференций, всем докладам мы проставляем значки, говорящие об уровне их сложности («введение в технологию», «для практикующих инженеров» и «хардкор»), скажем, у самого Федерико стоял «хардкор». А он взял и использовал эти же значки в самом докладе, продемонстрировав там три других «уровня сложности»:
![](https://habrastorage.org/webt/oh/qb/ht/ohqbhtwqp1xzlwadxgizk0tiggw.jpeg)
После обеда на сцену первого зала вышел Дилан Битти — и показал, что в качестве спикера выступает не хуже, чем в качестве музыканта. Он не стал сразу нырять в техническую конкретику, а начал с общих рассуждений о том, как технологический продукт может облегчать разработчику его освоение (давать «поиграться» и пояснять, что произошло не так, вместо простого «не запускается, идите штудировать документацию»). Это стимулирует регулярные выбросы допамина — а благодаря ним разработчик не только получает больше удовольствия, но и лучше всё запоминает.
При этом, по мнению Битти, мы зачастую считаем понятие UX «чем-то для фронтендеров», хотя вообще-то любой написанный нами код потом будет использоваться другими людьми. А значит, у него будет user experience (в частности, та же кривая обучения), и об этом стоит думать. Затем Дилан перешёл к примерам того, что именно можно делать, и в итоге его доклад настолько понравился зрителям, что оценки уступили только выступлению Саше Гольдштейна. Особое внимание привлёк слайд «как на самом деле стоило бы назвать уровни логирования»:
![](https://habrastorage.org/webt/no/-g/1k/no-g1kgqo44-55wbs0ecariucna.jpeg)
Затем снова появился Гольдштейн, но уже в другой роли: он вёл круглый стол о профилировании и оптимизации с участием других спикеров DotNext — от того же Акиньшина до Сергея Быкова (Microsoft). Отзывы показывают, что такой формат застал многих зрителей врасплох, и возможность задать свой вопрос целой коллегии экспертов была использована не на полную катушку. Но потенциал у неё явно есть, и учтём это при проведении следующих DotNext.
![](https://habrastorage.org/webt/id/gu/tf/idgutf-gis0jb-swunfkkz5szbc.jpeg)
Наконец, завершал конференцию кейноут ещё одного спикера с громким именем, Дино Эспозито. В первый день Дино выступил с более серьёзным докладом «I have a microservices architecture and I didn't know», а тут, когда что-то сложное зрители уже вряд ли смогли бы хорошо воспринимать, позволил себе пофантазировать. Он представил себе «DotNext 2048», проходящий в блокчейновом будущем — в котором, например, спикер Алекс Тиссен вместо своей нынешней темы «serverless computing» рассказывает уже про «developerless computing». Учитывая артистизм Дино, тут тоже получился своего рода перформанс, и без отсылок к известным песням тоже не обошлось (даже название кейноута, «Unchain my heart», взято у Джо Кокера) — так что второй день, как и первый, закрывался очень ярко.
![](https://habrastorage.org/webt/h4/la/gn/h4lagni2twcgnal_mqhiro3bx-q.jpeg)
В итоге на конференции было и чем загрузиться по уши, и над чем посмеяться после этого. Два значения слова «performance» хорошо дополнили друг друга, а два дня дали достаточно времени, чтобы влезли и обе этих вещи, и много докладов на совершенно другие темы (от безопасности до Apache Kafka). Но вот в этот текст подробное описание остальных докладов уже не влезет — иначе и читать его вам пришлось бы тоже два дня.
![](https://habrastorage.org/webt/xq/s-/up/xqs-updsobrnlpv2wh6jjkrh0_g.jpeg)
Комментарии (4)
nexus478
21.11.2017 20:52Марка Симана куда подевали? :)
phillennium Автор
22.11.2017 10:11Когда выбирал, кого упомянуть, смотрел в числе прочего на лидеров зрительских оценок — и Симан при хороших оценках в лидерах всё-таки не оказался :)
phoenixx
интересные доклады. подскажите, видео на youtube-е появится где-то через 3 месяца?
phillennium Автор
Точный срок не назову, но общая схема обычная, да.