Преимуществами являются:
- более простые кодовые для отдельных ;
- возможность обновления и каждого сервиса в отдельности;
- возможность написания сервисов на разных для удовлетворения потребностей в высокой скорости работы и удобства (это называется «многоязычное »);
- использование различных стеков промежуточного и даже различных данных для различных сервисов (высокая гибкость работы).
Одним из преимуществ использования является то, что каждый приложения, построенный как микросервис, может быть масштабирован отдельно, чтобы соответствовать нагрузке именно на этот . В подходе, используемом для создания монолитных приложений, такая возможность отсутствует. В архитектуре монолитного приложения все компоненты и работают как единое целое, а масштабирование возможно только путем увеличения или уменьшения масштаба всего приложения. Это может привести к снижению использования для тех компонентов приложения, для которых высокая нагрузка отсутствует.
Системы позволяют легко развернуть каждый микросервис по отдельности и связать их вместе для создания полноценного приложения. Каждый микросервис может независимо: масштабироваться, распределяться, обновляться.
Еще одним преимуществом использования архитектуры микросервисов является то, что каждый компонент приложения, построенный как микросервис, может иметь независимый разработки. Это позволяет создавать более компактные компоненты приложений, которые можно быстрее модифицировать, расширять, тестировать и развертывать.
Кроме преимуществ есть еще и недостатки, которые для реализации всего потенциала преимуществ необходимо устранить. Краткое описание этих недостатков:
а) оптимизация . Работа приложения в разных приводит к увеличению объема передаваемых в связи с большим количеством вызовов между сервисами по сравнению с вызовами , передаваемыми внутри процесса. Чтобы исправить ситуацию, необходимо определить оптимальный , ожидаемое время отклика, значения и . Для этого могут использоваться такие программные компоненты, как API-шлюз (см. ), автоматические размыкатели (см. ), балансировщики нагрузки (см. ) и прокси-серверы (см. );
б) обнаружение сервисов. Обнаружение сервисов означает возможность сервисов согласованно обнаруживать друг друга. Для того чтобы сервисы могли регистрировать и объявлять себя, необходимо внедрить стандартизированный и согласованный рабочий процесс. Сервисы должны быть способны обнаруживать конечные устройства и местоположение других сервисов. Необходимо использовать , которая будет определять порядок настройки шлюзов API для информирования о сервисов и сохранения возможности обнаружения;
в) скорость работы. Выполнение одного бизнес- может подразумевать сразу нескольких вызовов сервисов. Это может увеличить задержку отклика. Кроме того, данные, которые часто используются одним микросервисом, могут принадлежать другому микросервису. Для того чтобы избежать возникновения большого объема передаваемых данных, связанных с копированием данных при вызове сервисов, необходимо наличие функций совместного использования и синхронизации данных;
г) . Отказоустойчивость — это способность системы восстанавливаться после . микросервисов необходимо предложить механизмы для или остановки распространения на другие части . Кроме того, некоторые сервисы выполняются в нескольких копиях для обеспечения высокой масштабируемости и . Ключевыми факторами для обеспечения отказоустойчивости являются количество копий, согласованность версий между копиями, механизм и расположение сети;
д) . Критически важным решением является формирование доверительных отношений между микросервисами на основе различных способов, доступных сервисам для друг с другом. Сервис может использовать синхронный или протокол при вызове другого сервиса. Все эти факторы необходимо учитывать при назначении цепочек в токенах доступа. Схемы обмена данными между сервисами должны иметь специальные и эффективные механизмы и авторизации, созданные на базе на базе . Увеличение объема данных, передаваемых между компонентами [см. перечисление а)], требует использования защищенных коммуникационных протоколов, отвечающих требованиям приложения;
е) трассировка и протоколирование. При разбиении монолитных приложений на отдельные микросервисы возникает необходимость в дополнительных и решениях для и профилирования систем. Один из таких методов называется «распределенная трассировка». Она отслеживает цепочку вызовов сервисов для поиска отдельной бизнес- или отдельного запроса. Для получения целостного представления о работе системы обычно требуется центральная система протоколирования, которая поддерживает функцию для объединения из отдельных микросервисов;
ж) развертывание. Распространение сервисных процессов требует наличия механизмов развертывания. Масштабируемость и системы являются основными вопросами, которые необходимо учитывать при развертывании микросервисов. Контейнеры являются ключевым механизмом, используемым для развертывания микросервисов, а использование (см. ) (которая назначает ресурсы и реализует топологию соединений) решает проблемы развертывания. При этом отдельные предположения и требования развертывания могут плохо сочетаться с функциональными требованиями отдельных приложений на базе микросервисов. В качестве примера можно предположить, что , в котором размещается микросервис, не имеет . При этом общие требования к системе или приложению требуют наличия микросервиса, который имеет состояние;
и) . При декомпозиции монолитного приложения необходимо решить следующие вопросы:
1) правильное разграничение различных сервисов;
2) разделение сервиса на отдельные части, если он слишком объемный.
[из 9.2 Преимущества и недостатки микросервисов ГОСТ Р 70860—2023]