Доклады

AI для гоферов (4)

ML-инструменты на Go: что использовать?

API
GO
ML
Расширение кругозора
Анна Бурматнова

Независимый эксперт

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

Давайте узнаем!

Доклад принят в программу конференции

Мультиагентные RAG-системы на Go: почему (и когда) группа специализированных агентов эффективнее одного универсального LLM

GO
Support

В этом докладе мы подробно рассмотрим процесс и мотивацию создания мультиагентных систем на Go с использованием RAG-подхода, где конечные автоматы (FSM) управляют координацией нескольких специализированных агентов, ботов и внешних сервисов. Мы разберём, почему распределение задач между несколькими агентами часто даёт более эффективные и предсказуемые результаты по сравнению с монолитным подходом на базе одного универсального LLM, несмотря на дополнительный overhead, связанный с решением задачи взаимодействия. Особое внимание уделим реализации FSM workflow на Go и тонкостям обработки многосоставных запросов, а также покажем, как быстро можно внедрить такую схему на практике.

Доклад принят в программу конференции

Промпт-магия на Go: как формулировка вопроса меняет ответы AI

Варвара Подольская

Независимый эксперт

1)Фильтруем кандидатов
Оцениваем модели (7B-13B) по бенчмаркам и тестируем их в формате собеседования, чтобы выявить сильнейших.

2)Глубокий разбор промптинга
Анализируем влияние техник промптинга на качество ответа:
1 - Базовые техники
2 - Логика и рассуждение
3 - Надежность и точность
4 - Структурирование ответов
5 - Расширение возможностей модели

3)Проверяем LLM на практике
Тестируем его способности решать задачи:
1 - Кодинг и отладку
2 - Аналитику и разбор данных
3 - Новые фичи и архитектурные улучшения
На разных видах промптов

4) Выводы и рекомендации
Оцениваем результаты, выявляем лучшие подходы и формируем инсайты.

Доклад принят в программу конференции

Как мы ускорили разработку при помощи Cursor и AI агентов

Code Review
Совместная работа, система контроля версий, организация веток
Инструментальная поддержка, декомпозиция задач
Автоматизация разработки и тестирования
Методологии и процессы разработки ПО; Сроки и приоритеты
Продуктовая разработка
Будущее рынка разработки ПО

Все говорят об ИИ в разработке. Многие пробуют. Мы всерьез внедряем у себя.
В докладе я расскажу о том как мы подошли к внедрению ИИ в разработке Яндекс Еды.
Какие подходы используем. Какие инсайты обнаружили в процессе. Что показали наши приборы измерения эффективности.

Доклад принят в программу конференции

Архитектура (2)

Банда четырех против Гоферов: стоит ли учить классические паттерны в 2025?

Микросервисы, SOA
Архитектурные паттерны
Архитектуры / другое
Теория

Вспомним, что такое шаблоны проектирования, зачем они, какие бывают. Разберем классику из 23х образцов по полочкам - применимость в Го с точки зрения языка программирования, удобство использования, наличие альтернатив. И в конце каждому шаблону вынесем свой вердикт, поставив знак препинания в нужном месте - "применять нельзя выбрасывать"

Доклад принят в программу конференции

Путь к слоистой архитектуре приложения

Во время работы мне часто приходилось сталкиваться с сервисами, созданными с учетом слоистой архитектуры и DDD. Однако в большинстве случаев в них возникали одни и те же проблемы. Поэтому я решил обобщить свой опыт, связанный с этими трудностями, и рассказать о том, как мы их преодолевали, какой путь прошли, чтобы сформировать текущую архитектуру, и какие преимущества это нам принесло.

Доклад принят в программу конференции

Инфраструктура и эксплуатация (7)

(En) It’s Tool O’Clock: Time to upgrade your Go workflow

Бэкенд / другое
GO
Инструменты

In this talk, we’ll explore the latest enhancements to 'go tool' that streamline dependency management, improve performance, and simplify developer workflows. Learn how tool directives in 'go.mod' eliminate cumbersome workarounds like 'tools.go', how caching speeds up repeated executions, and how structured JSON output makes debugging builds and tests easier than ever. We’ll also discuss new features like GOAUTH for private module authentication and embedding VCS info into binaries. Be prepare to have actionable insights to modernize your Go projects.

Доклад принят в программу конференции

Key-Value Store Alchemy: Turning Logs & Trees into Lightning-Fast global replicated data in Go

LSM vs. B+ tree dilemma? This talk reveals the "alchemy" of combining WALs, memtables, and B-trees for high-performance, replicated key-value stores. Learn how this hybrid approach delivers lightning-fast writes, efficient lookups, and seamless multi-region replication.

Доклад принят в программу конференции

Препроцессоры на Go: нарушение границ или сила -toolexec

GO
Теория
Марк Чолак

Смартомато

В Go, насколько мы знаем, отсутствуют встроенные механизмы препроцессинга — у нас нет ни стандартного препроцессора, ни системы макросов. Но значит ли это, что нельзя написать свой?

Я расскажу о том, как зная детали работы тулчейна Go можно реализовать свой собственный препроцессор. Мы рассмотрим как общий подход к построению препроцессинга, так и конкретный практический пример в виде автоматического инструментария кода трейсами OpenTelemetry.

В ходе доклада мы с вами:
* узнаем о методе встраивания в компилятор (и почему сами авторы Go добавили это в язык);
* выясним, какие фазы компиляции представляют наибольший интерес;
* наметим общее решение для препроцессинга и научимся обманывать компилятор;
* столкнемся с проблемами восстановления импортов и героически их решим;
* рассмотрим работу кеширования во время компиляции в Go и как нам это поможет;
* применим все это на практике;
* рассмотрим, конечно же, проблемы и ограничения такого подхода.

Доклад принят в программу конференции

Пишем свою in-memory DB для быстрого поиска доступности отелей

Иван Коломбет

Островок!

В индустрии принято считать, что все базы данных уже написаны: хочешь RDBMS - бери PostgreSQL, хочешь документы - mongoDB, хочешь inMemory - то Redis. А если уж тебе нужен поиск, то обязательно взять elastic.

Мы в Островок! решили, что хватит это терпеть и разработали специальную базу под хранение цен отельеров. В этом докладе будем выжимать все соки из Golang, применяя практики из доклада: https://www.youtube.com/watch?v=RQ5G-rjbrr0

Доклад принят в программу конференции

Нужна ли вам платформа? Менеджерский взгляд.

Александр Швец

Яндекс Еда

Мы в Яндекс Еде очень любим платформы – у нас есть общеяндексовая платформа, платформа бизнес-группы, платформа самой Еды и даже платформы в отдельных продуктовых стримах. Правда ли использование этих платформ всегда оправдано?

На примере создания Go платформы хочу рассказать:

- Какие платформы у нас есть и зачем
- Как мы пришли к тому, чтобы делать еще одну платформу для Go – Goliath
- Что есть полезного в Goliath и чего еще не хватает
- Сложности внедрения платформы и наши лайфхаки по их преодолению
- Могут ли команды сейчас жить без платформы – польза vs вред от платформы

Доклад принят в программу конференции

Когда возможностей Kubernetes недостаточно. Делаем свой DNS-сервер для Kubernetes в связке с CoreDNS

Проектирование информационных систем
Инфраструктура как сервис (IaaS), платформы как сервис (PaaS)
GO
DevOps / Кубер
Инфраструктура
Сеть

Мы в Т-Банке строим ML-платформу на базе Kubernetes. Однако пользователи не имеют прямого доступа к самому оркестратору; для них всё взаимодействие с платформой скрыто за API. Однажды нам понадобилось предоставить возможность делать сетевые запросы между задачами на платформе, и мы столкнулись с тем, что механизмы Kubernetes не подходят для наших целей. В докладе я расскажу о том, как мы разработали свой формат DNS-имен в Kubernetes, который обратно совместим для пользователей платформы и скрывает все внутренние изменения.

Доклад принят в программу конференции

Ускорение вычислений векторными инструкциями на примере алгоритма DRS системы виртуализации.

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

На примере алгоритма DRS платформы Evolution компании Cloud.ru, рассмотрим как он может быть решён на разных версиях операций с плавающей точкой процессоров x86 и Arm. В чём сложности задействования SIMD операций. Почему это сложнее на go и как это обойти. Бонус - сравнения со скоростью видеокарты, так ли они сильны.

Доклад принят в программу конференции

Вопросы языкознания (7)

Особенности и ловушки модели памяти в Go: Пути к корректной синхронизации и ошибки в некорректной

GO

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

В рамках доклада расскажу о моделе памяти Go, понятным языком объясню отношение happens before, затрону барьеры памяти, обычные и продвинутые (STM и flat combining) способы синхронизации

Доклад принят в программу конференции

if err != nil: почему мы (не)любим обработку ошибок в Go и обзор пропозалов ее изменению

if err != nil {
return err
}

Каждый писал такую конструкцию 100500 раз в каждом проекте. Но это же удобно! Или нет?

Теме обработки ошибок в Go столько же лет, сколько самому языку, но мы попробуем рассмотрать плюсы и минусы ее реализации в Go в сравнении с другими языками, сделаем обзор пропозалов по ее улучшениям (все они были отклонены) и рассмотрим свежий и обсудим новый, очень активно обсуждаемый пропозал от Ian Lance Taylor, который, пожалуй, имеет шансы на имплементацию в языке.

Доклад принят в программу конференции

Швейцария в картах Go: путешествие по Swiss Tables

GO
Расширение кругозора

Golang продолжает развиваться, стараясь идти в ногу со временем и прислушиваясь к своему коммьюнити. А коммьюнити довольно привередливое: им дженерики подавай, итераторы разрабатывай. И все бы ничего, если бы не гость из Швейцарии, заезжающий в версии 1.24. Благодаря ему на собеседованиях вопросов о мапах станет явно больше.

Что это за новый гость в нашем ламповом языке? Почему он собирается выселить старые добрые мапы и как устроен механизм взаимодействия с новой реализацией хеш-таблиц в Golang? При чем тут Rust? Об этом и немного о другом мы с вами поговорим на этом докладе.

Доклад принят в программу конференции

Garbage Collector: от появления до современных алгоритмов

Бэкенд / другое
GO
Михаил Люц

Ozon Банк

Доклад охватывает основные аспекты работы garbage collector (GC) в современных языках программирования. Мы начнем с причин появления GC, рассмотрим первые языки и реализацию GC, а также проблемы, с которыми столкнулись разработчики.
Далее обсудим эволюцию алгоритмов GC — от первых шагов до современных решений, связанных с многозадачностью. Мы также рассмотрим основные виды GC, их историю и влияние на производительность.
Особое внимание будет уделено алгоритму GC в Go с его особенностями, а также сравнению с другими языками. В заключение рассмотрим языки без GC и обсудим плюсы и минусы таких решений.

Доклад принят в программу конференции

Почему вы должны научиться использовать дженерики

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

Да, из всех средств написания запутанного кода на Go дженерики, пожалуй, самое мощное. Именно поэтому мы должны научиться использовать дженерики правильно.

Почему бы просто не отказаться от них полностью, раз они такие опасные? Вот об этом я и хочу вам рассказать.

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

Доклад принят в программу конференции

Готов ли Go к энтерпрайзу

Я архитектор в финтехе и ко мне регулярно приходят сотрудники с предложением сделать парочку сервисов на Go.
На это я сообщаю им набор современных требований к сервисам в энтерпрайзе, после чего они уходят озадаченные и продолжают писать на Java и Kotlin.

На интерактивном семинаре слушатели попробуют продать мне Go, объяснить, зачем мне нужно будет предпочесть его Java или Kotlin, как получится на Go обеспечить нужные нефункциональные требования к современным системам.

Доклад принят в программу конференции

Черная магия unsafe в Go

C/C++
Оптимизация производительности
GO
Лайфхаки
Владимир Балун

Независимый эксперт

Доклад охватывает различные аспекты безопасного и небезопасного использования пакета unsafe в Go, при помощи которого можно ускорять код в десятки раз!

Мы узнаем, как можно создавать срезы без дорогостоящей инициалиации, научимся избавляться от Bound Checks и конвертировать строки в срезы и обратно без лишних копирований и аллокаций памяти... Дополнительно мы сравним пакет unsafe в Go с указателями из С/С++ и посмотрим на некоторые паттерны С++, которые можно в некоторых ситуациях применять при программировании на Go.

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

Доклад принят в программу конференции

Через тернии к... (3)

От хаоса к порядку: управление состояниями и консистентность в интеграциях

Любая интеграция с внешними сервисами — это борьба с хаосом:
У каждого внешнего клиента свой API, свой формат данных и свои бизнес-правила.
Данные приходят с задержками, иногда задним числом, форматы меняются без предупреждения, а гарантий консистентности чаще всего нет.
Как в таких условиях построить систему, которая не развалится?
В этом докладе я расскажу:
• Как мы превратили смену – нашу основную сущность - в стейт-машину, чтобы четко контролировать её жизненный цикл.
• Как работает универсальный адаптер, который позволяет подключать новых внешних клиентов без рефакторинга.
• Как мы обеспечили консистентность данных, используя очереди, контроль состояний, отказоустойчивые механизмы.
• Какие ошибки мы совершили и что можно было сделать лучше.
Доклад будет полезен разработчикам, работающим с интеграциями, асинхронными событиями и сложными процессами, которым важно строить гибкую, масштабируемую и отказоустойчивую архитектуру.

Доклад принят в программу конференции

Как спроектировать кэш-библиотеку следующего поколения и не умереть?

Организация системы кеширования
Оптимизация производительности
Разработка библиотек, включая open source библиотеки
GO

В докладе расскажу о своем опыте создания кэш-библиотеки, трудностях и приключениях этого процесса. Обсудим как общие вопросы, вроде «Зачем нужна ещё одна библиотека?», так и прикладные вещи вроде:

* Как выбрать политику вытеснения?
* Как определиться с хэш-таблицей?
* Почему lock-free – не всегда быстро?
* Как быть, если глобальная блокировка кеша - слишком медленно?

Доклад принят в программу конференции

Эмулируем NES на Go

Эмуляция ретро-консолей представляет необычную нишу на пересечении реверс-инжиниринга, низкоуровневого программирования и игровой индустрии. Создание эмулятора — это не просто возможность оживить старые игры, это куча эмоций, и возможность получить глубокое представление о компьютерной архитектуре максимально практическим способом. В докладе, я расскажу о своем опыте работы над эмулятором консоли NES (известной у нас как Денди). Мы исследуем архитектуру легендарной консоли 90-х и разберём фундаментальные принципы эмуляции: от интерпретации машинного кода процессора MOS 6502 до графического пайплайна и вывода изображения на экран, и даже затронем реализацию сетевого мультиплеера с компенсацией задержек.

Доклад принят в программу конференции

Безопасность и контроль качества (2)

Zero Retries Before Success: как писать интеграционные тесты, которым доверяешь

Вы уверены что правильно тестируете свой код? Вы уверены, что ваш код написан хорошо? Надеюсь, что так, но глядя на OpenSource я в этом не уверен...
Разберем несколько распространенных сценариев которые работает (большую часть времени), но вызывают проблемы:
- время исполнения
- стабильность
- воспроизводимость

Доклад принят в программу конференции

Темная сторона Go: как избежать уязвимостей и писать безопасный код

Георгий Фатеев

МТС Web Services

В этом докладе мы рассмотрим ключевые уязвимости и проблемы безопасности, характерные для языка программирования Go (Golang). Мы разберем, как особенности архитектуры и стандартных библиотек Go могут становиться источниками уязвимостей, таких как race conditions, уязвимости в работе с внешними данными и ошибки в управлении зависимостями. Обсудим реальные кейсы, когда эти уязвимости приводили к серьезным инцидентам, и поделимся практическими рекомендациями по их предотвращению. Доклад будет полезен для разработчиков, которые хотят писать более безопасный код на Go, а также для специалистов по безопасности, стремящихся глубже понять специфику этого языка. Мы также рассмотрим инструменты и методики, которые помогут выявлять и устранять уязвимости на ранних этапах разработки.

Доклад принят в программу конференции

Системное программирование (3)

Погружение в eBPF и XDP вместе с Go

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

В своем докладе я расскажу, как мы пришли к работе с eBPF и покажу на примере написания своего XDP фильтра как начать работу с eBPF используя Go. Поговорим об используемых библиотеках, тестировании и запуске программ на eBPF.
Также поделюсь полезными советами и набитыми шишками на этом пути.

Доклад принят в программу конференции

Что такое io_uring и найдется ли ему место в Go

Уже не первый год в сообществе Linux проходят бурные обсуждения инструмента io_uring. Несмотря на то, что этой фиче более пяти лет, она все равно остается довольно экзотической в наших краях. Тем не менее, новый механизм уже нашел применение во множестве рантаймов, веб-серверов, баз данных, файловых систем и других сложных программных продуктах.

В своем докладе я расскажу про:
- связь асинхронности и неблокирующего I/O
- класические подходы к работе с не блокирующим IO
- новый интерфейс ядра - io_uring
- liburing как об удобном способе работы с io_uring
- использование libruing в GO и почему все не так гладко
- движение в сторону включения io_uring в рантайм GO
- опыт создания приложения с io_uring

Доклад принят в программу конференции

От Netlink к eBPF: радикальное ускорение трассировки интернет-пакетов

Подсистема ядра Linux, отвечающая за трассировку сетевых пакетов, использует протокол Netlink для передачи данных в пространство пользователя. При большом объеме трафика свыше 5 Гб/c Netlink создает большую нагрузку на систему и может приводить к потерям пакетов. В докладе показано, как мы применили eBPF для обхода Netlink при передаче трейсов, тем самым повысив производительность и устойчивость всей системы.

Доклад принят в программу конференции

Резерв (4)

Генерация initial corpus с помощью языковых моделей. (Готовим идеальную пищу для вашего фаззера).

Защита информации
GO
ML
Безопасность
Безопасность инфраструктуры
Инфобезопасность

Процесс фаззинга исходного кода продукта может продолжаться бесконечно, если подходить к нему без должной подготовки. Эта подготовка не обязательно включает в себя знания из области информационной безопасности или техник фаззинг-тестирования. Она подразумевает под собой создание условий, в которых процесс фаззинга не будет занимать больше времени, чем разработка самого продукта в целом. Поскольку, всем продуктовым командам так или иначе приходится проходить сертификацию (которая включает в себя процесс фаззинг-тестирования), а также приходится убеждать себя и других в надежности и безопасности продукта, столкновение с процессом фаззинга неизбежно. В этом докладе я расскажу, каким образом можно подготовить идеальную среду для вашего фаззера, чтобы вам не приходилось тратить время на то, чтобы научить его обходить валидацию в коде продукта или придумывать сложные структуры данных на входе определенных функций.

Доклад принят в программу конференции

Как помощью QEMU и буханки хлеба можно сделать свое облако?

Эдгар Сипки

МТС Web Services

У OpenStack есть гигантское число проблем, из-за которых он имеет серьезные ограничения для создания полноценного облака, другие же используют k8s или nomad для управления QEMU образами, однако, даже тут есть множество ограничений.
Я сравню и покажу разные варианты использования qemu, как поднятие и запуском виртуальных машин через k8s и nomad, так и примеры взаимодействия с QEMU через Go и то, как мы спроектировали оркестоврщик образов без оркестовщика

Доклад принят в программу конференции

За кулисами асинхронности: корутины, горутины и правда между ними

В этом докладе мы погрузимся в мир асинхронного программирования и разберемся, как Go решает проблемы параллельного выполнения. Вы узнаете, что отличает горутины от классических корутин, и почему они считаются уникальными в контексте производительности и масштабируемости. Мы также обсудим, как выбрать правильный подход для решения различных задач, от простых IO-bound операций до сложных вычислительных задач.

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

Доклад принят в программу конференции

Построим облачные блочные устройства с нуля

Сергей Самойлов

МТС Web Services

1. Что такое виртуализация, qemu процесс и другие прелести
2. Что такое ceph и какие проблемы он решает
3. Попробуем соединить и понять какие проблемы возникли
4. Попробуем решить проблемы с помощью инструмента spdk
5. Все хорошо, но как управлять всем этим?
6. Что осталось за кадром

Доклад принят в программу конференции