YADRO Go Meetup: sync.Pool, свой mini-k8s, паттерны и сообщения об ошибках
Горьковская
О митапе
Узнаем, как снизить нагрузку на сборщик мусора. Напишем свой небольшой кубер с helm. Рассмотрим средства для работы с ошибками. И научимся использовать мощь горутин грамотно и безопасно. Докладчики митапа — разработчики из команд систем хранения данных и телекома YADRO, а также представители VK и AvitoTech. В ходе всего мероприятия на площадке будет работать стенд с программно-аппаратными комплексами, над которыми работают инженеры YADRO, а участники смогут пообщаться с представителями компании.
Программа
Приветственное слово
Вы узнаете больше о компании-организаторе, программно-аппаратных комплексах, которые создает YADRO, их важности для цифровизации разных секторов экономики страны, а также роли и задачах инженеров в этих процессах.
Снижаем нагрузку на Garbage Collector и ускоряем работу с памятью, используя sync.Pool
Я работал над приложением, которое испытывало пиковые нагрузки при получении новых данных и не успевало поставить их в централизованную обработку. По привычке начал профилировать в надежде вычислить time-critical участки кода. Но быстро выяснил, что все портил Garbage Collector. Я расскажу:
• Как уменьшить влияние GC на ход выполнения задачи, и какие плюсы и минусы это несет.
• Покажу бенчмарки для разных размеров буферов данных и объясню, когда sync.Pool вам поможет, а когда не следует его использовать.
Как мы сделали свой mini-k8s на Go с helm-шаблонизатором
Мы взяли типичные комплексные задачи в облаке и разбили их на набор атомарных шагов. Для каждого шага сделали свой манифест в helm-стиле, для каждого манифеста написали собственный обработчик. Таким образом мы получили набор маленьких блоков из которых можно составлять большие приложения. И получили все преимущества helm — широкие возможности по шаблонизации и общеизвестный формат.
Учим сервис сообщать об ошибке понятно пользователям, машинам и программистам
Мы рассмотрим средства для работы с ошибками в Go, чем они хороши и что делать, если на пути встает сериализация. На примере того, как мы учились сообщать пользователю об ошибках во время выполнения запроса в системе хранения данных, вы узнаете как внедрить свой формат ошибок для общения между сервисами и оформить ее в библиотеку.
Паттерны конкурентного программирования в Go
Я расскажу о нескольких популярных паттернах, которые помогают использовать мощь горутин грамотно и безопасно. Посмотрим на примеры кода и поговорим о зоне применения этих паттернов.