Основные программно технические меры. Программно-технический уровень защиты. Основные понятия программно-технического уровня информационной безопасности

Faq 17.03.2019
Faq

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

Уже несколько лет в России, как и во всем мире, обсуждаются вопросы, связанные с применением принципов сервис-ориентированной архитектуры (Service Oriented Architecture, SOA). Многие производители информационных систем уже заявили о поддержке принципов SOA, но реализация этих принципов на практике пока ограничивается единичными случаями. Мы рассмотрим предпосылки появления SOA и основные требования, которые должна выполнить компания, чтобы успешно применять концепцию SOA в своей практике.

«Проблема в том, что в аббревиатуре SOA люди больше обращают внимание на «service oriented», нежели на «architecture». Однако именно архитектура и дисциплина могут помочь SOA принести реальный результат».

Джеймс Гавернор (James Governor), ведущий аналитик, компания Redmonk

Термин SOA пока что несет на себе сильный маркетинговый отпечаток, а для самого понятия SOA на сегодняшний день все еще существуют различные трактовки. Многие отождествляют SOA с технологией Web-сервисов или определенными информационными системами, например, системами для управления бизнес-процессами (Business Process Management, BPM). Но SOA — это не коробочный продукт или технология, а идеология информатизации бизнеса, основанная на процессном подходе и методологии управления бизнес-процессами BPM.

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

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

Принципы SOA

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

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

Аналогичная ситуация складывается сейчас с информационными решениями. Многие уже поняли на своем опыте, что монолитные системы (ERP, CRM, SCM и т. д.) обладают двумя врожденными пороками: ограниченной гибкостью (не всегда позволяют внести требуемые изменения в необходимые сроки) и высокой стоимостью владения и внесения изменений. Эти два фактора критичны для современных компаний, работающих в высококонкурентном и динамичном мире, что заставляет их уделять пристальное внимание оптимизации в данной области.

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

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

Оценив сложившуюся маркетинговую ситуацию и потенциал SOA для бизнеса, ведущие поставщики информационных систем поспешили заявить о своей готовности к SOA. Не отставали здесь ни пресса, ни аналитики. Если вспомнить начало кампании в 2005 г., то все единодушно говорили о большом потенциале SOA, и как следствие в 2006-2007 гг. было начато множество пилотных проектов SOA. Затем появилась информация о первых результатах, первых трудностях и неудачах. Темпы развития рынка SOA оказались не столь высоки, как ожидалось. По данным аналитиков, 90% компаний, запустивших пилотные проекты, завязли в них.

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

Цели и средства внедрения SOA

Изначально при внедрении SOA ставятся следующие цели:

  • сокращение времени адаптации сложных информационных систем к постоянно изменяющимся бизнес-процессам компании;
  • снижение стоимости владения ИТ (Total Cost of Ownership, TCO) в масштабе времени — за счет сокращения затрат на проектирование, внедрение, документирование, внесение изменений и т. п.;
  • систематизация компонентов ИТ-архитектуры и повышение степени интегрированности информационных систем компании.

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

Так какие же технологические средства необходимы для внедрения SOA? Для начала это инструментарий документирования бизнес-процессов, далее репозиторий — библиотека унифицированных сервисов, позволяющая быстро компоновать новые автоматизированные процессы, далее — технология перехода от описания бизнес-процессов и определения сервисов к их реализации, например, с возможностью генерации BPEL, и, наконец, среда вызова сервисов и выполнения бизнес-процессов (рис. 1).

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

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

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

Условия успешного применения SOA

Несмотря на то что все ведущие вендоры ИТ-мира вписали в свои маркетинговые материалы аббревиатуру SOA, а заказчики все чаще требуют от внедренцев, чтобы ИТ-решение у них строилось с использованием принципов SOA, ясные и понятные цели SOA очень часто не достигаются. Причина в первую очередь кроется в низком уровне бизнес-культуры и процессной зрелости компаний. Поскольку SOA, как мы уже говорили, базируется на идеологии BPM, трудно поверить в «кусочное» внедрение SOA в какой-либо компании, разве что в узкотехнологическом аспекте — применении технологии Web-сервисов. Это подтверждается и опытом первых проектов SOA — многие из них, зайдя в тупик из-за непрозрачности ИТ-архитектуры и непонимания общей картины ИТ-поддержки бизнеса, вызвали к жизни проекты документирования и управления архитектурой предприятия (Enterprise Architecture, EA). И наоборот — успешные проекты описания архитектуры предприятия дали жизнь SOA-проектам, поскольку стало очевидно, в каких областях идеология SOA применима и может дать наибольший эффект.

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

Доходы будущих периодов

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

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

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

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

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

Игнорирование перечисленных условий и требований, чрезмерное увлечение технологической стороной в ущерб процессной грозят привести к совершенно противоположным результатам:

  • расширение, а не сужение, «зоопарка» информационных систем и приложений,
  • снижение надежности поддержки бизнеса;
  • повышение стоимости владения ИТ;
  • и в конечном счете — дискредитация идеологии SOA как таковой.

Заключение

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

Уроки первых проектов позволяют утверждать, что:

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

Не следует ждать немедленного сокращения времени внедрения и экономии от SOA: это «доходы будущих периодов», базирующиеся на предварительно созданной SOA-инфраструктуре и репозитории сервисов. Но если мы не хотим «остаться за бортом» и рассчитываем получить стратегические бизнес-преимущества, этим надо заниматься уже сейчас — потому что к 2010 г., согласно прогнозу аналитиков Gartner Group, по меньшей мере 65% больших компаний переведут более 35% своего портфеля приложений на SOA.

Андрей Коптелов , директор департамента развития и внедрения ИТ
Виктор Голубев , директор департамента продвижения продуктов и услуг компания «IDS Scheer Россия и страны СНГ»

Аннотация

Продолжительность курса

· Лекции – 45 мин;

· Ответы на тесты - 15 мин.


Теоретический курс



Понятие SOA

Согласно IT Gartner SOA SOA SOA SOA приложение».

Анатомия SOA

Слайды №6, 7

Рассмотрим логическую структуру SOA приложения. Как правило, подобное приложение на логическом уровне можно разделить на две большие части:

1. Бизнес – домен

2. IT – домен

Бизнес – домен включает в себя построение композитного корпоративного приложения и формирование бизнес-процессов из доступного набора сервисов.

IT – домен отвечает за создание сервисов, подключения существующих не – SOA приложений и т.д.

Если разделить SOA на уровни, то мы увидим следующие семь уровней:

Уровень 1: Уровень унаследованных систем. Состоит из существующих заказных приложений, называемых также унаследованными системами, например, приложения системы управления взаимосвязями с клиентами (CRM) и планирования ресурсов предприятия (ERP) и т.д. Многоуровневая архитектура SOA может помочь улучшить уже существующие системы и способствовать их интеграции с использованием сервис - ориентированных методов.

Уровень 2: Уровень корпоративных компонентов. Корпоративные компоненты несут ответственность за обеспечение функциональности и поддержание качества обслуживания (QoS) сервисов. Для реализации компонентов, управления рабочей нагрузкой, отказоустойчивостью и балансирования нагрузки данный уровень обычно использует такие технологии, основанные на использовании контейнеров, как серверы приложений.

Уровень 3: Уровень сервисов. На этом уровне находятся сервисы, выявленные бизнесом. Данный уровень выводит подмножество интерфейсов корпоративных компонентов в форму описания сервисов. Таким образом, корпоративные компоненты обеспечивают реализацию сервиса в период работы, используя функциональность, предоставленную их интерфейсами. На данном уровне интерфейсы экспортируются как описания сервиса, в котором они доступны для использования. Сервисы могут существовать отдельно или как композитный (составной) сервис.

Уровень 4: Уровень объединения (хореографии) бизнес процессов. На этом уровне определяется способы объединения сервисов, определенных на Уровне 3. Сервисы связаны в поток путем группировки (хореографии) и, следовательно, они действуют совместно как отдельное приложение. Для проектирования потоков приложения могут использоваться визуальные инструменты компоновки.

Уровень 5: Уровень презентации. SOA отделяет пользовательский интерфейс от компонентов, но без пользовательского интерфейса, как правило, обойтись нельзя. Пользовательский интерфейс позволяет вывести сервисы на уровень интерфейса приложения или презентации.

Уровень 6: Интеграция (ESB). Этот уровень допускает интеграцию сервисов путем предоставления набора таких возможностей, как интеллектуальная маршрутизация, посредничество протоколов и других механизмов преобразований, обычно описанных как ESB (Enterprise Service Bus) – корпоративная сервисная шина.

Уровень 7: Качество обслуживания (QoS) . Этот уровень предоставляет возможности для мониторинга, управления и поддержки таких аспектов качества обслуживания, как обеспечение безопасности, производительности и доступности. Он является фоновым процессом, использующим механизмы запросов и ответов, и инструменты, контролирующие общее состояние приложений SOA. Сюда включены все важные стандартные реализации WS - Management и других значимых протоколов и стандартов, реализующих качество обслуживания для SOA.

Стандарты SOA

Слайды №8, 9

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

Спецификации SOAP, WSDL и UDDI де-факто определяют стандартную инфраструктуру текущей технологии Web-сервисов. Две группы по стандартизации работают над официальными стандартами Web-сервисов – W3C и OASIS (Organization for the Advancement of Structured Information Standards).

W3C фокусируется на спецификациях инфраструктуры ядра технологии, а OASIS на высокоуровневой функциональности.

Simple Object Access Protocol (SOAP) – протокол обмена сообщениями, основанными на XML, определяет как Web - сервисы могут посылать сообщения друг другу. Это высокоуровневый протокол, который лишь определяет структуру сообщений и несколько правил по их обработке. SOAP не зависит от транспортного протокола, поэтому обмениваться SOAP - сообщениями можно через множество транспортных протоколов. В настоящее время чаще всего для передачи SOAP – сообщений в качестве транспортного протокола используется HTTP.

Web Services Definition Language (WSDL) – стандарт для описания Web - сервисов. Описание на WSDL содержит всю информацию необходимую для доступа и использования Web - сервиса, включая интерфейс Web сервиса. Описание на WSDL – это XML документ, содержащий набор определений, таких как типы данных, формат сообщений и т.д.

Таким образом, WSDL определяет стандартный описательный механизм для Web – сервисов, документ WSDL описывает, какую функциональность предлагает Web – сервис, как получить доступ и т.д. Документ WSDL может быть откомпилирован для создания proxy для клиентов, которые вызывают данный сервис (proxy позволяет клиенту «думать», что сервис расположен на той же машине, что и сам клиент).

Universal Description Discovery and Integration (UDDI) – «желтые страницы», в которых могут быть зарегистрированы Web - сервисы и их описания на WSDL. UDDI сам по себе Web - сервис и является реестром общего назначения, где могут быть зарегистрированы не только Web - сервисы.

UDDI определяет стандартный механизм обнаружения для Web – сервисов, пользователи могут запросить реестр UDDI, задавая, например, название компании, тип сервиса или другие критерии поиска. UDDI обеспечивает указание на WSDL документ, который описывает Web – сервис и точки входа к реализации сервиса.

Транспортные протоколы для Web-сервисов

В процессе разработки Web – сервиса, необходимо определить какие транспортные протоколы будет поддерживать Web-сервис для обмена сообщениями. В настоящее время, для транспортировки XML – сообщений чаще всего используется HTTP (основной протокол, используемый web-серверами и web – браузерами), а при реализации Web-сервисов на платформе Java может использоваться Java Messaging Service (JMS), который является частью спецификации J2EE. Web-сервис может поддерживать несколько транспортных протоколов, это обстоятельство находит свое отражение в WSDL файле сервиса.

Достоинства HTTP в том, что он используется повсеместно, гибкий и большинство сетевых экранов пропускают HTTP – сообщения. HTTP позволяет передавать не только WWW - документы, но и практически любые другие документы. HTTP также полезен для Web-сервисов, которые требуют синхронных двунаправленных соединений. Когда клиент вызывает метод Web-сервиса через HTTP, этот метод должен сразу же возвратить результат клиенту.

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

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

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

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

Когда Web-сервис использует JMS как транспортный протокол, он работает с сообщениями через очередь JMS.

Форматы сообщений

Когда мы выбрали транспортный протокол для Web-сервиса, необходимо определиться с форматом собственно сообщений, которыми мы будем обмениваться. Формат сообщений описывает, как сообщение должно быть подготовлено к отправке по транспортному протоколу. Например, мы можем оформлять наши сообщения в SOAP – формате или в виде обычного XML. Независимо оттого, что мы выбрали – SOAP или XML, мы можем пересылать их через HTTP или JMS.

Web-сервис может поддерживать несколько транспортных протоколов и форматов сообщений.

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

Слайд №10

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

У SOA есть и другие достоинства.

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

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

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

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

Проблемы использования SOA

Слайд №11

В целом идеи SOA понятны и производителям ПО и клиентам, однако нельзя сказать, что данная технология находится в зрелом состоянии. Недостаточно проработаны стандарты, не хватает инструментов управления. Как и часто бывает в таких случаях, сложилось группировки производителей программного обеспечения, разрабатывающих свои спецификации. В результате на роль «заполнителей дыр» в SOA сейчас претендует множество различных методов, но явного лидера нет. Сближение подходов намечается в рамках организация Web Services Interoperability (www.ws-i.org), которая пытается выработать некий общий знаменатель для технологии Web-сервисов. Она выпустила документ WS-I Basic Profile, определяющий требования к различным компонентам SOA, которые могут гарантировать их совместимость и прояснить тонкости использования Web-сервисов.

Перспективы и прогнозы

Аналитики с большим оптимизмом смотрят на будущее SOA и Web-сервисов. Так, по прогнозу компании Gartner, к 2008 г. более 60% предприятий будут использовать эту архитектуру в качестве основного принципа при создании ответственных бизнес-приложений.
В IDC подсчитали, что в прошлом году предприятия потратили на поддержку Web-сервисов 1,1 млрд. долл., а в 2008 г. израсходуют 11 млрд. долларов. Компания ZapThink, занятая исследованиями в области SOA, прогнозирует, что рынок инструментов для реализации Web-сервисов вырастет со 120 млн. долл. в 2003 г. до 8,3 млрд. долл. в 2008 г. Аналитики объясняют такой подъем тем, что SOA, позволяющая снизить расходы на IT , становится главной стратегией при решении проблем интеграции разнородных систем. Отношение предприятий к SOA становится более серьезным, и они переходят от экспериментов к реальным внедрениям.

Понятие Web – сервиса

Слайд №13

Web - сервисы можно рассматривать как «plug and play» приложения. Web -сервис представляет собой часть информационной системы или бизнес-процесса, к которой можно обратиться в том числе и через Интернет с целью сборки требуемой информационной системы.

Отличие Web - сервисов от приложений других типов в том, что Web – сервисы разрабатываются для поддержки связи и взаимодействия приложений с приложениями. Другие Web приложения поддерживают коммуникации человек – человек (например, e-mail) или человек – приложение (браузеры). Технология Web – сервисов позволяет приложениям общаться с другими приложениями без участия человека.

Итак, Web – сервисы - это слабосвязанные, инкапсулированные компоненты которые выполняют определенную задачу, доступ к ним осуществляется через их интерфейсы по стандартным протоколам.

Основными возможностями, предоставляемыми Web-сервисами, являются:

· Возможность повторного использования, разработчики могут использовать Web-сервисы сторонних производителей для быстрого создания интеграционных решений

· Web-сервисы могут быть реализованы практически на любой платформе, на большинстве стандартных языков программирования, причем для использования Web-сервиса не требуется совместимость платформ с клиентом

· Доступ к Web –сервису можно осуществлять как через интранет, так и через Интернет.

На концептуальном архитектурном уровне Web-сервисы – это основанные на стандартах «обертки» для сервисов и ресурсов, которые провайдер делает доступными для потребителей.

Виды Web – сервисов

По формату сообщений, Web – сервисы разделяются на:

1. Web – сервисы, основанные на сообщениях SOAP.

2. Web – сервисы, основанные на технологии Representational State Transfer (REST).

3. Web – сервисы, основанные на XML-RPC.

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

По способу обработки входящих сообщений Web - сервисы могут быть:

1. Синхронные

2. Асинхронные

Список источников

1. Об использовании BPMS - http://www.bpms.ru

2. Демонстрация BPMS - http://www.unify.ru/demo/bpm/index.html

3. Материалы исследований компании ZapThink - http://www.zapthink.com

4. Материалы о механизмах интеграции компании Intersoft Lab -

http://www.iso.ru/journal/articles/themes/17

5. Техническая библиотека компании BEA - http://dev2dev.bea.com/soa/

6. Техническая библиотека компании Sun - http://java.sun.com/webservices/index.jsp

7. Техническая библиотека компании IBM –

http://www-128.ibm.com/developerworks/ru/views/webservices/libraryview.jsp

8. mig_ssdoc\\$/ПРОИЗВОДСТВО SOA/Архитектура/Презентация платформы v2.ppt

9. mig_ssdoc\\$/ПРОИЗВОДСТВО SOA/Архитектура/Архитектура системы v2.doc

Приложение 1

Рисунок для иллюстрации архитектуры фронт – офисного решения Diasoft.

Аннотация

Данный документ предназначен для проведения лекционных занятий по теоретическому курсу "Основы сервисно – ориентированной архитектуры".

Требования к знаниям слушателей:

· Знание основ архитектуры построения распределенных многозвенных приложений;

По итогам обучения, слушатели должны:

· Получить представление о принципах построения приложений в SOA;

· Узнать о ключевых технологиях, применяемых в SOA;

· Иметь представление о сервисах, как основных строительных элементах SOA приложений;

· Узнать об использовании корпоративной сервисной шины ESB для интеграции Web - сервисов;

· Получить информацию о системах управления бизнес – процессами (BPMS).

· Получить основные сведения об архитектуре фронт – офисного решения Diasoft.SOA

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

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

Продолжительность курса

· Лекции – 45 мин;

· Ответы на тесты - 15 мин.


«Основы сервисно – ориентированной архитектуры»

Теоретический курс

1. Краткий обзор сервисно – ориентированной архитектуры (SOA)..... 4

1.1. Понятие SOA................................................................................................................... 4

1.2. Предпосылки возникновения SOA........................................................................... 4

1.3. Эволюция архитектуры корпоративных IT систем............................................... 4

1.4. Анатомия SOA................................................................................................................ 5

1.5. Стандарты SOA.............................................................................................................. 6

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

1.7. Проблемы использования SOA................................................................................. 8

1.8. Перспективы и прогнозы............................................................................................. 9

2. Инфраструктура для приложений в SOA.............................................. 9

2.1. Элементы инфраструктуры для реализации приложений в SOA.................... 9

2.2. Понятие Web – сервиса................................................................................................ 9

2.3. Схема регистрации и поиска Web – сервисов....................................................... 10

2.4. Механизм вызова Web – сервисов и конвертация данных \ протоколов с использованием ESB................................................................................................................................... 11

2.5. Использование ESB для интеграции приложений.............................................. 11

2.6. BPEL - язык описания бизнес - процессов............................................................. 12

2.7. BPMS – система управления бизнес - процессами.............................................. 14

3. Архитектура фронт - офисного решения Diasoft................................. 17

3.1. Особенности фронт – офисного решения Diasoft............................................... 17

3.2. Архитектурные слои фронт – офисного решения Diasoft................................. 18

Список источников..................................................................................... 19

Приложение 1............................................................................................... 20


Краткий обзор сервисно – ориентированной архитектуры (SOA)

Понятие SOA

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

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

  • Перевод

Сервис-ориентированная архитектура (service-oriented architecture, SOA) придумана в конце 1980-х. Она берёт своё начало в идеях, изложенных в CORBA, DCOM, DCE и других документах. О SOA написано много, есть несколько её реализаций. Но, по сути, SOA можно свести к нескольким идеям, причём архитектура не диктует способы их реализации:

  • Сочетаемость приложений, ориентированных на пользователей.
  • Многократное использование бизнес-сервисов.
  • Независимость от набора технологий.
  • Автономность (независимые эволюция, масштабируемость и развёртываемость).

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


В этой статье я рассмотрю следующие паттерны, относящиеся к SOA:

  • Общая архитектура брокера объектных запросов (CORBA).
  • Веб-сервисы.
  • Очередь сообщений.
  • Сервисная шина предприятия (ESB).
  • Микросервисы.

Общая архитектура брокера объектных запросов (CORBA)

В 1980-х началось активное использование корпоративных сетей и клиент-серверной архитектуры. Возникла потребность в стандартном способе взаимодействия приложений, которые созданы с использованием разных технологий, исполняются на разных компьютерах и под разными ОС. Для этого была разработана CORBA. Это один из стандартов распределённых вычислений, зародившийся в 1980-х и расцветший к 1991 году.


Стандарт CORBA был реализован несколькими вендорами. Он обеспечивает:

  • Не зависящие от платформы вызовы удалённых процедур (Remote Procedure Call).
  • Транзакции (в том числе удалённые!).
  • Безопасность.
  • События.
  • Независимость от выбора языка программирования.
  • Независимость от выбора ОС.
  • Независимость от выбора оборудования.
  • Набор данных через язык описания интерфейсов (Interface Definition Language, IDL).

Сегодня CORBA всё ещё используется для разнородных вычислений. Например, он до сих пор является частью Java EE , хотя начиная с Java 9 будет поставляться в виде отдельного модуля .


Хочу отметить, что не считаю CORBA паттерном SOA (хотя отношу и CORBA, и SOA-паттерны к сфере распределённых вычислений). Я рассказываю о нём здесь, поскольку считаю недостатки CORBA одной из причин возникновения SOA.

Принцип работы

Сначала нам нужно получить брокер объектных запросов (Object Request Broker, ORB), который соответствует спецификации CORBA. Он предоставляется вендором и использует языковые преобразователи (language mappers) для генерирования «заглушек» (stub) и «скелетов» (skeleton) на языках клиентского кода. С помощью этого ORB и определений интерфейсов, использующих IDL (аналог WSDL), можно на основе реальных классов генерировать в клиенте удалённо вызываемые классы-заглушки (stub classes). А на сервере можно генерировать классы-скелеты (skeleton classes), обрабатывающие входящие запросы и вызывающие реальные целевые объекты.



Вызывающая программа (caller) вызывает локальную процедуру, реализованную заглушкой.

  1. Заглушка проверяет вызов, создаёт сообщение-запрос и передаёт его в ORB.
  2. Клиентский ORB шлёт сообщение по сети на сервер и блокирует текущий поток выполнения.
  3. Серверный ORB получает сообщение-запрос и создаёт экземпляр скелета.
  4. Скелет исполняет процедуру в вызываемом объекте.
  5. Вызываемый объект проводит вычисления и возвращает результат.
  6. Скелет пакует выходные аргументы в сообщение-ответ и передаёт его в ORB.
  7. ORB шлёт сообщение по сети клиенту.
  8. Клиентский ORB получает сообщение, распаковывает и передаёт информацию заглушке.
  9. Заглушка передаёт выходные аргументы вызывающему методу, разблокирует поток выполнения, и вызывающая программа продолжает свою работу.

Достоинства

  • Независимость от выбранных технологий (не считая реализации ORB).
  • Независимость от особенностей передачи данных/связи.

Недостатки

  • Независимость от местоположения : клиентский код не имеет понятия, является ли вызов локальным или удалённым. Звучит неплохо, но длительность задержки и виды сбоев могут сильно варьироваться. Если мы не знаем, какой у нас вызов, то приложение не может выбрать подходящую стратегию обработки вызовов методов, а значит, и генерировать удалённые вызовы внутри цикла. В результате вся система работает медленнее.
  • Сложная, раздутая и неоднозначная спецификация : её собрали из нескольких версий спецификаций разных вендоров, поэтому (на тот момент) она была раздутой, неоднозначной и трудной в реализации.
  • Заблокированные каналы связи (communication pipes) : используются специфические протоколы поверх TCP/IP, а также специфические порты (или даже случайные порты). Но правила корпоративной безопасности и файрволы зачастую допускают HTTP-соединения только через 80-й порт, блокируя обмены данными CORBA.

Веб-сервисы

Хотя сегодня можно найти применение для CORBA, но мы знаем, что нужно было уменьшить количество удалённых обращений , чтобы повысить производительность системы. Также требовался надёжный канал связи и более простая спецификация обмена сообщениями .


И для решения этих задач в конце 1990-х начали появляться веб-сервисы.

  • Нужен был надёжный канал связи , поэтому:
    • HTTP стал по умолчанию работать через порт 80.
    • Для обмена сообщениями начали использовать платформо-независимый язык (вроде XML или JSON).
  • Нужно было уменьшить количество удалённых обращений , поэтому:
[Веб-]сервисы можно публиковать, находить и использовать стандартным образом вне зависимости от технологий.
- Microsoft 2004,


Благодаря микросервисам мы перешли в парадигме SOA от удалённого вызова методов объекта (CORBA) к передаче сообщений между сервисами.


Но нужно понимать, что в рамках SOA веб-сервисы - не просто API общего назначения, всего лишь предоставляющие CRUD-доступ к базе данных через HTTP. В каких-то случаях эта реализация может быть полезной, но ради целостности ваших данных необходимо, чтобы пользователи понимали лежащую в основе реализации модель и соблюдали бизнес-правила . SOA подразумевает, что веб-сервисы являются ограниченными контекстами бизнес-субдоменов (business sub-domain) и отделяет реализацию от решаемых веб-сервисами задач.


С точки зрения технологий SOA не просто сервисная архитектура, а набор политик, методик и фреймворков, благодаря которым мы предоставляем и получаем нужные сервисы.
- Microsoft 2004, Understanding Service-Oriented Architecture

Достоинства

  • Изолированность контекстов доменов (Domain contexts).

Недостатки

  • Синхронный обмен сообщениями может перегрузить системы.

Очередь сообщений

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


Очередь сообщений использует в качестве компонента инфраструктуры программный брокер сообщений (RabbitMQ, Beanstalkd, Kafka и т. д.). Для реализации связи между приложениями можно по-разному настроить очередь:

  • Запрос/Ответ

    • Клиент шлёт в очередь сообщение, включая ссылку на «разговор» («conversation» reference) . Сообщение приходит на специальный узел, который отвечает отправителю другим сообщением, где содержится ссылка на тот же разговор , так что получатель знает, на какой разговор ссылается сообщение, и может продолжать действовать. Это очень полезно для бизнес-процессов средней и большой продолжительности (цепочек событий, sagas ).
  • Публикация/Подписка
    • По спискам
      Очередь поддерживает списки опубликованных тем подписок (topics) и их подписчиков. Когда очередь получает сообщение для какой-то темы, то помещает его в соответствующий список. Сообщение сопоставляется с темой по типу сообщения или по заранее определённому набору критериев, включая и содержимое сообщения.
    • На основе вещания
      Когда очередь получает сообщение, она транслирует его всем узлам, прослушивающим очередь. Узлы должны сами фильтровать данные и обрабатывать только интересующие сообщения.


Все эти паттерны можно отнести к либо к pull- (polling) , либо к push -подходу:

  • В pull-сценарии клиент опрашивает очередь с определённой частотой. Клиент управляет своей нагрузкой, но при этом может возникнуть задержка: сообщение уже лежит в очереди, а клиент его ещё не обрабатывает, потому что не пришло время следующего опроса очереди.
  • В push-сценарии очередь сразу же отдаёт клиентам сообщения по мере поступления. Задержки нет, но клиенты не управляют своей нагрузкой.

Достоинства

  • Независимость набора технологий, развёртывания и масштабируемости сервисов.
  • Стандартный, простой и надёжный канал связи (передача текста по HTTP через порт 80).
  • Оптимизированный обмен сообщениями.
  • Стабильная спецификация обмена сообщениями.

Недостатки

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

Сервисная шина предприятия (ESB)

Сервисная шина предприятия использовала веб-сервисы уже в 1990-х, когда они только развивались (быть может, некоторые реализации сначала использовали CORBA?).


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


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



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


Клиент (сервис или модульное приложение) отправляет запрос на сервисную шину, которая преобразует сообщение в формат, поддерживаемый в точке назначения, и перенаправляет туда запрос. Всё взаимодействие идёт через сервисную шину, так что если она падает, то с ней падают и все остальные системы. То есть ESB - ключевой посредник, очень сложный компонент системы.


Это очень упрощённое описание архитектуры ESB. Более того, хотя ESB является главным компонентом архитектуры, в системе могут использоваться и другие компоненты вроде доменных брокеров (Domain Broker), сервисов данных (Data Service), сервисов процессной оркестровки (Process Orchestration Service) и обработчиков правил (Rules Engine). Тот же паттерн может использовать интегрированная архитектура (federated design): система разделена на бизнес-домены со своими ESB, и все ESB соединены друг с другом. У такой схемы выше производительность и нет единой точки отказа: если какая-то ESB упадёт, то пострадает лишь её бизнес-домен.



Главные обязанности ESB:

  • Отслеживать и маршрутизировать обмен сообщениями между сервисами.
  • Преобразовывать сообщения между общающимися сервисными компонентами.
  • Управлять развёртыванием и версионированием сервисов.
  • Управлять использованием избыточных сервисов.
  • Предоставлять стандартные сервисы обработки событий, преобразования и сопоставления данных, сервисы очередей сообщений и событий, сервисы обеспечения безопасности или обработки исключений, сервисы преобразования протоколов и обеспечения необходимого качества связи.
Создавая структуры связи между разными процессами, мы видели много продуктов и подходов, в которых применяются очень развитые механизмы связи. Хороший пример - сервисные шины предприятий, часто включающие в себя сложные средства маршрутизации сообщений, хореографии, преобразования и применения бизнес-правил.
- Martin Fowler 2014, Microservices

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


Достоинства

  • Независимость набора технологий, развёртывания и масштабируемости сервисов.
  • Стандартный, простой и надёжный канал связи (передача текста по HTTP через порт 80).
  • Оптимизированный обмен сообщениями.
  • Стабильная спецификация обмена сообщениями.
  • Изолированность контекстов домена (Domain contexts).
  • Простота подключения и отключения сервисов.
  • Асинхронность обмена сообщениями помогает управлять нагрузкой на систему.
  • Единая точка для управления версионированием и преобразованием.

Недостатки

  • Ниже скорость связи, особенно между уже совместимыми сервисами.
  • Централизованная логика:
    • Единая точка отказа, способная обрушить системы связи всей компании.
    • Большая сложность конфигурирования и поддержки.
    • Со временем можно прийти к хранению в ESB бизнес-правил.
    • Шина так сложна, что для её управления вам потребуется целая команда.
    • Высокая зависимость сервисов от ESB.

Микросервисы

В основе микросервисной архитектуры лежат концепции SOA. Назначение у неё то же, что и у ESB: создать единое общее корпоративное приложение из нескольких специализированных приложений бизнес-доменов.


Главное различие микросервисов и шины в том, что ESB была создана в контексте интеграции отдельных приложений , чтобы получилось единое корпоративное распределённое приложение. А микросервисная архитектура создавалась в контексте быстро и постоянно меняющихся бизнесов, которые (в основном) с нуля создают собственные облачные приложения.


То есть в случае с ESB у нас уже были приложения, которые нам не «принадлежат» , и поэтому мы не могли их изменить. А в случае с микросервисами мы полностью контролируем приложения (при этом в системе могут использоваться и сторонние веб-сервисы).


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


[Микросервисы - это] маленькие автономные сервисы, работающие вместе и спроектированные вокруг бизнес-домена.
- Sam Newman 2015, Principles Of Microservices

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


Ещё остались элементы, пронизывающие всю экосистему микросервисов. Но у них гораздо меньше задач по сравнению с ESB. К примеру, для асинхронной связи между микросервисами до сих пор применяется очередь сообщений, но это лишь канал для передачи сообщений, не более того. Или можно вспомнить шлюз экосистемы микросервисов, через который проходит весь внешний обмен данными.


  • Проектирование сервисов вокруг бизнес-доменов
    Это может дать нам стабильные интерфейсы, высокосвязные и мало зависящие друг от друга модули кода, а также чётко определённые разграниченные контексты.
  • Культура автоматизации
    Это даст нам гораздо больше свободы, мы сможем развернуть больше модулей.
  • Скрытие подробностей реализации
    Это позволяет сервисам развиваться независимо друг от друга.
  • Полная децентрализация
    Децентрализуйте принятие решений и архитектурные концепции, предоставьте командам автономность, чтобы компания сама превратилась в сложную адаптивную систему, способную быстро приспосабливаться к переменам.
  • Независимое развёртывание
    Можно развёртывать новую версию сервиса, не меняя ничего другого.
  • Сначала потребитель
    Сервис должен быть простым в использовании, в том числе другими сервисами.
  • Изолирование сбоев
    Если один сервис падает, другие продолжают работать, это делает всю систему устойчивой к сбоям.
  • Удобство мониторинга
    В системе много компонентов, поэтому трудно уследить за всем, что в ней происходит. Нам нужны сложные инструменты мониторинга, позволяющие заглянуть в каждый уголок системы и отследить любую цепочку событий.


Сообщество предпочитает другой подход: умные конечные точки и глупые каналы . Микросервисы, из которых собираются приложения, должны как можно меньше зависеть друг от друга и при этом быть очень тесно связанными - они содержат собственную доменную логику и работают скорее как фильтры с точки зрения классического Unix: получают запросы, применяют логику и генерируют ответы. Они оркестрируются с помощью простых REST-подобных протоколов, а не сложных протоколов вроде WS-Choreography или BPEL либо какого-то централизованного инструмента.
- Martin Fowler 2014, Microservices

Достоинства

  • Независимость набора технологий, развёртывания и масштабируемости сервисов.
  • Стандартный, простой и надёжный канал связи (передача текста по HTTP через порт 80).
  • Оптимизированный обмен сообщениями.
  • Стабильная спецификация обмена сообщениями.
  • Изолированность контекстов домена (Domain contexts).
  • Простота подключения и отключения сервисов.
  • Асинхронность обмена сообщениями помогает управлять нагрузкой на систему.
  • Синхронность обмена сообщениями помогает управлять производительностью системы.
  • Полностью независимые и автономные сервисы.
  • Бизнес-логика хранится только в сервисах.
  • Позволяют компании превратиться в сложную адаптивную систему, состоящую из нескольких маленьких автономных частей/команд, способную быстро адаптироваться к переменам.

Недостатки

  • Высокая сложность эксплуатации:
    • Нужно много вложить в сильную DevOps-культуру.
    • Использование многочисленных технологий и библиотек может выйти из-под контроля.
    • Нужно аккуратно управлять изменениями входных/выходных API, потому что эти интерфейсы будут использовать многие приложения.
    • Использование «согласованности в конечном счёте» (eventual consistency) может привести к серьёзным последствиям, которые нужно учитывать при разработке приложения, от бэкенда до UX.
    • Тестирование усложняется, потому что изменения в интерфейсе могут непредсказуемо влиять на другие сервисы.


Рекомендуем почитать

Наверх