goods.ru в тренде: свобода, технологии, решения
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 — молодая платформа, поэтому в работе практически нет легаси и устаревшего технологического стека. Микросервисная архитектура позволяет не тащить в будущее старые технологии, а применять наиболее эффективные и интересные.
Вот как это проявляется на примере трех стратегически важных проектов: системы управления товарным каталогом Malibu, системы управления заказами OMS и мобильных решений.
Malibu: быстрый HighLoad
Malibu — система управления товарным каталогом. Сначала сюда стекается вся информация о товарах, после чего она попадает на витрины: десктопную, мобильную версии сайта, приложения Android и iOS. Ядро Malibu — MS SQL. Также в основном стеке проекта — Golang и Elasticsearch.
Elastic — отличный поисковый движок. Через него приложения-клиенты всех четырех витрин быстро находят данные по категориям, товарам и т.д. Но есть и минус: Elastic справляется с нагрузкой по чтению и поиску данных, но «не любит» их вставку и обновление. А каталог обновляется часто: то цена изменится, то статус наличия.
Это стало ключевой задачей для команды Malibu, потому что изменения каталога нужно мгновенно доносить до всех витрин. Например, если изменится цена товара, покупатель должен увидеть одинаковые данные и с ноутбука, и с iPhone. А когда в системе более 3 000 000 карточек, такая задача не решается «в лоб»: либо понадобятся запредельные мощности, либо пострадает скорость обновления.
Управление заказами: на что оказывается способна 1С
Goods.ru отвечает перед покупателем за весь процесс продажи: гарантирует наличие товара, проводит оплату и обеспечивает доставку. Поэтому OMS (Order Management System, система управления заказами) — одна из ключевых и самых нагруженных ИТ-систем. Она сделана на платформе 1С, но это очень необычный 1С.
У OMS трехзвенная архитектура: СУБД + клиент + сервер, — и множество RESTful-интеграций с другими сервисами. Например, если покупатель звонит в кол-центр, то оператор получает данные о заказе из OMS. В любой момент времени OMS обрабатывает примерно 75 000 заказов на той или иной стадии выполнения, а к концу года их число удвоится. Конечно, это создает большое количество запросов.
Высоконагруженная 1С-система держится на параллельных вычислениях: данные считаются, не конфликтуя между собой. Для этого в goods.ru сделали робота, который выполняет процессинг всех заказов, а сейчас решает интересные задачи по его модификации: улучшает распараллеливание и оптимизирует работу каждого потока.
Для чего было делать такие системы именно на 1С? Все просто: команда OMS не только кодит, но и дизайнит процесс обработки заказа. А 1С дает нужный для этого UI прямо «из коробки». Если описывать движение заказа кодом, нужны громоздкие условные переходы. А 1С визуализирует карту процесса обработки заказа, чем сильно облегчает всем жизнь. И поскольку к 1С можно подключить нужные технологии, эта платформа оказывается оптимальным решением.
«Завтра» уже наступило: мобильные решения в goods.ru
Где-то кодогенерация, разработка на Swift или бэкенд на Golang еще только находятся в планах развития. А команда мобильной разработки goods.ru уже давно решает свои задачи на самом современном и эффективном стеке.
Одна из ключевых задач — обращение к серверу через обоснованно модный фреймворк gRPC. Маленькие пакеты и постоянное соединение обеспечивают быстрый отклик мобильного приложения даже в нестабильной сети. Но вот при разрыве соединения gRPC не гарантирует бесперебойного обращения к серверу. Команда goods.ru добилась идеального результата, решив задачу повторного соединения с сетью и инициализации всех сервисных клиентов.
iOS-разработчики goods.ru всегда работают с самыми свежими инструментами Apple: актуальной версией Swift и новейшими фреймворками. Например, сейчас используется Swift 5. А приложение для Android построено на архитектуре MVVM и популярном стеке Kotlin + RxJava 2 + Android architecture component.
Бэкенд мобильного приложения написан на Go и взаимодействует с мобильными клиентами iOS и Android с помощью кодогенерации: клиенты сами генерируют для себя нужные файлы. Это заметно ускоряет появление новых возможностей на стеке Mobile. Кстати, мобильный бэкенд на Go стал единым для всех витрин, заменив PHP-версию на веб-сайте. Теперь все взаимодействие с покупателем проходит через единую точку, и компания не плодит бэкенды.
И еще немного о стеке
67% руководителей ИТ-департамента goods.ru начинали в компании разработчиками. Так что все понимают, как важно решать задачи на комфортном, эффективном ПО по своему профилю и не тащить в будущее «технологии динозавров». Стек регулярно обновляется: сотрудники предлагают свои идеи, а архитекторы и техлиды верифицируют их, чтобы в инструментарии не возникал «зоопарк».
В ближайших планах goods.ru — переход на Kubernetes, Kafka, GitLab CI и EFK (Elastic, Fluentd, Kibana), создание приватного облака (KVM-виртуализация и OpenNebula) и автоматическое заведение серверов на Foreman. Прямо сейчас идет переход от традиционных хранилищ к колоночным базам данных. Кроме того, компания постоянно находит способы извлечь пользу из накопленных данных с помощью алгоритмов прогнозирования и машинного обучения.
Как работается в 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 предлагает рыночную зарплату с регулярной индексацией, а также возможность собрать свой идеальный соцпакет. Ежегодно каждый сотрудник получает определенное количество баллов и может инвестировать их в бонусы, которые нужны именно ему: ДМС с массажем, страхование жизни себе и близким, оплату спортзала, английский, питание и т.д.
Свободное время коллеги тоже часто проводят вместе: командой участвуют в «Гонке героев» и квизах, ходят в турпоходы, играют в футбол и волейбол, посещают скалодром, рубятся в настолки и смотрят «антипопкорновое» кино в офисе и еще много чего интересного!
Кстати, об офисе. До него легко доехать из любого конца Москвы: он находится в 7 минутах от метро «Бауманская». А тем, кто живет «чуть дальше», например на другом конце России, компания компенсирует затраты на переезд.
Немного инсайда. Каким нужно быть, чтобы работать в goods.ru?
- Юрий (инженер DevOps): «Открытым новому, стремиться к саморазвитию, обладать гибким мышлением, уметь эффективно коммуницировать».
- Артем (back-end разработчик): «Целеустремленным и инициативным, не бояться брать на себя ответственность при принятии решений».
- Михаил (тестировщик): «Смелым и готовым развиваться. Быстро реагировать на изменения вокруг. Изучать архитектуру, пытаться находить новые подходы».
Если это о вас...
...Присоединяйтесь!
С 2017 года команда goods.ru выросла до 300 человек и продолжает расти: бизнес-задач все больше, и они все масштабнее.
Присоединяйтесь, чтобы делать с нуля высоконагруженные продукты для сотен тысяч людей, решать сложные задачи на современном стеке и развиваться в одной из самых сильных ИТ-команд страны.
Добро пожаловать!