Опыт ВсеИнструменты.ру: как тестировать микросервисы и нужны ли они вашему бизнесу

Примерно в 2018 году мы поняли, что нам нужны микросервисы. Команды разработки компании и их функционал, количество пользователей, товаров и заказов росли. Нам стало трудно рассчитывать доставку до конечного клиента. Было понятно, что решить эти проблемы на монолитах нельзя, нужно выносить их в отдельные сервисы. Вот что из этого получилось, расска…

1919

А сервисы между собой общаются по http или через rabbitmq? Или еще как-то? И все одинаково или - какие-то http, какие-то через очередь?
И как работают распределенные транзакции? В плане согласованности данных - если что-то где-то упало, откатываете обратно на каждом сервисе? Недавно узнал про CAP теорему, и теперь оно не дает мне покоя..
В последнее время столько всего про микросервисы начитался, что создается впечатление, что минусов больше, чем плюсов. Или просто опыта мало. Сейчас есть возможность разгрести весь написанный трэш. И хочется сделать чуть лучше, а не как всегда.

Ответить

Для синхронного взаимодействия используется http (в основном JSON:RPC или GraphQL), для асинхронного - Kafka. Один и тот же сервис может использовать как синхронное, так и асинхронное взаимодействие.

С транзакциями действительно всё сложнее после монолитов. Распределенных транзакций, как таковых, у нас сейчас не существует, по той причине, что в используемых сервисах нет данных, для которых это было бы критично. Распределенные транзакции - это всегда некоторый оверхед, как с точки зрения разработки, так и с точки зрения производительности.
Для поддержания консистентности данных используется механизм сверок - они выполняются на приемлемом для нас промежутке времени, сверяя данные между системами и синхронизируя их по необходимости.
Такой механизм проще в реализации, хотя имеет свои недостатки. Если появится задача с данными, критичными к атомарному изменению в разных системах, то да, будет необходимо применить распределенные транзакции в каком-то виде. Относительно CAP теоремы получается, что сейчас мы приносим в жертву консистентность, по сути имея AP-систему.

1
Ответить