Комментарии 23
Полностью согласен, ротация обязательно должна быть — при этом в целом нет никакой разницы, какой архитектурой вы пользуетесь. Если вкратце:
1) Увеличивается bus factor;
2) Разные команды тащат свои лучшие практики;
3) Часто каждый следующий участник, который не понимает, как работает написанный до него код, разбирается и делает его проще;
4) Добавляется документация, становятся проще тесты, деплой и запуск;
5) Все разработчики получают знания о каких-то инструментах, которые применяют другие команды.
Главное — принять, что не существует какого-то сакрального знания, из-за которого над конкретным проектом должен работать только конкретный человек.
При этом, правда, у нас остаётся понятие code owners — это те ребята, которые готовы подхватить сервис в случае срочных проблем, и следят, чтобы другая команда не сделала код хуже.
Как поддерживаете консистентность данных если бизнес-операция охватывает несколько микросервисов?
Есть один микросервис, который отвечает за хранение состояний, а также обеспечивает гарантии — атомарность, тотал ордеринг, изоляцию.
Спасибо за ответ. Может быть подумаете о статье на эту тему? Было бы интересно почитать.
Есть один микросервис, который отвечает за хранение состояний
Разве это не противоречит высказыванию
отсутствие единой точки отказа
Простейший случай — платеж на фронте (да, он должен где-то сохраниться на фронте), и дальше тот же платеж в бэке (тут вся жесть связанная с бухгалтерией).
И начинаем потихоньку накидывать — различные посредники/агрегаторы платежей, различные каналы (кто-то всегда ходит в фронт/бэк, кто-то хочет получать пуши), различные сопутствующие артефакты с которыми тоже нужна консистентность (sms, взаиморасчеты, активация услуг и т.д.)
В итоге получаем с десяток мест, где хранится состояние.
Я вот не один год на проекте и чувствую, что это даёт ощутимое преимущество. Когда проблема на лайве, обычно сразу понимаю, в какой файл смотреть и что может быть причиной. Если кто-то поменял код в одном месте, я пишу в ревью, что нужно поменять во втором и третьем, чтобы система работала одинаково (или просто чтобы ничего не сломалось).
Мы поспешили лишь однажды, когда наложился джекпот — суперзаказчик и крайне срочные дедлайны, как раз создавали наш Wallet. Тогда да, мы чууууток спустили рукава и сделали все быстрее, чем планировали (и хуже, чем хотели, да). В идеале все задумывалось как кучка аккуратных микросервисов. Получился такой себе кусочек монолита. Плюсы ситуации в том, что мы еще разок для себя поняли, что спешить не надо. А сам сервис уже потихоньку растаскиваем на отдельные микросервисы, как и хотели.
Помоему очень прагматичный и гибкий (Аджайл ;) ) понимание у вашей организации.
Вы ответили на запрос клиета когда это пришлось, взяв технический долг, но у вас есть вобзможность или свобода оплатить его!
По мне так, если нет ротации, то должны работать очень толковые люди. За свою карьеру встречал таких мало-мало. Поэтому полностью поддерживаю идею ротации.
Как мы пишем микросервисы и почему не делаем этого быстро