Что такое SOA?
SOA — это архитектурный паттерн в разработке программного обеспечения. В этом типе приложения компоненты предоставляют услуги другим компонентам по протоколу связи, обычно по сети. Принципы сервис-ориентации не зависят от какого-либо продукта, поставщика или технологии. Полная форма SOA — сервис-ориентированная архитектура
SOA упрощает взаимодействие компонентов программного обеспечения в различных сетях. Веб-службы, созданные в соответствии с архитектурой SOA, обычно делают веб-службы более независимыми.
В этом уроке вы узнаете:
- Что такое SOA?
- Что такое микросервис?
- Что такое архитектура SOA?
- Что такое микросервисная архитектура?
- Особенности SOA
- Особенности Микро-сервисов
- Микросервисы против SOA: в чем разница?
- Преимущества SOA
- Преимущество Микро-сервисов
- Недостатки SOA
- Недостатки микро-услуг
- Какая архитектура лучше?
Что такое микросервис?
Микросервисы — это шаблон сервис-ориентированной архитектуры, в котором приложения создаются как совокупность различных наименьших независимых сервисных единиц. Это программный подход, который фокусируется на разложении приложения на однофункциональные модули с четко определенными интерфейсами.
Эти модули могут быть независимо развернуты и эксплуатироваться небольшими группами, владеющими всем жизненным циклом службы.
Термин «микро» относится к размеру микросервиса, которым должна управлять одна команда разработчиков (от 5 до 10 разработчиков). В этой методологии большие приложения делятся на самые маленькие независимые единицы.
Что такое архитектура 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 — очень масштабируемая архитектура.