Концепция микросервис отлично подходит структуру безвесочная функция , который легко включает развертывание и изоляцию времени выполнения для разных услуг. На стороне хранения, такие услуги, как Dynamodb Также упростить иметь независимые базы данных для каждого микросистемы и масштабировать их независимо (при необходимости или желательно).
Прежде чем мы погрузиться в подробности, пожалуйста, рассмотрите, распространяются ли преимущества микросервисов, которые обильно перевешивают свои недостатки для Ваш конкретный проект и команда. Пожалуйста , пожалуйста Не выбирайте это, потому что » Это тенденция «. Чаще всего вы думаете, Монолит лучше И может быть « величественный » выбор.
Преимущества микросервисов в неверном
Выборочная масштабируемость и уровни параллелизма
Функции без сервеса позволяют легко управлять параллелизмом и масштабируемостью. В архитектуре микросервисов мы получаем максимальное преимущество этого. Каждый (Micro) служба может иметь свои собственные параметры параллелизма/масштабируемости в соответствии с его потребностями.
Это ценно из разных перспектив: возможности для смягчения атак DDOS, снижая финансовые риски облачных счетов, счетов из-за контроля, лучшее распределение ресурсов … и так далее.
Мелкозернистый распределение ресурсов
С помощью селективной масштабируемости и параллелизма приходится преимущества детального контроля над приоритетами распределения ресурсов.
В Лямбда функции Каждая (Micro) служба может иметь разные уровни распределения памяти, в соответствии с его потребностями и целями. Услуги на клиентах могут иметь более высокую память, выделенную, поскольку она будет способствовать более быстрому времени выполнения. Внутренние услуги, которые не чувствительны к задержелю, могут быть развернуты с Оптимизированные настройки памяти Отказ
То же самое относится и к механизма хранения. Таблица Dynamodb или база отсутствующей без сервезна Aurora может иметь разные уровни Распределение единиц емкости в соответствии с потребностями конкретного (микро) службы, которую они должны служить.
Слабая связь
Это свойство микросервисов в целом, не столько без сервезна, так как это облегчает Компоненты развязки системы, которая имеет разные цели.
Многофункциональные среды
Способность конфигурации, развертывания и выполнения функций без сервеса открывает возможности для систем, основанных на нескольких рабочих случаях.
В то время как Node.js (JavaScript Runtime) — одна из самых популярных технологий для веб-приложений Backend, вряд ли будет лучшим инструментом для каждой задачи.
Для данных, интенсивных задач, прогнозируемой аналитики и любого машинного обучения, вероятно, что Python будет вашим языком программирования выбора. Выделенные платформы — то есть Sagemaker — лучше подходят для очень крупных проектов, но вы все еще можете запускать некоторые из самых популярных данных и проектов AI — Scikit Учитесь , Spacy , Numpy & Pandas — в функции без сервеса.
С помощью неверной инфраструктуры нет дополнительных усилий (операций-мудрых), чтобы выбрать Node.js для вашего обычного Backend API и Python для ваших нагрузочных нагрузок. Очевидно, что это добавит некоторые усилия с точки зрения обслуживания кода, и тип навыков вашей команды должен управлять.
Независимость для групп развития
Также более связано с микросервисами, чем сами без сервеса. Разные разработчики или команды могут работать, исправить ошибки, расширять функции и т. Д. (Micro), не находящиеся на пальцы друг друга.
Инструменты, такие как AWS SAM , Смертная рамка Также дайте больше независимости на стороне операций. AWS CDK Constructs Включите еще большую независимость, не жертвуя качеством и эксплуатационными стандартами более высокого уровня.
Недостатки микросервисов в неверном
Труднее мониторировать и отлаживать
Среди многих ВЫЗОВЫ Введено безвесочным, мониторингом и отладкой — это то, что может быть проблематично. Микроверидики вводят дополнительные проблемы, поскольку системы вычисления и хранения разбросаны во многих различных функциях и базах данных, не говоря уже о других службах для очереди, кэширования и т. Д.
Есть Профессиональные платформы решить все эти проблемы, хотя. Профессиональные команды, безусловно, должны подумать о том, стоит ли инвестировать в инвестицию.
Инструменты мониторинга и наблюдаемости, такие как Dashbird Дайте вам быстрое и простое понимание того, что происходит в вашем приложении, и отправит вам немедленное предупреждение через Slass, Email или через веб-каучуки или Sns на вашу настроенную конечную точку, когда что-то разрывается или вот-то сломается, чтобы вы могли прыгать и исправить его до того, как он начнет влиять на свою системную производительность и, таким образом, ваши конечные клиенты.
Например, мы могли бы установить dashbird для повышения инцидента, когда потребление памяти выше 90%, в среднем составляет более 90%, в течение 15 минут.
Dashbird также даст вам Хорошо арформирован Insights, основанные на ваших инфраструктурных данных, позволяющие улучшить архитектуру, что делает его более надежным, экономичным, менее вероятным сломом и способным принимать дополнительную сложность во времени.
Dashbird AWS Insights
Возможно, чтобы испытать более холодные запуска
Холодно начинается произойдет, когда платформа FAAS (E.G. Lambda) должна раскрутить новую виртуальную машину для запуска вашего функционального кода. Они могут быть проблематичными, если рабочая нагрузка вашей функции чувствительна к задержке с A холодный старт добавляет Из нескольких сотен миллисекунд до нескольких секунд в общем времени запуска.
После одного запроса, если заканчивается, платформы FAAS обычно сохраняют Microvms Windle для некоторого времени, ожидая следующего, прежде чем закрыться через 10-60 минут (да, много варьируется). Результатом является: чаще ваша функция выполняется, тем более вероятно, что для MicroVM будет работать и запустить для входящих запросов (избегание холодных начинаний).
Когда мы разбрасываем наше приложение в сотнях или тысячах (микро) услуг, мы Май Также распространились вызовы во времени на службу, что приводит к более низкой частоте вызова на функцию. Обратите внимание на « могут распространять вызовы ». В зависимости от бизнес-логики и как ваша система ведет себя, это негативное воздействие вполне может быть небольшим или незначительным.
Другие недостатки
Есть и другие недостатки, присущие самой концепции микросервисов. Это не связано с серверуми. Тем не менее, каждая команда, принимающая этот тип архитектуры, должна быть осторожна, чтобы смягчить их потенциальные риски и затраты:
- Не тривиально определиться с границами обслуживания, которые могут привести к архитектурным вопросам
- Более обширные поверхности атаки обезопасить
- Услуги оркестровки накладные расходы
- Синхронизация вычисления и хранения (при необходимости) не легко сделать в исполнителе и масштабируемого способа
Проблемы микровидсов и лучшие практики в неверном
Насколько маленький или большой микросервис должен быть
Это относительно легко запутать концепцию « Функция -A-A-Service» с A Функциональное утверждение (или, в целом, а подпрограмма ) в вашем языке программирования выбора.
Мы входим в область без способа нарисовать идеальную линию, но Анекдотальный опыт Показывает, что для очень маленьких функций без сервеса — не хорошая идея.
Одна вещь, которую вы должны иметь в виду, это то, что при выборе выяснения (микро) службы в отдельной функции вам придется иметь дело с Trilemma без сердца . По возможности, существует много преимуществ в сохранении коррелированной логики в одной функции.
Процесс принятия решений должен учитывать преимущества отдельного микросервиса. » Если я выясню это микросервис …
- … Позвольте ли он другим командам работать самостоятельно?
- … Могу ли я воспользоваться мелкозернистыми распределением ресурсов или селективных возможностей масштабируемости?
Если нет, стоит учитывать, чтобы эта услуга была в комплекте с другим, которые требуют аналогичных ресурсов, контекстуально связаны и выполняет коррелированные рабочие нагрузки.
Свободно связывая вашу архитектуру
Есть много способов организовывать микросервисы Orchestrate by Составление функций без сервеса Отказ
Когда требуется синхронный коммуникация, хорошие ol ‘прямые вызовы (то есть aws lambda RequestRepsonse Метод вызова ), но это приводит к очень связанной архитектуре. Лучшие альтернативы используют Лямбда слои или HTTP API , что позволяет позже модифицировать или мигрировать услуги, не нарушая клиентов.
Для рабочих нагрузок, которые принимают асинхронную модель связи, у нас есть несколько возможностей, таких как очереди ( SQS ), Уведомления о теме ( SNS ), Мост событий или даже Dynamodb Streams Отказ
Выделение деталей реализации через компоненты
В идеале микросервис не должен утерить детали реализации своим потребителям. Платформа без сердца, такая как лямбда, уже предоставит API для изоляции функций. Но сам по себе представляет собой реализацию деталей утечки и в идеале, мы бы добавили слой Agnostic HTTP API на наших функциях, чтобы сделать их по-настоящему изолированным.
Эта стратегия также имеет свои недостатки, и есть несколько факторов, которые вы должны рассмотреть вопрос о принятии решения.
Важность использования пределов параллелизма и потребляемой политики
Чтобы уменьшить атаки DDOS, убедитесь, что установите индивидуальные пределы параллелизма и потребляемая политика для каждой конечной точки для каждой общедоступной главной точки при использовании таких услуг, как Gateway AWS API. Такие услуги имеют глобальные квоты в параллелизме для целого региона на облачной платформе. Если у вас нет пределов, основанных на конечных точках, злоумышленник должен только нацелить одну одну конечную точку, чтобы исчерпать вашу квоту и принести всю вашу систему в этом регионе.
Упаковка
Неважно, если вы переносили устаревшие системы или построить что-то с нуля, убедившись, что он бежит плавно, как ожидается, является постоянной проблемой. Dashbird оснащен мониторинговой платформой и хорошо архитектурный механизм Insights, специально разработанный для приложений без прослушивания, которые реализуют распределенные и микросервисные архитектуры.
В случае, если вы (собираетесь) запустите бессвесовые микросервисы в производстве, мы рекомендуем вам Дайте это попробовать бесплатно в течение 2 недель . Сервис реализует Подход асинхронного мониторинга простые 2 минуты Интеграционный процесс Это не требует никаких изменений кода (ни кредитной карты).
Оригинал: «https://dev.to/dashbird/microservices-and-serverless-winning-strategies-and-challenges-1he1»