Подтвердить что ты не робот

Что такое SOA (сервис-ориентированная архитектура)?

Если хотите, назовите меня троллем, но я серьезно: насколько точно новая тенденция SOA отличается от архитектуры клиент-сервисов, которую я строил 15 лет назад? Я продолжаю слышать SOA, но не понимаю не вижу, как это отличается от того, что мы всегда делали.

Еще 10 лет назад в моей компании было несколько клиентов (на нескольких языках), которые пользовались одним и тем же сервисом. Это был не XML (это был двоичный протокол, называемый Microsoft DCOM), и не было автоматического обнаружения через WSDL, но это нормально, так как читать документы было так же просто. Наша система была даже "открытой" в том смысле, что мы задокументировали ее достаточно, чтобы позволить сторонним организациям общаться с нашими службами. Мы не были первопроходцами - любая другая компания, которую я знал 10 лет назад, делала то же самое.

ЕДИНСТВЕННАЯ разница, которую я вижу между тогда и сейчас, заключается в том, что теперь в Интернете доступна одна услуга, тогда как 10 лет назад каждый клиент размещал свой экземпляр службы. Но это не проблема архитектуры - где физически живет сервис, он прозрачен для всех, кто пользуется сервисом.

Так чем же отличается SOA от того, чем мы занимаемся годами? Является ли SOA просто маркетинговым термином, представляющим лучшую практику, которая на самом деле стала распространенной давным-давно? Или я пропускаю некоторые из них в SOA, которые отличаются от того, что мы делали все это время?

4b9b3361

Ответ 1

Забудьте о XML. Забудьте о WSDL. SOA - это не технология, которую вы можете купить, хотя она часто продается именно так.

Реальная точка SOA - это все об ИТ-организации. Суть SOA заключается в том, чтобы избежать наличия огромной совокупности "приложений", которые имеют изолированные пулы данных и вообще не разговаривают друг с другом (и, следовательно, часто дублируют данные), или только в неэффективном, ошибочном способе через слои адаптера или EAI.

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

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

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

Ответ 2

Позвольте мне использовать знаменитого мальчика-бичевателя Integration Hell: Telco.

Вернувшись в 90-е годы, компании сотового телефона были в изобилии в моем районе, почти так же многочисленны, как и реселлеры на большие расстояния, которые стали возможными благодаря дерегулированию коммуникаций середины 90-х. Ну, время продолжается, и Bell Atlantic становится электростанцией Verizon и поглощает компанию после компании (и хотя бы одного Baby Bell). У каждой из этих компаний есть технологии на башнях, в коммутационном оборудовании, в биллинговых системах, которые ПОЛНОСТЬЮ несовместимы друг с другом.

Итак, компания уходит и говорит, хорошо, у нас есть эти модели для того, как мы занимаемся бизнесом, давайте дружеское, последовательное лицо на ВСЕХ наших технологиях в виде WSDL/SOAP/XSD - на каждом языке и в системе мы сегодня могут быть сопряжены с этим! Медленно, но верно, компания создает все системы, способные сообщать о возможностях, быть опрошенными для загрузки и выставления счетов, а также подвергать будущих виджетов использованию в манерах, которые еще не были учтены.

Любой может создать SOA-клиент. Любой, у кого есть wget и текстовый редактор. И каждый может анализировать результаты (XML).

Это принципиально отличается от прошлых клиент-серверных архитектур. На днях я просто поговорил с кем-то о взаимодействии систем Cobol и Smalltalk с архитектурой SOA. Это легкая проблема для решения. Скажите, вы можете сказать то же самое для своих систем DCOM.

Ответ 3

SOA ничего, кроме способа дизайна, в котором модули взаимодействуют друг с другом через "сервисы". Это просто, и теперь следующий вопрос: что такое "сервис" и каково его отличие от обычного "метода"?

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

SOA не имеет ничего общего с конкретной технологией, это всего лишь особый способ проектирования.

Ответ 4

Профессор Франк Лейманн из Университета Штутгарта принимает SOA в качестве ключевой концепции его исследовательской работы, ориентированной на обслуживание (SOC), когда он говорит о SOA. Его, как видно, спрашивают об определении SOA, и последующая беседа может быть хорошо прочитана.

Обратите внимание, что наша дорожная карта посвящена "сервис-ориентированным вычислениям (SoC)", то есть вычислительной парадигме позади сервис-ориентирования. Сервисно-ориентированная архитектура (SOA) является архитектурной реализацией этой вычислительной парадигмы. Вы можете сравнить это с "клиент-серверными вычислениями" как парадигмой и "браузером/веб-сервером" или "DB-client/хранимой процедурой" как двумя (из других других) архитектурных реализаций этой парадигмы.

...

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

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

Таким образом, SOA представляет собой смесь зрелых вещей и новых возникающих вещей.

Существует также ссылка на бумагу SoC от апреля 2006 года.


Поиск в Google идентифицирует Prof. Frank Leymann и его работает.

Ответ 5

У Neal Ford есть много сильных мнений относительно SOA. Вы можете найти его точку зрения интересной.

Тактика против стратегии (SOA и Tarpit of Irrelevancy)

Стандартные стандарты и стандартизованные (SOA и Tarpit of Irrelevancy)

Инструменты и Anti-Behavior (SOA и Тарпинг безрезультатности)

Rubick Cubicle (SOA и Tarpit of Irrelevancy)

Триумф надежды над разумом (SOA и Tarpit of Irrelevancy)

Guerrilla SOA (SOA и The Tarpit of Irrelevancy)

Ответ 6

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

Ответ 7

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

В случае новой компании-автозапуска с идеей для элемента программного обеспечения/набора программных средств я не вижу, как компания может начать с сервис-ориентированной архитектуры из офф. Сначала каждое решение (которое может хорошо развиваться в службу, чтобы оно могло взаимодействовать) должно стремиться к изолированному решению проблемного пространства.

Возможно, именно в "дорожной карте" для корпоративных возможностей или набора для каждого решения станет совместимым сервисом по мере завершения решений и ввода службы. Для этого, возможно, команды разработчиков будут применять модульный/компонентный подход к построению soluton (возможной службы), чтобы упростить включение решения в качестве службы в сервис-ориентированную архитектуру.

В случае, когда существующие острова программного обеспечения становятся интероперабельными службами в сервис-ориентированной архитектуре, подход позволяет программным элементам, которые могут быть распространены и могут быть записаны на разных языках, для связи через открытый API и/или общий протокол (например, вкус веб-службы) и общий формат данных (например, XML).

SOA - это подход или идея. Это не каркас или инструмент. Когда WDSL и EJB получают имя-падение, это часто забывается... так же, как идея SOA совсем не нова.

Ответ 8

Большинство ответов здесь, по-видимому, говорят о том, что SOA (Service Oriented architecture) относится к созданию приложения стандартизованным образом, чтобы другие приложения могли взаимодействовать с ним независимо от платформы.

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

Конечно, при разработке приложения вы не можете гарантировать, что он будет совместим с кросс-платформой. Возьмем, например, stock Trading systems. Они используют Fix protocol для передачи сообщений. Ожидаете ли вы теперь вернуть данные в формате XML, чтобы он мог быть так назван SOA-совместимым? Точно нет! SOA - это архитектурный подход, который может помочь вам decouple your application/services и позволить им взаимодействовать друг с другом. Магистраль SOA - это ESB (Enterprise Service Bus), которая используется для передачи данных из одной службы в другую. Архитектура SOA должна заботиться о преобразованиях форматов. Например -

FIX(Service 1) -> (XML ---ESB---> XML) -> JSON (Service 2)

Эти модули преобразования обычно называются adapters и обычно являются частью пакета SOA. Для получения дополнительной информации обратитесь к другому ответу -

Разница между SOA и ESB

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

Также ссылайтесь на страницу Wiki для этого.

Ответ 9

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

Аналогия: Игрушки строятся с использованием строительных блоков Lego.

Игрушки Lego с использованием кирпичей Lego

Ответ 10

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

Ответ 11

Фактически, SOA также использует архитектуру клиент-сервер. Кроме того, SOA - это способ разработки вашего программного обеспечения. Предположим, что ваше приложение может разбиться на простые и независимые задачи, такие как поиск книги, добавление новой книги, рекомендация книги в соответствии с предпочтениями пользователя и так далее. Если вы рассматриваете сервис (API) для каждой задачи, на самом деле вы используете SOA. Преимущество этой архитектуры не в том, что вы создаете веб-приложение или мобильное приложение, вам нужны только разработанные вышеупомянутые сервисы (API).