Конференция завершена. Ждем вас на Saint HighLoad++ в следующий раз!

Построение масштабируемой и гибкой системы потоковой обработки данных: как мы дали возможность загрузить в 2ГИС товары и услуги для 4.5М компаний Архитектуры, масштабируемость

Доклад принят в программу конференции
Игорь Яцевич
2ГИС

Руководитель команды разработки 2ГИС.Товары.

Начал свой путь в разработке веб-проектов с 2007 года на PHP, в 2016 году распробовал Go и не может о нем забыть:) В 2ГИС работает с 2014 года — стоял у истоков UGC-направления, занимался реализацией сервисов для аутентификации пользователей, загрузки фотографий, написания отзывов, избранного и других UGC-сервисов. С 2017 года в проекте 2ГИС.Товары. В данный момент совмещает в себе роли руководителя команды разработки, а также инженера по проектированию и развитию сервисов команды. Перестать писать код и уйти чисто в менеджеры — не его путь:)

Свое свободное время любит проводить с семьей, играть на гитаре дома и на бас-гитаре в группе, делать руками полезные вещи для дома и для своих хобби — DIY-усилители, эффекты для гитары, ретрокомпьютеры.

Тезисы

В 2ГИС есть информация о 4.5 миллионах компаний в сотне городов, и для всех мы хотим отображать информацию о товарах и услугах, которые они представляют. У нас есть разные способы загрузить информацию о товарах и услугах: с помощью прайс-листа, поштучно через CRUD-интерфейс, настроить синхронизацию с 1С, получать данные от внешних партнеров (Booking, DeliveryClub, Yclients, СберЗдоровье). У каждого из этих источников своя периодичность обновления, объем данных и формат.

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

В своем докладе я расскажу о решении, к которому мы пришли, какие у нас были промежуточные фазы состояния системы; поделюсь размышлениями, которые проходили в процессе, а также расскажу о ловушках, в которые мы попадали на своем пути. Поговорим про kafka, организацию потоков данных, выбор хранилищ данных и о микросервисах.

Другие доклады секции Архитектуры, масштабируемость