Как стать автором
Обновить

Как НЕ надо распиливать монолит

Время на прочтение3 мин
Количество просмотров6.7K

Всем привет, на связи Юджин, (теперь уже) беспризорный backend-разработчик на Go. Сегодня я расскажу вам забавную и больную историю о том, как мы монолит распиливали. Кто-то, может, посмеётся, а может, найдёт в этом себя. Никого ничему не учу, потому что сам ничего не умею.

Предыстория

Настоящие имена и названия называть не буду, поэтому пройдёмся по условным обозначениям:

  • Антон: наш технический директор, кофаундер стартапа

  • Максим: наш тимлид

  • Кирилл: главный менеджер, кофаундер

  • Алексей: бэкендер

  • Борис: инвестор

Также хочу отметить, что я в крипте вообще не разбираюсь, так что не ожидайте от меня умных слов и комментариев по этому поводу, но, по словам Антона, проблем там тоже было немало.

Началось всё с того, тот самый хороший друг фуллстек-разработчик пригласил меня в околокриптостартап. Сам он туда попал с фриланса, когда выполнил несколько их заказов.
На момент моего попадания в стартап (примерно 1-2 месяца после его зарождения) был написан монолитный бэкенд (Node.js + Fastify) и что-то похожее на фронтенд (React) - всё это написано за 1-2 месяца одним человеком в спешке. Всё работало прекрасно до момента, когда около нас начал образовываться второй проект, который писали другие разработчики на аутсорсе. Не хватало фич, которые в монолит запихнуть было очень тяжело. На тот момент команда увеличилась - и вот нас уже 3 программиста и 3 фронтендера. Каждый работал над своими частями проекта, никто никому не мешал, всем мешал только написанный в спешке бэкенд.

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

Первые проблемы

Первые проблемы начались в момент, когда мы начали строить архитектуру. Каждый гнул свою линию и не очень хотел идти на компромисс.

Максим хотел разбить достаточно простую логику на кучу-кучу микросервисов, где каждый сервис выполнял одну мизерную задачу. Я хотел разбить логику на чуть более большие куски, чтобы каждому досталось не больше двух-трёх сервисов, дабы не сойти с ума. Алексей для внутреннего общения сервисов хотел использовать gRPC, Я и Максим - RestAPI.

Наш техдир принял решение сбросить всю ответственность с себя тактически отступить и сказал: «делайте как хотите, я ни хрена не понимаю».

«Уютный стартап» — говорили они.

В итоге, каким-то образом, мы выбрали использовать RestAPI, но чтоб он выглядел как gRPC, и большие микросервисы. Принялись писать.

Писали сервисы по мере важности, постепенно заменяя логику в монолите на запросы к сервисам, всё по красоте, всё круто.

Основной проблемой в это время было убедить менеджерство в том, что переписать бэкенд на микросервисы это нам надо и без этого уже никуда. С большой неохотой, они согласились дать нам время на это, но при условии, что багфиксы и доработки уже существующего кода будут в приоритете.

Не буду долго расписывать весь процесс распила, но нам пришлось пару раз изменить архитектуру, где-то распилить ещё сильнее, где-то - объединить пару сервисов в один. Всё как обычно.

Последние проблемы

Где-то на середине Кирилл с Борисом подмышкой решили сделать пивот в обратную сторону и отменить половину идей, которые мы уже реализовали в старом бэкенде и начали реализовывать в новом. Снова пришлось переобдумывать архитектуру.

В итоге, сервисов стало так мало, что половина разработчиков нам уже не нужна была - их перевели в другой проект, оставив здесь только одного фронта, одного бекендера и одного девопса, которого делили между собой сразу три проекта. Менеджерство в итоге решило, что и микросервисы уже не нужны, раз половину функционала вырезали. Ну а что, проект деньги приносит - зачем что-то новое добавлять?

В итоге стартап так и остался с мизерной прибылью плавать где-то на просторах интернета, а мы просто сидим и смотрим на всё это.

Вывод

Не говорю, что в стартапах работать не надо, но перед переходом в стартап, какими бы там не были зарплаты (к слову, платили в полтора раза больше, чем на прошлом месте работы) и условия - обращайте внимание на сам проект, на его перспективы и на фаундеров - умеют ли они вести бизнес и принимать осмысленные решения.

Всем спасибо за внимание, всем нормальных менеджеров и удачи в распиливании микросервисов.

Теги:
Хабы:
Всего голосов 9: ↑1 и ↓8-7
Комментарии38

Публикации

Ближайшие события