Все компоненты монолитного приложения обычно проектируются, развертываются и масштабируются как единое целое. Развертывание такого приложения часто безболезненно. Когда вы реализуете микрослужбы, у вас может быть много взаимосвязанных служб, созданных на разных языках и платформах, что усложняет развертывание.
Что такое шаблоны развертывания микросервисов?
Существует несколько шаблонов для развертывания микросервисов. К ним относятся следующие:
Шаблон «Несколько экземпляров службы на хост» включает подготовку одного или нескольких физических или виртуальных хостов. Затем каждый из хостов выполняет несколько служб. В этом образце есть два варианта. Каждый экземпляр службы представляет собой процесс в одном из этих вариантов. В другом варианте этого шаблона одновременно может работать несколько экземпляров службы.
Одной из наиболее полезных особенностей этого шаблона является его эффективность с точки зрения ресурсов, а также простота развертывания. Преимущество этого шаблона в том, что он имеет низкие накладные расходы, что позволяет быстро запустить службу.
У этого шаблона есть главный недостаток, заключающийся в том, что он требует, чтобы экземпляр службы выполнялся изолированно как отдельный процесс. Потребление ресурсов каждым экземпляром службы становится трудно определить и отслеживать, когда несколько процессов развернуты в одном процессе.
Шаблон «Экземпляр службы на узел» — это стратегия развертывания, при которой только один экземпляр микрослужбы может выполняться на определенном узле в определенное время. Обратите внимание, что хост может быть виртуальной машиной или контейнером, на котором одновременно запущен только один экземпляр службы.
Существует несколько вариантов этого шаблона развертывания:
Как следует из названия, этот шаблон используется для упаковки каждой микрослужбы в виде образа виртуальной машины. Поэтому каждый экземпляр службы работает как отдельная виртуальная машина. Разработчики могут использовать этот шаблон для простого масштабирования своего сервиса — им нужно только увеличить количество экземпляров сервиса.
Этот шаблон развертывания позволяет масштабировать экземпляры службы независимо от других служб. Это позволяет каждой службе иметь свои собственные ресурсы, выделенные для нее, и позволяет программистам увеличивать или уменьшать масштаб по мере необходимости в зависимости от шаблонов использования вашего приложения.
Несколько служб можно развернуть на одной виртуальной машине, предоставив им разные порты, на которых они прослушивают запросы и отвечают данными.
Изоляция каждого экземпляра службы является одним из наиболее значительных преимуществ. Кроме того, вы можете использовать функции облачной инфраструктуры, включая балансировку нагрузки и автоматическое масштабирование. Детали реализации (т. е. технические тонкости реализации службы) инкапсулированы.
Наиболее существенным недостатком этого шаблона является то, что он потребляет много ресурсов и требует довольно много времени для создания и управления виртуальными машинами.
Шаблон Service Instances per Container предлагает многие преимущества виртуальных машин, будучи более легкой и эффективной альтернативой. Экземпляры микрослужбы в этом шаблоне запускаются в своих собственных контейнерах.
Этот шаблон идеально подходит для микросервисов, которым не требуется много памяти или ресурсов ЦП. Он использует среду выполнения контейнера Docker и поддерживает развертывание нескольких экземпляров каждой микрослужбы в одном контейнере. Это позволяет использовать ресурсы более эффективно и позволяет увеличивать и уменьшать масштаб по мере необходимости, сокращая ненужные расходы на неиспользуемые ресурсы.
Это самый простой и понятный способ развертывания микросервисов в контейнерах. Это простой подход к запуску одного экземпляра всей микрослужбы в каждом контейнере. Это означает, что каждый контейнер имеет свою базу данных и работает в своем процессе.
Контейнеры способствуют быстрому запуску и масштабированию приложений и требуют гораздо меньше ресурсов по сравнению с виртуальными машинами.
Шаблон «Экземпляр службы на каждый контейнер» обеспечивает поддержку упрощенной масштабируемости и развертывания, а также изолирует экземпляры службы. Образ контейнера можно создать быстро, и вы также можете легко управлять контейнерами.
Однако есть некоторые недостатки, связанные с этим подходом:
Программисты должны вручную обновлять свои контейнеры, когда становятся доступными новые версии, чтобы воспользоваться любыми исправлениями ошибок или новыми функциями определяется этой версией. Если вы запускаете несколько экземпляров каждой микрослужбы в одном контейнере, их одновременное обновление займет много времени и может привести к ошибкам.
Развертывание обновлений иногда может быть проблематичным, если они применяются во время работы приложения из-за потенциальных неблагоприятных последствий для пользователей, таких как время простоя или потеря данных.
Несмотря на то, что технологии контейнеров быстро развиваются, они все еще не так развиты, как виртуальные машины. Контейнеры также не так безопасны, как виртуальные машины — они используют ядро ОС.
Один из самых популярных способов развертывания микросервисов — бессерверная среда, где вам не нужно беспокоиться о том, сколько серверов используется или сколько ресурсов они потребляют. Это позволяет разработчикам сосредоточиться на написании кода, вместо того чтобы беспокоиться о том, на скольких серверах вам нужно запустить приложение.
Бессерверная архитектура — это архитектура, в которой поставщик облачных услуг берет на себя ответственность за серверную инфраструктуру, поэтому разработчикам не нужно беспокоиться об управлении ею самостоятельно. Бессерверные среды значительно упрощают развертывание микросервисов, поскольку они позволяют вам сосредоточиться на создании функциональности вашего приложения, а не беспокоиться о базовой инфраструктуре.
Бессерверные архитектуры имеют ряд преимуществ, включая улучшенную масштабируемость и гибкость, снижение цен и повышение производительности труда разработчиков.
Термин «бессерверный» подразумевает отсутствие серверов, поэтому вам не нужно управлять каким-либо сервером — вы платите только за то, что используете, поэтому, если ваше приложение не используется или не получает трафик, это не повлияет на ваш счет. . Преимущество этой модели заключается в том, что она позволяет разработчикам сосредоточиться на создании своих приложений и не беспокоиться о том, как они будут масштабироваться в будущем или о том, сколько каждый сервер будет стоить им каждый месяц.
Бессерверные вычисления позволяют развертывать микросервисы несколькими способами: они снижают затраты за счет сокращения накладных расходов на управление инфраструктурой; это снижает риск, позволяя командам двигаться быстрее, потому что им не нужно беспокоиться о масштабировании своих систем перед запуском новых функций; и это повышает гибкость, позволяя командам больше сосредоточиться непосредственно на создании продуктов, а не беспокоиться о том, как эти продукты будут масштабироваться после того, как они будут запущены.
Также проще, чем когда-либо прежде, развертывать микросервисы, потому что они не требуют никаких серверов.
Архитектура микросервисов — это способ разбить приложение на более мелкие и более управляемые части. Затем эти части можно развернуть на разных серверах, что упрощает масштабирование системы и повышает производительность по мере необходимости.
Развертывание приложений на основе микросервисов является сложной задачей по многим причинам. Однако существует несколько стратегий развертывания приложений на основе микрослужб. Прежде чем выбрать правильную стратегию развертывания для вашего приложения, вы должны знать о бизнес-целях и задачах.
микросервисы