Бывает, что перед инженерами встает выбор: найти подходящее решение для задачи или написать свое. И часто разработчики предпочитают второй вариант.
Большинство докладов в этой подборке — инструкции по созданию кастомных решений, которые инженеры и разработчики из YADRO, Avito Tech, Ozon Fintech и других технологических компаний уже опробовали на собственных продуктах. Если вашей команде не хватает инструмента для фаззинга или обработки ошибок на Go — можете сделать их по примерам, которые представили инженеры в выступлениях и презентациях.
Внедряем фаззинг: какой инструмент вам подойдет
Рассказал: Иван Золотников, инженер в YADRO
Коротко о сути доклада: Фаззинг — процесс тестирования, в ходе которого инженер подает в функцию заранее «мусорные» данные и смотрит, как она себя ведет и какие ответы выдает. Иван проверил четыре способа реализации фаззинга компонент на Go в проектах YADRO и пришел к выводу, что ничего лучше кастомного инструмента пока не найти. Какое решение он применил, узнаете из доклада.
Зачем смотреть: Убедиться, что фаззинг нужен почти всем, и выбрать подходящее для вас решение.
Создаем замену buf: сеанс реверс-инжиниринга
Рассказали: Эдгар Сипки, разработчик в Ozon Fintech, и Василий Близнецов, разработчик в Positive Technologies
Коротко о сути доклада: Традиционный тулсет для proto устарел: он не обновлялся с момента выхода и использует конфигурацию «старой школы», а у buf есть ряд проблем. Авторы доклада расскажут, как с помощью открытого API buf они создали собственный проект, ставший заменой устаревшему решению.
Зачем смотреть: Убедиться, что нерешаемых задач нет, а также протестировать решение, которое представляют авторы, и оставить фидбек для ребят.
Доступно о паттернах, умных обработчиках и красивой синхронизации в Go
Рассказал: Олег Козырев, старший инженер в AvitoTech
Коротко о сути доклада: Чтобы не писать один и тот же код много раз для разных решений, Олег советует применять паттерны. Тому, как их использовать грамотно и эффективно, и посвящен доклад. Олег расскажет о FanIn, Fan-Out и Pipeline и покажет примеры их применения в коде.
Зачем смотреть: Научиться использовать паттерны, если еще не умеете, и посмотреть красочную презентацию с котом Олега.
Учим сервис сообщать понятно об ошибке пользователям, программистам и машинам
Рассказал: Александр Лырчиков, разработчик в команде систем хранения данных в YADRO
Коротко о сути доклада: Чтобы сообщить пользователю об ошибке, нужно отталкиваться от логики, по которой он пользуется сервисом. В случае с СХД TATLIN.UNIFIED просто показать ему баннер с ошибкой или HTTP-кодом было недостаточно информативно — клиент должен понять, что делать дальше. Тогда команда Александра протестировала несколько инструментов для обработки ошибок и пришла к решению написать собственный.
Зачем смотреть: Узнать, как реализовать инструмент для обработки ошибок на Go с удобным интерфейсом и понятными пользователю месседжами.
Пишем свой mini-k8s на Go с helm-шаблонизатором
Рассказал: Станислав Иванкевич, старший программист в команде разработки DataMasters в VK Tech
Коротко о сути доклада: Команде Станислава нужно было разработать сервис, который поможет автоматизировать создание и установку приложения на пользовательский kuber-кластер. Для этого они взяли типичные комплексные задачи в облаке и разбили их на набор атомарных шагов. Для каждого шага сделали свой манифест в helm-стиле, а для каждого манифеста — собственный обработчик. И получили набор маленьких блоков, из которых можно составлять большие приложения.
Зачем смотреть: На примерах с кодом разобраться, как команда решала задачу, и узнать об ошибках в создании mini-k8s, чтобы не допустить их в собственном проекте.
Снижаем нагрузку на Garbage Collector и ускоряем работу с памятью, используя sync.Pool
Рассказал: Александр Иванов, тимлид в команде телекома в YADRO
Коротко о сути доклада: Александр заметил, что в ускоряемом приложении раз в 10 минут происходят пиковые вычислительные нагрузки, которые влияют на потребление памяти. Решил протестировать несколько способов снижения нагрузки на Garbage Collector: chanpool, memory arena и sync.Pool. В итоге выбрали последний, но в докладе Александр рассказывает о плюсах и минусах каждого решения.
Зачем смотреть: Выбрать удобный способ оптимизации памяти.
Что еще почитать о Go-разработке: