Время на прочтение
Всем привет! Я – Влад, руководитель группы поисковой оптимизации в Ozon.
Go повсюду. И, конечно, ни при каких обстоятельствах мы не могли пройти мимо него в самом крупном направлении компании – разработке маркетплейса.
Направление отвечает за разработку инструментов, которыми активно пользуются наши покупатели и продавцы. Сюда входит абсолютно всё, что нужно для того, чтобы продавец смог предложить товар или услугу, а покупатель — сделать заказ.
И нам есть чем поделиться. Приглашаем на открытый Ozon Tech Community Go Meetup, в Москве, 20 сентября в 19:00. На митапе подробно обсудим Go и технологии, которые мы используем в разработке маркетплейса Ozon. Узнаем, как устроена разработка доставки и пути совершения покупки.
В программе
Руководитель группы разработки Инструменты поисковой оптимизации
- Открытие митапа и приветственное слово: Дмитрий Логовский
Руководитель группы разработки Оформление заказа
- Как заставить вашу базу данных держать 20K RPS, варианты масштабирования и их минусы
Доклад о том, как правильно скейлить вашу БД от 1 RPS до 20К RPS, какие подходы к масштабированию существуют и какие неочевидные минусы есть в этих подходах.
Руководитель отдела разработки продукта Сегменты и триггерные коммуникации
- RoaringBitmap: что это такое и как мы это используем
Поговорим о том, что такое битмапы и как устроены RoaringBitmap, как с ними работать в Go и как мы это используем в Ozon при работе с сегментами.
- Protocol Buffers: про то что все знают или не знают
Подробно обсудим protobuf: типы данных, сообщениях, нумерациях полей, перечисления, коллекции. Обсудим возможности безопасного обновления контракта. Наглядно посмотрим, что будет, если нарушать правила обновления контракта и обсудим стайлгайд.
Встречаемся в офисе Ozon, Башня на Набережной, 10, блок С, 30 этаж, Москва-Сити. Начинаем собираться в 18:30.
Для участия в событии регистрируйтесь по ссылке и ждите подтверждения в письме. К сожалению, места в зале уже закончились, присоединиться можно только онлайн, в день мероприятия вам придёт ссылка на трансляцию. Трансляция будет на нашем YouTube-канале и в сообществе в VK.
Sync.Pool, свой mini-k8s, паттерны и сообщения об ошибках
19:00, сбор гостей с 18:30
О митапе
28 марта в Нижнем Новгороде и онлайн пройдет встреча гоферов.
Узнаем, как снизить нагрузку на сборщик мусора. Напишем свой небольшой кубер с helm. Рассмотрим средства для работы с ошибками. И научимся использовать мощь горутин грамотно и безопасно. Докладчики митапа — разработчики из команд систем хранения данных и телекома YADRO, а также представители VK и AvitoTech.
Программа
Markdown formatted text
Я работал над приложением, которое испытывало пиковые нагрузки при получении новых данных и не успевало поставить их в централизованную обработку. По привычке начал профилировать в надежде вычислить time-critical участки кода. Но быстро выяснил, что все портил Garbage Collector. Я расскажу:
• Как уменьшить влияние GC на ход выполнения задачи, и какие плюсы и минусы это несет.
• Покажу бенчмарки для разных размеров буферов данных и объясню, когда sync.Pool вам поможет, а когда не следует его использовать.
Тимлид в команде телекома, YADRO
Более 20 лет программировал на C/C++, а затем перешел на Go, потому что появилась задача ускорить код на Go. Сейчас разрабатывает сервисы для администрирования базовых станций во главе группы талантливых инженеров.
Как мы сделали свой mini-k8s на Go с helm-шаблонизатором
Мы взяли типичные комплексные задачи в облаке и разбили их на набор атомарных шагов. Для каждого шага сделали свой манифест в helm-стиле, для каждого манифеста написали собственный обработчик. Таким образом мы получили набор маленьких блоков из которых можно составлять большие приложения. И получили все преимущества helm — широкие возможности по шаблонизации и общеизвестный формат.
Старший программист в команде разработки DataMasters, VK Tech
В ИТ более 10 лет, прошел путь от C сквозь терни PHP и наконец обрел покой в пучинах Go.
Учим сервис сообщать об ошибке понятно пользователям, машинам и программистам
Мы рассмотрим средства для работы с ошибками в Go, чем они хороши и что делать, если на пути встает сериализация. На примере того, как мы учились сообщать пользователю об ошибках во время выполнения запроса в системе хранения данных, вы узнаете как внедрить свой формат ошибок для общения между сервисами и оформить ее в библиотеку.
Разработчик в команде систем хранения данных, YADRO
Любит оставлять код лучше, чем он был. Не любит, когда после этого приходит три бага.
Паттерны конкурентного программирования в Go
Я расскажу о нескольких популярных паттернах, которые помогают использовать мощь горутин грамотно и безопасно. Посмотрим на примеры кода и поговорим о зоне применения этих паттернов.
Старший инженер, AvitoTech
До этого два года работал в Ozon Tech на различных проектах. Вне работы преподает программирование
Запишитесь на митап
Шератон расположен недалеко от кремля. Заходите в главный вход, следуйте в зал Кремль по указателям.
FAQ
Да, все так. Мы не просим денег за вход, еду или любые другие расходы.
Будет ли трансляция и онлайн-участие?
Программа сформирована, но можно подать доклад на следующий митап.
Как делать микросервисы единообразными, когда их много, а разрабы все разные?
Проблема микросервисов в разработке
Проблема, с которой столкнулся наш отдел, заключалась в следующем. У нас было несколько десятков микросервисов, и их число продолжало расти. При этом, как это часто бывает, в Go разработку люди пришли из других языков и принесли с собой различные практики.
Разнообразие подходов
Всё бы ничего, но когда один сервис написан так, как привыкли писать на PHP, другой вдохновлен Ruby, а третий и вовсе отдаёт плюсами, то становится жутко. С таким зоопарком подходов переключаться от сервиса к сервису очень сложно и трудозатратно, а главное, чревато большим количеством ошибок в разработке.
Решение
Решением сперва стал шаблонный сервис, на который стали ориентироваться при создании новых сервисов и рефакторинге старых. Затем появилась cli-утилита, которая занималась генерацией скелета проекта и его компонентов.
Также общие элементы, как клиент к базе данных или grpc dialer, были вынесены в отдельный репозиторий с целью переиспользования во всех сервисах. В итоге, создание новых сервисов и поддержка старых ускорились, а влияние человеческого фактора в рутинных операциях снизилось.
Параноидальная разработка
Paranoia driven development
Если что-нибудь может пойти не так, оно пойдёт не так (закон Мерфи). В докладе мы намеренно станем программистами-параноиками. Потребитель вашего кода (в первую очередь ты сам) может и будет его использовать неправильно.
Презентация о микросервисах
Микросервисы в небольших командах разработки: почему вам нужен PaaS?
Для кого доклад:
- Небольшие команды
- Те, кто планирует или начал переход на микросервисы
- Те, кто уже перешёл, но страдает от высокой стоимости поддержки
Темы доклада
- Проблемы, которые поможет решить PaaS
- Сокращаем порог входа и человеческий фактор, увеличиваем унификацию
- PaaS – необязательно сложно и дорого
- С чего начать? Базовый фреймворк, конфигурация, лейаут сервиса, observability, CI и деплой, автоматизация
- Архитектура компонентов. Минимальный набор необходимых фич, как что устроено
- Организация миграции старых сервисов
- Дальнейшее развитие: разные типы сервисов, генерация чего-либо для уже готового сервиса
Обработка ошибок в Go
Обработка ошибок в Go в 2023
Доклад дает конкретный алгоритм выбора способа обработки ошибок в Go для проекта. Плюс маленький обзор пакетов, существующих, для каждого из способов.
Митап по разработке на Go в Ozon Tech
Go — целевая платформа разработки, принятая в Ozon Tech. На Go написано более 1000 микросервисов, обеспечивающих работу сайта, склада и систем логистики.
На митапе подробно обсудим Go и технологии, которые мы используем в разработке маркетплейса Ozon. Узнаем, как устроена разработка доставки и пути совершения покупки.
Регистрация завершена
25 мая онлайн пройдет митап для разработчиков любого уровня, тимлидов и целых команд, которые задумываются или уже начали применять Go в коммерческой разработке.
Программа
- 5:30 pm Networking
- 6:00 pm Speakers
- CoRoutine – A Source-to-Source Go Compiler and Runtime Library (Achille Roussel, StealthRocket)
- TBD
- 7:00 pm End
Функции, методы и интерфейсы в Go
Эти конструкции часто вызывают вопросы у новичков и споры среди бывалых разработчиков. Давайте посмотрим, как ими пользоваться, чтобы было и красиво, и правильно.
Вы узнаете, как идиоматично писать функции без побочных эффектов, когда это не работает, и что лучше — параметры и приемники значения или указатели на них. Мы также заглянем под капот интерфейсов и устроим небольшие соревнования.
Тимлид команды разработки, YADRO
10 лет в ИТ. Успел пройти путь от С++ до Golang, зацепив по пути DevOps и разработку на Python.
Эффективное использование Go в команде
Когда разработчик пишет на Go, язык дает ему огромное пространство для творчества. Но большинство из нас работает не в одиночку.
Поговорим, что такое хороший код на Go с точки зрения командной разработки, и как средства языка помогут убрать лишние споры, сэкономить дорогое время и бесценные нервы. Вы узнаете, как сделать продукт сопровождаемым и тестируемым, процесс ревью —- плодотворным, а будущий рефакторинг —- спокойным.
В ИТ более 30 лет. Знаю про самоорганизацию, процессы и как не мешать инженерам работать.
Будет ли запись митапа?
Мы ожидаем интересные и познавательные выступления на митапе, и планируем запись мероприятия. Следите за обновлениями!
Приходите на митап и узнайте больше о разработке на Go в Ozon Tech!
Talk 1: CoRoutine – A Source-to-Source Go Compiler and Runtime Library Achille Roussel from StealthRocket will outline an open source Go compiler and runtime library they are developing called CoRoutine that turns Go programs into resumable state machines.
The coroutine package allows the function passed as entry point to the coroutine to be paused at yield points and later resumed by the caller.
When pausing, the coroutine yields a value that is received by the caller, and on resumption, the caller can send back a value that the coroutine obtains as result.
Project Link: https://github.com/stealthrocket/coroutine
About the Speaker Achille Roussel is co-founder and CTO at StealthRocket, a company creating a new programming model based on durable coroutines that greatly simplify the development and operation of distributed systems.
Talk 2: Building WANIX – a WebAssembly Native Operating System Jeff Lindsay will tell the story of a WebAssembly-native operating system and integrated development environment called WANIX.
From a wild idea at a hacker party to a fully realized open source project, WANIX opens up a world of mind expanding possibilities only possible because of WebAssembly.
The project started with the realization that Go’s self-hosting cross-platform compiler could itself be compiled to WebAssembly, creating a pure WebAssembly way to not only make more WebAssembly modules, but executables for any platform. Then, inspired by the beginnings of UNIX and ideas from Genera and Plan9 operating systems, only a few more elements were needed to create a familiar, UNIX-like computing environment that could edit, compile, and run WebAssembly.
About the Speaker Jeff Lindsay is a builder and entrepreneur most known for his work and ideas in open source developer tooling. From webhooks to Docker, Jeff has spent much of his career building and pioneering generative primitives that let developers do more with less. He aims to remind us that software is magic created from imagination.
Event Sponsored By: Stytch is the most powerful identity platform built for developers. With advanced features like device fingerprinting and account takeover-resistant authentication, Stytch provides the infrastructure to make your company’s identity and access management secure, reliable, and scalable.