18.7.23

C PHP/Python на Go: как мы помогаем разработчикам (почти) безболезненно сменить стек

C PHP/Python на Go: как мы помогаем разработчикам (почти) безболезненно сменить стек
No items found.

Сердце Lamoda — это система процессинга заказов, которая в 2011 году представляла из себя PHP-монолит почти на 100 тыс. строк кода, где была прописана основная бизнес-логика. Но в 2016 году новые запросы от бизнеса привели к тому, что развивать и поддерживать подобный монолит стало довольно сложно. Поэтому, как и многие, мы приняли решение о его распиле на микросервисы, а в качестве основного языка выбрали Go. Мы следуем идеологии сервисно-ориентированной архитектуры, и Go дает здесь больше инструментария для создания микросервисов.

Сегодня новые проекты мы запускаем на Go, но у нас ещё остаётся несколько РНР-сервисов: сервисы процессинга заказов, курьерской доставки и b2b- платформы. Может показаться, что это не очень много, но объем бизнес-логики и кода там гигантский, поэтому нам всё ещё нужны люди, которые будут их поддерживать и развивать. Так как Go-разработчиков сейчас расхватывают, как горячие пирожки, а Go-разработчиков, хорошо знающих к тому же PHP, на рынке немного, мы решили подойти к этой задаче по-другому: мы нанимаем РНР или Python-разработчиков, и сами учим их писать сервисы на Go по нашим правилам. Когда в 2017 году команда, которая отвечала за распил монолита процессинга заказов, решила переписать сервис на Go, ребята самостоятельно изучали технологии и набили много шишек. На основе материалов, которые они собрали, и появился технических онбординг для новичков.

Продолжительность технического онбординга зависит от уровня разработчика и его погруженности в Go, но в среднем это занимает две недели. Рекорд по его прохождению в нашей команде составил три дня. За время онбординга  разработчик изучает теорию Go и создаёт свой первый сервис. 

В первые два дня тебе предстоит ознакомиться с основными практиками и документацией языка, если нужно, пройти вводный курс Tour of Go и изучить  наши внутренние спецификации и требования. Затем приходит очередь практического этапа, когда примерно за неделю нужно написать свой первый сервис. Тематика сервиса может быть любой, главное условие — он должен иметь «ручки» для общения с другими сервисами и взаимодействовать с базой данных.

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

После того, как сервис готов, его нужно протестировать. Unit-тестирование по сути встроено в Go и описано в документации, поэтому с ним не должно возникнуть никаких проблем, а для функционального тестирования мы используем наш собственный инструмент Gonkey. Задача новичка во время онбординга — разобраться, как им пользоваться. Когда все баги исправлены, а код — работает, можно считать, что онбординг успешно завершён.

После завершения онбординга, новичок готов к рабочим задачам: он уже знаком с нашими подходами, практиками и инструментами, а значит, сможет создавать решения, которые будут соответствовать бизнес-требованиям. Для нас же технический онбординг — это ещё возможность  узнать новичка  получше и убедиться, что он не боится нового, умеет работать самостоятельно и готов разбираться в инструментах и технологиях.

Eщё про команду:
Go в тулинг! Какие внутренние инструменты мы пишем на Go
Go в тулинг! Какие внутренние инструменты мы пишем на Go
Команда Golang-разработчиков
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Мысли кросс-функционально. Как мы прокачали скорость и гибкость разработки
Мысли кросс-функционально. Как мы прокачали скорость и гибкость разработки
Команда Golang-разработчиков
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Главное о команде Golang-разработчиков
Главное о команде Golang-разработчиков
Команда Golang-разработчиков
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Чем живёт IT-комьюнити в Lamoda Tech
Чем живёт IT-комьюнити в Lamoda Tech
Команда Golang-разработчиков
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Почитать о других:
Главное о команде
Главное о команде
Команда архитекторов ПО
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Главное о команде
Главное о команде
Команда разработчиков мобильного приложения
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Work hard party hard: как мы сняли самолёт и улетели на корпоратив в Сочи
Work hard party hard: как мы сняли самолёт и улетели на корпоратив в Сочи
Команда Digital маркетологов
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Документация, управление релизами и разделение ответственности: как упростить разработку
Документация, управление релизами и разделение ответственности: как упростить разработку
Команда Android-разработчиков
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Как устроена наша продуктовая культура
Как устроена наша продуктовая культура
Продуктовый менеджмент
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
Главное о команде
Главное о команде
Команда редакции приложения
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.