Ozon.ru — почти ровесник Рунета, в свои 20 лет мы старше многих наших клиентов. Из книжного интернет-магазина компания выросла в e-commerce платформу, которая объединяет инфраструктуру fulfillment-центров и логистики, веб и мобильные приложения, выдерживает и набеги десятков миллионов пользователей во время распродаж, и атаки интернет-мошенников.
В этом посте мы немного расскажем про себя: о том, как перестраиваем и развиваем платформу, одновременно обслуживая 1,2 млн пользователей ежедневно. А заодно покажем офис, где трудится IT-лаборатория OZON, ну и пару шикарных видов из его окон.
За последний год технологическое подразделение компании выросло в восемь раз — сейчас у нас больше 600 человек. В июле OZON переехал в новую штаб-квартиру — она располагается в одной из башен Москва-сити. Мы заняли восемь этажей (и пока вы это читаете, захватываем девятый).
Замена стека
Чем дольше существует компания и чем больше у нее клиентов, тем многообразнее зоопарк IT-систем и сложнее их поддерживать и развивать. За годы работы OZON выстроил одну из лучших систем логистики и управления fulfillment-фабриками, в то же время платформа e-commerce оставалась массивным MS SQL с хранимыми процедурами и логикой в базе.
Жить с закрытым стеком Microsoft — Windows, IIS тяжко — эти технологии относительно дешевы на входе, но в какой-то момент становятся невыносимо дорогими в поддержке.
Помимо MS стека, в наследство команде IT досталось множество систем, написанных почти 20 лет назад на Delphi— их переписывать нужно просто потому, что они не отвечают требованиям современных реалий.
В итоге около года назад в OZON началась глобальная перестройка IT. Мы начали активно нанимать разработчиков, переходить на опенсорс и микросервисы.
Первоочередная задача — распил логики, которая находится в базах, чтобы сделать ее масштабируемой. Часть этой работы уже проделана — и в том числе благодаря этому OZON может расти на 80-90% в год.
Сейчас многие системы пишутся на GO — это разумный компромисс между производительностью, сложностью освоения и скоростью разработки. Язык достаточно низкоуровневый, чтобы писать производительные сервисы, и в то же время достаточно простой — ему можно быстро научить php-разработчика. В Москве (да и в России) нет такого количества GO-шников, которое нам нужно, поэтому мы нанимаем специалистов, готовых осваивать новый стек, и учим. Подход работает как win-win — специалисты приобретают знания, а мы можем наконец отказаться от проприетарных решений, заменив их собственными. Причем для своих задач команда, вероятнее всего, напишет решение более оптимальное, чем имеющиеся на рынке.
Обживаемся
Про новый офис мы уже упомянули выше, и сейчас постепенно обживаемся в нем: дизайнеры разрисовывают стены, разработчики разбирают устаревшие харды на магнитики и приносят на работу самокаты и коллекции банок из-под Pepsi.
У нас нет сложной иерархии и субординации — а у генерального директора нет кабинета. Ему можно написать на емейл — и получить ответ в тот же день, или в Slack — там он доступен практически постоянно.
Такой подход позволяет решать проблемы быстро и небольшими командами. Ключевые показатели проектов отображаются в реал-тайм на экранах с Grafana, которые стоят у каждой из команд.
На экране в кабинете CTO anatolix таких графиков десяток. Например, видно, что на складе сейчас несколько десятков тысяч еще не собранных посылок. Это нормально — в день мы развозим больше 100 000 заказов, и несколько десятков тысяч посылок — это бэклог меньше, чем на смену. Но если бэклог больше, чем на день — это уже проблема. Благодаря графикам сразу видно, «копится» ли какая-то проблема и в какой из систем что-то пошло не так.
Тест на устойчивость OZON проходит несколько раз в год в период распродаж. Так, в этом ноябре в «Черную пятницу» число заказов увеличилось в 2,5 раза — на тот момент это был рекорд за все время существования сервиса, но декабрьские распродажи этот рекорд побили.
В системе fulfillment и логистики, где товары сортируются и собираются в посылки — свои сложные IT, которые пользователю не видны, и серьезные нагрузки. И оно тоже могло захлебнуться в моменты пиковых нагрузок.
Параллельно растет количество товаров, меняется алгоритм поиска (недавно мы переехали на Elasticsearch) и рекомендаций (теперь на основе Machine Learning), появляются новые фичи. За последние полгода мы почти полностью переписали сайт (с Win Forms на node.JS), обновили мобильные приложения и сейчас работаем над сокращением технического долга.
IT сейчас переживают взрывной рост — у нас есть люди и технологии, которых OZON ранее никогда не видел. Мы многое пробуем, и если что-то не полетело — отказываемся и берем другое решение. Так, мы строили кластер Kubernetes, и как в любом кубер кластере, там стоит роутинг трафика — мы решили использовать модный Linkerd, которым пользуется, например, Twitter. Но с ним были постоянные проблемы: он то падал, то выжирал все ЦПУ, то вел себя неадекватно. Мы потратили уйму времени на ресерч, пытались что-то запатчить — а потом выкинули и сделали проще на Ingress и nginx.
Мы активно развиваем data engineering — там список технологий огромный. Пробуем разные хранилища данных, алгоритмы и вообще все технологии, которые есть в machine learning.
Мы постоянно находимся между желанием сделать максимально правильно и темпами роста бизнеса. У команд нет полугода на обдумывание лучших решений, ведь чтобы оставаться на месте, нужно бежать очень-очень быстро. Мы работаем в режиме: фичи-фичи-фичи — обеспечение устойчивости.
В новом году OZON планирует увеличить продажи в некоторых категориях в 10 раз, и площадь fulfillment-фабрик — в 2,5 раза, запустить новые направления и развивать недавно созданные.
В 1998 году мы были интернет-магазином книг, потом добавляли-добавляли-добавляли категории и стали онлайн-гипермаркетом. Но сегодня мы и его переросли. OZON стал e-commerce платформой, в рамках которой развиваются не только товарные категории и поддерживающая их инфраструктура логистики, но и финансовые услуги и еще около 20 новых проектов.
В 2018 году, например, мы в бета-режиме запустили маркетплейс — несмотря на то, что мы пока его тестируем, на нем уже сотни селлеров.
Следующая задача в рамках этого конкретного проекта — создать экосистему, предоставив витрину, fulfilment и логистику, инструменты аналитики и мониторинга supply chain для селлеров. В идеале, на маркетплейсе партнерам будут доступны все инструменты, которые есть у команды коммерции в OZON, и даже больше.
В общем, нашему IT-департаменту предстоит много работы. Хотя отдыхать мы тоже любим. Кстати, приходите в гости — по пятницам у нас вечеринки.
Автор: skoooorik