goods.ru в тренде: свобода, технологии, решения

Goods.ru — высоконагруженная площадка: в которой создаются более 5 000 новых заказов в день, и в любой момент обрабатывается более 75 000 заказов (взаимодействия с продавцами, передача заказов транспортным компаниям, курьерам и т.п. ). Эта цифра с каждым годом кратно растет. Goods.ru пишется с нуля на современном стеке, например, используются Golang, Kotlin и Swift. Основу корпоративной культуры составляет ценность команды, где каждый сотрудник имеет большую свободу действий и может влиять на конечный продукт.

Goods.ru — e-commerce нового типа. Это маркетплейс, единая витрина для тысяч магазинов (сейчас на ней более 1 000 000 товаров, и ежедневно добавляются новые). Отличие goods.ru в том, что он максимально упрощает жизнь клиентам: контролирует весь процесс от заказа до доставки, отвечает за действия продавцов и защищает интересы покупателя.

Маркетплейсу больше трех лет, и он уже генерит трафик более 4 000 000 посещений в месяц. К концу 2019 года прогнозируется количество заказов более 10 000 ежедневно. Нагрузка на сервис постоянно растет, появляются новые бизнес-задачи. Соответственно, команда растет и приглашает архитекторов, разработчиков (iOS, Android, Golang, 1С), DevOps, специалистов Big Data, инженеров техподдержки и тестировщиков.

goods.ru в тренде: свобода, технологии, решения

В ритме стартапа

Маркетплейс основан и поддерживается «М.Видео», но функционирует самостоятельно: команда сама выбирает пути развития, подходы к работе и технологии. В результате в goods.ru такая же свобода принятия решений, как в ИТ-стартапе, но без рисков, присущих начинающему бизнесу.

goods.ru в тренде: свобода, технологии, решенияМы создаем goods.ru с чистого листа и можем строить систему правильно с точки зрения архитектуры, разработки и потребностей бизнеса. Применяем разумные инициативы коллег и экспериментируем, чтобы найти лучшее решение. И на десерт: у нас нет ни иерархичности, ни бюрократии, поэтому решения принимаются гибко и быстро.
Водолазов Михаил (директор ИТ)

Goods.ru — молодая платформа, поэтому в работе практически нет легаси и устаревшего технологического стека. Микросервисная архитектура позволяет не тащить в будущее старые технологии, а применять наиболее эффективные и интересные.

Вот как это проявляется на примере трех стратегически важных проектов: системы управления товарным каталогом Malibu, системы управления заказами OMS и мобильных решений.

goods.ru в тренде: свобода, технологии, решения

Malibu: быстрый HighLoad

Malibu — система управления товарным каталогом. Сначала сюда стекается вся информация о товарах, после чего она попадает на витрины: десктопную, мобильную версии сайта, приложения Android и iOS. Ядро Malibu — MS SQL. Также в основном стеке проекта — Golang и Elasticsearch.

Elastic — отличный поисковый движок. Через него приложения-клиенты всех четырех витрин быстро находят данные по категориям, товарам и т.д. Но есть и минус: Elastic справляется с нагрузкой по чтению и поиску данных, но «не любит» их вставку и обновление. А каталог обновляется часто: то цена изменится, то статус наличия.

Это стало ключевой задачей для команды Malibu, потому что изменения каталога нужно мгновенно доносить до всех витрин. Например, если изменится цена товара, покупатель должен увидеть одинаковые данные и с ноутбука, и с iPhone. А когда в системе более 3 000 000 карточек, такая задача не решается «в лоб»: либо понадобятся запредельные мощности, либо пострадает скорость обновления.

goods.ru в тренде: свобода, технологии, решенияМы написали приложение на Go, которое берет данные из Malibu и по определенному алгоритму пишет их в Elastic. Есть версионность: даже если при обновлении случится авария, будет доступна рабочая версия каталога, и покупатели продолжат оформлять заказы.
Чтобы справиться с ростом посещаемости goods.ru, мы глубоко погрузились в архитектуру Elastic: настраиваем его под наши нагрузки, улучшаем взаимодействие с «железом». Это ценный опыт для наших ребят: хотя Elastic много где нужен, на рынке мало таких специалистов и еще меньше компаний, где есть возможность в нем разобраться.
Маннур (руководитель отдела разработки)
goods.ru в тренде: свобода, технологии, решения

Управление заказами: на что оказывается способна 1С

Goods.ru отвечает перед покупателем за весь процесс продажи: гарантирует наличие товара, проводит оплату и обеспечивает доставку. Поэтому OMS (Order Management System, система управления заказами) — одна из ключевых и самых нагруженных ИТ-систем. Она сделана на платформе 1С, но это очень необычный 1С.

goods.ru в тренде: свобода, технологии, решенияМы применяем множество решений, нетипичных для 1С. Например, это DevOps и CI/CD, автоматизированный деплой и в целом автоматизация рутинных операций, юнит-тестирование и микросервисная архитектура. Для других инструментов эти инструменты привычны, но 1С-разработка только начинает к ним двигаться, а мы уже их внедрили.
Так, мы используем Prometheus для мониторинга, Graylog для сбора и анализа событий, Grafana для визуализации, а историю кода храним на GitHub. Мы даже прототипируем на 1С другие решения — по логистике или маркетингу. Если всё ОК, позже переводим на «правильный» стек, например Go.
Не со всем этим 1С дружит «из коробки». Например, чтобы подключить RabbitMQ, мы написали дополнительные библиотеки на C#. Но игра стоит свеч. Эти технологии не зря стали стандартом индустрии за пределами 1С — они делают жизнь разработчиков гораздо проще. Без ложной скромности скажу: компании, которые работают с 1С на таком уровне, можно пересчитать по пальцам двух рук.
Сергей (архитектор системы)
goods.ru в тренде: свобода, технологии, решения

У OMS трехзвенная архитектура: СУБД + клиент + сервер, — и множество RESTful-интеграций с другими сервисами. Например, если покупатель звонит в кол-центр, то оператор получает данные о заказе из OMS. В любой момент времени OMS обрабатывает примерно 75 000 заказов на той или иной стадии выполнения, а к концу года их число удвоится. Конечно, это создает большое количество запросов.

goods.ru в тренде: свобода, технологии, решенияВысоконагруженные системы тоже нехарактерны для 1С, и с этим связана пара давних забавных фейлов. Как-то наши админы очень удивились, когда SQL-сервер лег под запросами OMS — не из-за неоптимальности, а потому что поток действительно мощный. А в другой раз мы зарепортили в Microsoft баг в SQL Server, который проявляется только в highload-системах. Конечно, сейчас мы развиваем OMS как highload-проект.
Руслан (руководитель управления по логистике)
goods.ru в тренде: свобода, технологии, решения

Высоконагруженная 1С-система держится на параллельных вычислениях: данные считаются, не конфликтуя между собой. Для этого в goods.ru сделали робота, который выполняет процессинг всех заказов, а сейчас решает интересные задачи по его модификации: улучшает распараллеливание и оптимизирует работу каждого потока.

Для чего было делать такие системы именно на 1С? Все просто: команда OMS не только кодит, но и дизайнит процесс обработки заказа. А 1С дает нужный для этого UI прямо «из коробки». Если описывать движение заказа кодом, нужны громоздкие условные переходы. А 1С визуализирует карту процесса обработки заказа, чем сильно облегчает всем жизнь. И поскольку к 1С можно подключить нужные технологии, эта платформа оказывается оптимальным решением.

goods.ru в тренде: свобода, технологии, решения

«Завтра» уже наступило: мобильные решения в goods.ru

Где-то кодогенерация, разработка на Swift или бэкенд на Golang еще только находятся в планах развития. А команда мобильной разработки goods.ru уже давно решает свои задачи на самом современном и эффективном стеке.

Одна из ключевых задач — обращение к серверу через обоснованно модный фреймворк gRPC. Маленькие пакеты и постоянное соединение обеспечивают быстрый отклик мобильного приложения даже в нестабильной сети. Но вот при разрыве соединения gRPC не гарантирует бесперебойного обращения к серверу. Команда goods.ru добилась идеального результата, решив задачу повторного соединения с сетью и инициализации всех сервисных клиентов.

goods.ru в тренде: свобода, технологии, решения

iOS-разработчики goods.ru всегда работают с самыми свежими инструментами Apple: актуальной версией Swift и новейшими фреймворками. Например, сейчас используется Swift 5. А приложение для Android построено на архитектуре MVVM и популярном стеке Kotlin + RxJava 2 + Android architecture component.

Бэкенд мобильного приложения написан на Go и взаимодействует с мобильными клиентами iOS и Android с помощью кодогенерации: клиенты сами генерируют для себя нужные файлы. Это заметно ускоряет появление новых возможностей на стеке Mobile. Кстати, мобильный бэкенд на Go стал единым для всех витрин, заменив PHP-версию на веб-сайте. Теперь все взаимодействие с покупателем проходит через единую точку, и компания не плодит бэкенды.

goods.ru в тренде: свобода, технологии, решенияВ ближайшем будущем мы сделаем goods.ru под Wear OS и версию для планшетов. Мы также пойдем в направлении AI и будем искать новые возможности применения «железа» для стимулирования продаж. В общем, планируем много хулиганить и экспериментировать. Главное, что у нас есть возможность реализовать собственные инициативы и сделать крутой, большой и уникальный e-commerce продукт!
Виктор (Team Lead разработки)
goods.ru в тренде: свобода, технологии, решения

И еще немного о стеке

67% руководителей ИТ-департамента goods.ru начинали в компании разработчиками. Так что все понимают, как важно решать задачи на комфортном, эффективном ПО по своему профилю и не тащить в будущее «технологии динозавров». Стек регулярно обновляется: сотрудники предлагают свои идеи, а архитекторы и техлиды верифицируют их, чтобы в инструментарии не возникал «зоопарк».

В ближайших планах goods.ru — переход на Kubernetes, Kafka, GitLab CI и EFK (Elastic, Fluentd, Kibana), создание приватного облака (KVM-виртуализация и OpenNebula) и автоматическое заведение серверов на Foreman. Прямо сейчас идет переход от традиционных хранилищ к колоночным базам данных. Кроме того, компания постоянно находит способы извлечь пользу из накопленных данных с помощью алгоритмов прогнозирования и машинного обучения.

goods.ru в тренде: свобода, технологии, решения

Как работается в goods.ru

В основе работы goods.ru лежит доверие: компания доверяет экспертизе сотрудников. Соответственно, сотрудники получают свободу действий и возможность влиять на конечный продукт.

goods.ru в тренде: свобода, технологии, решенияУ нас не консервативный workflow. Задачи разноплановые, можно видеть развитие проекта, в котором я участвую. Я высказываю идеи при выборе технологического стека и могу влиять на многие вещи, чувствовать свою сопричастность к принятию решений и развитию продукта.
Артем (back-end разработчик)
goods.ru в тренде: свобода, технологии, решения

Например, архитекторы проектируют ИТ-системы, начиная с истоков: двигаются не от задач, поставленных заказчиком, а от бизнес-целей. Ответственность тестировщиков — не только выпустить продукт без багов, но и решить, что пойдет на разработку, не пропуская неграмотные задачи. А разработчики сами, внутри команды, определяют способы решения задач. Каждый может предложить методы и технологии и т.д. — инициатива приветствуется, а авторы лучших идей даже получают призы.

goods.ru в тренде: свобода, технологии, решенияСамое интересное — работать над продуктом в команде с разработчиками. Я могу влиять на способ реализации задач, предлагать подходы по развитию тестирования, накидывать задачи по развитию продукта... При проверке интеграции мне приходилось решать множество технических проблем, даже выполнять роль релиз-менеджера. Это бесценный опыт!
Михаил (тестировщик)
goods.ru в тренде: свобода, технологии, решения

По условиям работы, как и по технологическому уровню, goods.ru похож на другие топовые ИТ-компании. Работа строится по Agile — в небольших (до 10 человек) и демократичных командах. Партнерские отношения между сотрудниками и руководителями помогают создать хорошую, продуктивную атмосферу. Рабочие и административные вопросы решаются без бюрократии. Например, если нужно поработать из дома, нет проблем — лишь бы не подвести команду. Компания поддерживает work-life balance: переработки не приветствуются, остаются на усмотрение сотрудника, а если все же случаются, то компенсируются отгулами.

Дважды в год каждый сотрудник вместе с руководителем оценивает свой прогресс и намечает новые пути развития — что прокачать, чтобы получить повышение. Такое планирование работает: за прошлый год в должности выросли почти 50% команды.

Возможности для профессионального развития включают курсы, сертификации и конференции: GopherCon Russia для Golang-разработчиков, TeamLead Conf для тимлидов, Highload++ и т.д.). Например, совсем недавно сотрудники goods.ru приняли участие в GolangConf и FrontendConf Moscow.

goods.ru в тренде: свобода, технологии, решенияМне интересно работать без бюрократии и не бороться с ветряными мельницами. В goods.ru нет консервативного и закостенелого руководства, а есть возможность развиваться на внутренних курсах и освоить новые виды тестирования. Поэтому можно экспертно и карьерно развиваться внутри.
Елена (тестировщик)
goods.ru в тренде: свобода, технологии, решения

Goods.ru предлагает рыночную зарплату с регулярной индексацией, а также возможность собрать свой идеальный соцпакет. Ежегодно каждый сотрудник получает определенное количество баллов и может инвестировать их в бонусы, которые нужны именно ему: ДМС с массажем, страхование жизни себе и близким, оплату спортзала, английский, питание и т.д.

goods.ru в тренде: свобода, технологии, решения

Свободное время коллеги тоже часто проводят вместе: командой участвуют в «Гонке героев» и квизах, ходят в турпоходы, играют в футбол и волейбол, посещают скалодром, рубятся в настолки и смотрят «антипопкорновое» кино в офисе и еще много чего интересного!

goods.ru в тренде: свобода, технологии, решения

Кстати, об офисе. До него легко доехать из любого конца Москвы: он находится в 7 минутах от метро «Бауманская». А тем, кто живет «чуть дальше», например на другом конце России, компания компенсирует затраты на переезд.

goods.ru в тренде: свобода, технологии, решения

Немного инсайда. Каким нужно быть, чтобы работать в goods.ru?

  • Юрий (инженер DevOps): «Открытым новому, стремиться к саморазвитию, обладать гибким мышлением, уметь эффективно коммуницировать».
  • Артем (back-end разработчик): «Целеустремленным и инициативным, не бояться брать на себя ответственность при принятии решений».
  • Михаил (тестировщик): «Смелым и готовым развиваться. Быстро реагировать на изменения вокруг. Изучать архитектуру, пытаться находить новые подходы».
goods.ru в тренде: свобода, технологии, решения

Если это о вас...

...Присоединяйтесь!

С 2017 года команда goods.ru выросла до 300 человек и продолжает расти: бизнес-задач все больше, и они все масштабнее.

Присоединяйтесь, чтобы делать с нуля высоконагруженные продукты для сотен тысяч людей, решать сложные задачи на современном стеке и развиваться в одной из самых сильных ИТ-команд страны.

Добро пожаловать!

goods.ru в тренде: свобода, технологии, решения