Учебники

11) SOA против микросервисов

Что такое SOA?

SOA — это архитектурный паттерн в разработке программного обеспечения. В этом типе приложения компоненты предоставляют услуги другим компонентам по протоколу связи, обычно по сети. Принципы сервис-ориентации не зависят от какого-либо продукта, поставщика или технологии. Полная форма SOA — сервис-ориентированная архитектура

SOA упрощает взаимодействие компонентов программного обеспечения в различных сетях. Веб-службы, созданные в соответствии с архитектурой SOA, обычно делают веб-службы более независимыми.

В этом уроке вы узнаете:

Что такое микросервис?

Микросервисы — это шаблон сервис-ориентированной архитектуры, в котором приложения создаются как совокупность различных наименьших независимых сервисных единиц. Это программный подход, который фокусируется на разложении приложения на однофункциональные модули с четко определенными интерфейсами.

Эти модули могут быть независимо развернуты и эксплуатироваться небольшими группами, владеющими всем жизненным циклом службы.

Термин «микро» относится к размеру микросервиса, которым должна управлять одна команда разработчиков (от 5 до 10 разработчиков). В этой методологии большие приложения делятся на самые маленькие независимые единицы.

Что такое архитектура SOA?

Сервис-ориентированная архитектура — это стиль проектирования программного обеспечения. Архитектура делится на две части

  1. функциональные аспекты и
  2. аспекты качества обслуживания.

Давайте посмотрим на них обоих в деталях:

Архитектура SOA

Функциональные аспекты:

Функциональный аспект содержит:

Транспорт . Этот компонент передает запросы на обслуживание от потребителя услуг поставщику услуг, а ответы от них на потребителя услуг.

Протокол связи между сервисами: он позволяет поставщику услуг и потребителю общаться друг с другом.

Описание сервиса : объясняет сервис и данные, необходимые для его вызова.

Сервис : это актуальный сервис.

Бизнес-процесс. Этот компонент представляет собой группу сервисов, вызываемых в определенной заранее определенной последовательности, связанной с определенными правилами для удовлетворения бизнес-требований.

Реестр услуг : этот реестр содержит описание данных, которые используются поставщиками услуг для публикации своих услуг.

Аспекты качества обслуживания:

Качество обслуживания содержит:

  • Политика: это набор протоколов, в соответствии с которыми поставщики услуг создают и предоставляют услуги потребителям.
  • Безопасность: представляет собой набор протоколов, необходимых для процесса идентификации и авторизации.
  • Сделка: обеспечивает уверенность в последовательных результатах.
  • Управление: этот компонент SOA помогает вам определить набор атрибутов, которые используются для управления сервисами.

Что такое микросервисная архитектура?

Это архитектурный стиль разработки, который позволяет создавать приложения в виде набора небольших автономных сервисов, разработанных для бизнес-сферы.

Это архитектурный стиль разработки, который позволяет создавать приложения в виде набора небольших автономных сервисов, разработанных для бизнес-сферы.

Давайте рассмотрим пример приложения электронной коммерции, разработанного с использованием микросервисной архитектуры. В этом примере каждый микросервис ориентирован на отдельные возможности бизнеса. Поиск, оценка, обзор и оплата имеют свой экземпляр (сервер) и общаются друг с другом.

Пример архитектуры микросервисов

В этой монолитной архитектуре все компоненты объединяются в единый модуль. Но в архитектуре микросервисов они разбиты на отдельные модули (микросервисы), которые взаимодействуют друг с другом.

Связь между микросервисами — это связь без сохранения состояния, в которой каждая пара запроса и ответа независима. Следовательно, микросервисы могут общаться без особых усилий. В микросервисной архитектуре данные объединяются. Каждый микросервис имеет отдельное хранилище данных.

Особенности SOA

Здесь важны особенности SOA

  • SOA использует интерфейсы, которые решают сложные проблемы интеграции в больших системах.
  • SOA взаимодействует с клиентами, поставщиками и поставщиками с использованием схемы XML.
  • SOA использует мониторинг сообщений для улучшения измерения производительности и обнаружения атак безопасности.
  • При повторном использовании службы стоимость разработки и управления программным обеспечением несколько ниже.

Особенности Микро-сервисов

Вот основные функции микросервисов:

  • В Microservices модули слабо связаны
  • Управление проектом, также может быть модульным.
  • Стоимость масштабируемости скудна
  • Очень легко использовать несколько технологий в качестве нескольких функций в приложении.
  • Это идеальный сервис для эволюционных систем, где вы не можете предвидеть типы устройств, которые могут однажды получить доступ к вашему приложению.

Микросервисы против SOA: в чем разница?

Вот различия между SOA и микросервисами:

SOA Microservices
Модель SOA имеет один слой хранения данных, который используется всеми службами в этом приложении. Приложения Microservices в основном выделяют базу данных или другой тип хранилища для служб, которые в этом нуждаются.
Связь между различными сервисами в приложении SOA использует простые и понятные подходы. Микросервисы используют сложные API.
Ориентирован на максимальное использование приложений. Больше сосредоточено на развязке.
Систематическое изменение требует модификации монолита. Систематические изменения помогут вам создать новый сервис.
DevOps и Continuous Delivery становятся популярными, но еще не стали мейнстримом. Сильный акцент на DevOps и непрерывной доставке
Полный стек в природе Монолитный в природе
Поддерживает несколько протоколов сообщений. Использует легкие протоколы, такие как HTTP, REST или Thrift API.
Он предназначен для совместного использования ресурсов между службами. Он предназначен для размещения служб, которые могут функционировать независимо.
Часто включает совместное использование компонентов Как правило, это не включает совместное использование компонентов
Включает совместное хранение данных между службами Каждый сервис может иметь независимое хранилище данных.
Лучше для крупномасштабных интеграций Лучше для небольших и веб-приложений.
Общается через ESB Общайтесь через уровень API
Полагается на совместное использование ресурсов Полагается на ограниченный контекст для связи.
Меньшая гибкость в развертывании Быстрое и простое развертывание.
Технологический стек SOA ниже по сравнению с Microservice. Стек микросервисных технологий может быть очень большим.
Бизнес-единицы являются зависимыми. Бизнес-единицы независимы друг от друга.
Приложение SOA, состоящее из двух или трех сервисов. Приложение Microservices может иметь десятки услуг.
SOA-приложения созданы для выполнения многочисленных бизнес-задач. Они созданы для выполнения одной бизнес-задачи.
Развертывание — это длительный процесс. Развертывание является простым и менее трудоемким.
Компоненты бизнес-логики хранятся в простых проводных протоколах одного домена службы (HTTP с XML JSON), API управляется с помощью SDK / клиентов. Бизнес-логика может существовать между служебной шиной доменов, как отдельные уровни между службами.
Использует корпоративную сервисную шину (ESB) для связи Он использует менее сложную и простую систему обмена сообщениями
Размер программного обеспечения больше, чем у любого обычного программного обеспечения Размер программного обеспечения невелик в микросервисах
Многопоточный с несколькими накладными расходами для обработки ввода / вывода Однопоточный в основном используется с функциями Event Loop для неблокирующей обработки ввода / вывода
Систематическое изменение, необходимое для модификации монолита В Microservices систематическое изменение заключается в создании нового сервиса
Сосредоточьтесь на максимальном повторном использовании сервисов приложений. Акцент на развязке.
Общее управление и стандарты. Спокойное управление, так как оно больше ориентировано на сотрудничество людей и свободу выбора.
Процесс развертывания занимает много времени. Развертывание является простым и менее трудоемким.
Менее масштабируемая архитектура. Высоко масштабируемая архитектура.

Преимущества SOA

Вот преимущества / преимущества SOA

  • Редактировать и обновлять любой сервис легко
  • Службы имеют одинаковую структуру каталогов, что позволяет потребителям каждый раз получать доступ к данным служб из одного и того же каталога.
  • Сервисы взаимодействуют с другими приложениями, используя общий язык, что означает, что он не зависит от платформы
  • Услуги обычно имеют небольшой размер по сравнению с полноценным приложением. Поэтому легче отлаживать и тестировать независимые сервисы.
  • SOA позволяет повторно использовать сервис существующей системы, попеременно создавая новую систему.
  • Он предлагает подключить новые услуги или модернизировать существующие объекты, чтобы разместить новые бизнес-требования.
  • Вы можете повысить производительность, функциональность службы и легко выполнить обновление системы.
  • SOA может регулировать или изменять различные внешние среды
  • Компании могут разрабатывать приложения без замены существующих приложений.
  • Он предлагает надежные приложения, в которых вы можете тестировать и отлаживать независимые сервисы по сравнению с большим количеством кода.

Преимущество Микро-сервисов

Вот преимущества / преимущества использования Микро-услуг:

  • Более простой шаблон архитектуры, который легко понять разработчикам
  • IDE быстрее делает разработчиков быстрее и продуктивнее
  • Веб-контейнер запускается быстрее; это помогает ускорить процесс развертывания и разработки.
  • Это позволяет команде разрабатывать, развертывать и масштабировать свой сервис независимо от всех других команд.

Недостатки SOA

Вот минусы / недостатки использования сервис-ориентированной архитектуры:

  • Все входные данные должны быть проверены перед отправкой в ​​службу
  • SOA — это дорогостоящий сервис с точки зрения человеческих ресурсов, развития и технологий.
  • Некоторым веб-службам необходимо часто отправлять и получать сообщения и информацию, поэтому они легко достигают миллиона запросов в день.
  • SOA требует высоких инвестиционных затрат
  • Когда служба взаимодействует с другой службой, это приводит к большим издержкам, что увеличивает время отклика.
  • Сервис SOA не подходит для приложений с графическим интерфейсом (GUI), поэтому он станет более сложным, когда SOA потребуется интенсивный обмен данными.

Недостатки микро-услуг

Вот минусы / недостатки Микро-сервисов:

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

Какая архитектура лучше?

SOA — это идеальный метод архитектуры для больших и сложных бизнес-приложений. Он наиболее подходит для сред, требующих интеграции со многими разнообразными приложениями.

Однако приложения, основанные на рабочих процессах, которые имеют четко определенный поток обработки, сложно реализовать с помощью шаблонов архитектуры SOA. Поэтому небольшие приложения также не идеальны для SOA, поскольку они не требуют компонентов обмена сообщениями промежуточного программного обеспечения. С другой стороны, шаблон микросервиса хорошо подходит для небольших и хорошо разделенных веб-систем.

ОСНОВНЫЕ РАЗЛИЧИЯ:

  • SOA ориентирована на повторное использование сервисов приложений, а микросервисы — на разъединение.
  • SOA является полнофункциональным по своей природе, а Microservices — монолитным
  • SOA-приложения созданы для выполнения многочисленных бизнес-задач, а микросервисы — для выполнения одной бизнес-задачи
  • SOA предполагает совместное хранение данных между службами, тогда как в микросервисах каждая служба может иметь независимое хранилище данных.
  • SOA предназначен для совместного использования ресурсов между службами, а микросервисы — для размещения служб, которые могут функционировать независимо.
  • В архитектуре SOA DevOps и Непрерывная доставка становятся популярными, но еще не стали массовыми, в то время как микросервисы уделяют большое внимание DevOps и Непрерывной доставке.
  • SOA — это менее масштабируемая архитектура, а Microservices — очень масштабируемая архитектура.