
Монолит пилят на микросервисы вводят ради четырёх обещаний: производительности , отказоустойчивости , чистых границ и независимых релизов . А потом оказывается, что команда одна, база одна, язык один, а сервисов больше, чем разработчиков, — и ни одно из обещаний толком не выполняется. Это не только моё впечатление. Инженеры Google во главе с Санджаем Гемаватом, соавтором MapReduce и Bigtable , разобрали, почему микросервисы не дают того, ради чего их вводят, и пришли к выводу, что некоторые их проблемы прямо противоречат обещанным выгодам. Для проверки они сложили в один процесс настоящий интернет-магазин из 11 микросервисов и получили в 9 раз меньше ядер и в 14 раз меньшую задержку . Я повторил опыт на самом простом примере, какой смог придумать, — функции, которая складывает два числа. Через HTTP и gRPC её вызов стоит в 3,5 раза больше CPU и памяти, чем прямой, через RabbitMQ — в 6,3 раза . Бизнес-логики там ноль: это цена одного только вызова. А потом проверил на настоящем .NET-приложении — eShop, эталонном микросервисном приложении Microsoft. После перевода на модули оно занимает в 4 раза меньше памяти , вместо десяти развёртываемых единиц стало три, RabbitMQ не понадобился, а кода стало на 39% меньше. По дороге нашлись несколько дефектов исходной версии, которые возникали из-за несогласованности кода сервисов. Ниже разберём каждое из четырёх обещаний и посмотрим, что происходит на практике. Читать далее
Continue to Habr →You are being forwarded in 6s — stay on this page