Зачем Ozon более 200 новых Go-разработчиков
Онлайн-ритейлер с 20-летней историей набирает экспертов для трансформации в технологическую компанию.
Ozon работает на рынке онлайн-ритейла 20 лет и весьма преуспел в клиентском сервисе и создании физической инфраструктуры для быстрой доставки — 40% заказов доставляются в течение суток. Но всё это время компания не ставила на первое место технологии: ИТ-отдел по размеру был сравним с колл-центром и в основном занимался поддержкой сайта.
В 2018 году акционеры — в том числе МТС и фонд Baring Vostok — инвестировали в Ozon несколько миллиардов рублей, чтобы силами новой команды топ-менеджеров сделать из старейшего российского онлайн-ритейлера технологическую компанию с перспективой выхода на зарубежные рынки. Ozon развивает 23 новых проекта, которые не могут быть успешными без сильной технологической базы.
Компания создала «лабораторию инноваций», где работают более 400 человек, и массово нанимает разработчиков, которые займутся реализацией планов.
От монолита к микросервисам
До недавнего времени Ozon был монолитной платформой — было сложно поменять небольшую часть системы без вреда другим компонентам. Иными словами, чтобы покрасить небольшую часть куба, нужно было красить всю грань.
Обновления платформы были похожи на банковские: длились неделю и происходили раз в полгода. Поэтому сейчас Ozon переходит на микросервисную архитектуру.
Её основная ценность — возможность производить мелкие независимые изменения и управлять частями системы, не подвергая риску другие. Это позволяет экспериментировать. Например, можно опробовать 25 версий нового сервиса, который будет рассчитывать цену товара. Или 25 вариантов акций, которые формируются, исходя из предпочтений пользователя.
Для разработки микросервисной архитектуры и решений на её основе, Ozon нужны новые специалисты.
Над какими направлениями нужно будет работать
Маркетплейс. Ozon перестанет быть просто интернет-магазином с большим ассортиментом. В планах компании открыть доступ к своей платформе для продавцов разного масштаба: от крупных ритейлеров до маленьких компаний с ручным производством.
Магазин в магазине. Это направление продолжает предыдущее. Продавцы смогут открывать свои магазины на платформе Ozon и использовать логистическую систему компании.
Роботизация. Включает в себя разработку решений для «умного» дома, чтобы клиенты могли получать товары без личного присутствия, и автоматизацию складов.
Кроме того, Ozon работает над сервисами для доставки готовой еды, торговли фармацевтическими и скоропортящимися товарами, а также товарами повседневного спроса.
Всего компания готовит к запуску 23 проекта. Из-за этого увеличится нагрузка на склады, логистику, менеджмент и, как следствие, на ИТ-отдел.
Почему именно Go
Язык программирования Go — это разумный компромисс между скоростью разработки и сложностью изучения, размером сообщества разработчиков, зрелостью языка и его производительностью.
В своей архитектуре Ozon использует Kubernetes и другие инструменты от Google, которые написаны в том числе на Go. Это позволяет не разрабатывать свои решения, а дорабатывать готовые. Кроме того, в инструментах для высоконагруженных систем есть адаптеры для Go.
Ещё одна важная причина — создание экосистемы на основе одного языка. Например, все продукты Alibaba построены на Java. Огромный ритейлер создаёт кастомные версии всех необходимых продуктов — вот, к чему стремится Ozon.
С другими языками всё не так просто. Популярный и давно закрепившийся на рынке PHP прост в изучении, но у него небольшие проблемы с производительностью. Кроме того, из-за простоты языка в PHP-сообществе много специалистов с небольшим опытом.
Другая крайность — С. При всей его сложности, с ним можно быстро разрабатывать сверхпроизводительные решения, однако способные на это разработчики обойдутся компании слишком дорого.
Идеальный кандидат
Описанные ниже пункты — это пожелания, а не обязательные требования. Если человек не соответствует некоторым критериям, это не значит, что с ним не будут разговаривать.
- Опыт коммерческой разработки на Go.
- Опыт работы над цифровым продуктом в крупной компании. Большим плюсом будет опыт работы в электронной коммерции.
Самостоятельность. Разработчик должен понимать, что он делает продукт для клиентов. Важно умение вести задачу от первой строчки кода и до анализа результатов работы кода в продакшене. Работать без необходимости постоянного микроменеджмента со стороны руководителя, трезво оценивать сроки, расставлять приоритеты и вовремя сигнализировать о проблемах.
Умение работать с базами данных. Неважно какими, главное — понимать основные принципы их устройства.
Опыт работы с Linux. Серверы Ozon основаны на этом семействе операционных систем, поэтому сотрудник должен уметь работать с терминалом ОС.
Опыт работы в команде. Нужно понимать, что в проекте есть другие люди, с которыми предстоит общаться; система контроля версий, тикеты с распределением задач, код-ревью. Придётся взаимодействовать с коллегами из самых разных отделов, будь то разработка, тестирование или продуктовые менеджеры. Петь корпоративные гимны не придётся.
Что предлагает Ozon
Помощь при релокации. Сотруднику, который переезжает в Москву из другого города, выплачивают один дополнительный оклад.
Рабочее место в «Москва-Сити». Несколько десятков переговорных, MacBook или Dell, мониторы, частично компенсируемая парковка.
Гибкий график. Можно прийти в офис позже или не прийти совсем. Главное, предупредить руководителя, не пропускать работу систематически и выдавать результат.
Питание. Кухни с едой для перекусов есть на каждом этаже. Для тех, кто задержался в офисе, есть ужины с 20:00.
Страхование. Через две недели после трудоустройства на сотрудника оформляют полис ДМС, который включает стоматологию, страховку для выезда за рубеж, стационар и страховку от несчастных случаев.
Обучение. Оплачиваемые занятия английским в офисе и корпоративные тарифы в SkyEng. Можно отправиться на профессиональное мероприятие и поучаствовать в семинарах и тренингах, которые проходят в офисе.
Отдых. В офисе есть вечерние занятия йогой, беговой клуб, теннисные столы. Сотрудники могут оформить корпоративную программу в фитнес клубы World Class, X-Fit и «5 элемент». В актовом зале проходят корпоративные мероприятия Crazy Fridays, митапы и лекции.
Партнёрские программы. Скидка на каршеринг BelkaCar, Mybook, Shelly, бонусы от «Райффайзенбанка» и «Сбербанка».
Конкурентная зарплата — выше рыночной.
Нашим пионерам тоже хочется все переписать на новую технологию, а потом разбежаться. А ведь могли бы взять Python и на нем быстрее писать микросервисы которые так же быстро работают как и на Go.
Статическая типизация не нужна же, ага ага
И "так же быстро работают", да да
(мне Go не нравится, если что)
В питоне уже есть статическая типизация если надо. Да, скорость разработки быстрее и если запускать по воркеру на одно ядро то такой же быстрый как и Go.
Вы кажется не очень хорошо знаете питон. Смотрите по воркеру на ядро в питоне можно запускать тредами или процессами. С тредами вас ждет global interpreter lock и плохая параллелизация. С fork вас ждет тупое копирование всей памяти кратно количеству форков, тк в каждом объекте счетчик ссылок, который делает страничку dirty. Поищите все эти термины, это поможет вам продвинуться до уровня миддла в питоне.
И да в питоне нету статической типизации, типы не проверяются во время компиляции.
Вам много чего может казаться, но вы на своей позиции видимо слишком давно подписываете бумажки и поэтому не в курсе дел об элементарных вещах. Своими знанием о питоне вы лучше не выпендривайтесь, а то ваши джуны у вас за спиной наверное уже ржут. Типизацию использует и Дропбокс и Фейсбук, а я предложил запускать отдельные управляемые асинхронные воркеры. Это такие программки, типа экселя который вы используете, но они не шарят ни память, ни состояния.
Вы можете зайти ко мне в github/anatolix и посмотреть там deep learning проект на python, которому меньше года, в котором мне понадобилось переписать 2000 строк c++ на 200 строк на python и получилось примерно в 5-10 раз быстрее по скорости выполнения в результате чем c++. И там есть многопоточность. Ваш код на python можете показать если есть что.
Ваш комментарий показывает, что по существу вам ответить нечего, вы слышали что-то про type hints, но сами их не использовали, а только знаете что их используют где-то в facebook. Для информации type hints проверяются в динамике, а не в статике как в строго типизированных языках, те это скорей не тип а встроенный unit test/assert на соответствие типу.