2007 г.
Влияние исследований на технологию промежуточного программного обеспечения
Вольфганг Эммерих, Микио Аояма, Джо Свентек
Перевод: Сергей Кузнецов
Оригинал: Wolfgang Emmerich, Mikio Aoyama, Joe Sventek. The impact of research on middleware technology, ACM SIGSOFT Software Engineering Notes, Volume 32, Number 1, January 2007.
Предисловие переводчика
Около 10 лет тому назад, в середине 1990-х у меня возникло желание сделать обзорный курс по технологии middleware. Я потратил примерно месяц на подготовку плана этого курса, и после того, как мой план стал занимать более 5 страниц, понял, что взялся на неподъемное дело: слишком много разновидностей промежуточного программного обеспечения существовало уже в те годы, слишком много компаний предлагали собственные реализации, слишком много связей существовало между различными идеями, спецификациями и реализациями.
Предлагаемая вашему вниманию статья во многом помогает разобраться с промежуточным программным обеспечением уже на современной стадии его существования. Авторы не ставят перед собой цель привести техническое описание различных видов middleware. Они пытаются найти исторические корни разных видов промежуточного программного обеспечения и показывают, что практически во всех случаях основные идеи и первоначальные реализации появились в различных исследовательских проектах, результаты которых публиковались в научных изданиях, а эти проекты, в свою очередь, во многом опирались на пионерские работы основоположников инженерии программного обеспечения - Никлауса Вирта, Дэвида Парнаса, Барбары Лисков и др.
Перед тем как приступить к переводу этой статьи, я считал, что хорошо знаю историю middleware, которая, по сути, развивалась на моих глазах, но по мере чтения и перевода понял, что знал далеко не все. Статья и прилагаемый к ней список литературы позволяет на новом уровне понять современный рынок middleware, какие компоненты предлагаемых продуктов основаны на новых идеях, и что в действительности заимствовано из разработок прошлых лет. Хотя статья Эммериха, Аоямы и Свентека читается совсем не просто, она должна быть исключительно полезна многочисленным специалистам в области программного обеспечения: преподавателям, аспирантам и студентам, работникам софтверных компаний, программистам компаний-интеграторов программного обеспечения, работникам отделов IT разнообразных предприятий и т.д.
Как обычно, я постарался найти как можно больше текстов из списка литературы статьи в свободном доступе в Internet (к моменту публикации данного перевода все ссылки работают, но не могу гарантировать, что так будет всегда в будущем). К сожалению, найти удалось не все. Как видно, многие авторы совсем не способствуют упрощению доступа массовых читателей к своим публикациям. Сразу замечу, что для тех специалистов, которые являются подписчиками электронных библиотек IEEE Computer Society и ACM, нет проблем доступа ко всем важным статьям в компьютерной области (практически любого возраста).
Кроме того, я дополнил статью многочисленными ссылками на Web-ресурсы. Я старался упростить доступ читателей к сайтам компаний и страницам их продуктов, а также обеспечить хотя бы какую-то информацию о многочисленных специалистах, упоминаемых в статье. Там, где это удавалось, я ставил ссылки на домашние страницы людей, при их отсутствии - на какие-либо страницы, предоставляющие информацию, хотя бы на списки публикаций. Если имя и фамилия какого-то человека, упоминаемого в статье, не снабжено такой ссылкой, это означает, что мне не удалось отследить его в Internet.
Прошу обратить внимание, что авторы статьи не считают ее законченной и предлагают всем специалистам, которые могут что-то добавить или исправить, присылать свои комментарии по адресу Вольфганга Эммериха.
Я потратил много времени на подготовку данного перевода, но получил от этой работы большое удовольствие и пользу. Желаю вам получить не меньшее удовольствие и пользу от чтения и изучения перевода статьи.
Сергей Кузнецов
Содержание
- Аннотация
- 1. Введение
- 2. Исследовательский метод
- 2.1. Факты воздействия
- 2.2. Трассы воздействий
- 2.3. Нахождение трасс воздействий
-
- 3. Понятия промежуточного программного обеспечения
- 4. Промежуточное программное обеспечение для сервис-ориентированного компьютинга
- 4.1. Simple Object Access Protocol
- 4.2. Web Services Description Language
- 4.3. Business Process Execution Language
- 4.4. Резюме
-
- 5. Распределенные транзакции
- 5.1. Распределенные транзакции в J2EE
- 5.2. Объектные транзакции в CORBA
- 5.3. Резюме
-
- 6. Промежуточное программное обеспечение, ориентированное на сообщения
- 7. Распределенные объекты
- 7.1. Java Remote Method Invocation
- 7.2. The Common Object Request Broker Architecture
-
- 8. Удаленные вызовы процедур
- 9. Резюме
- 9.1. Для передачи технологии требуется время
- 9.2. Междисциплинарность
- 9.3. Значимость диссертационных исследований
- 9.4. Перемещение людей
- 9.5. Стандартизация
-
- 10. Заключение
- Благодарности
Аннотация
Рынок промежуточного программного обеспечения представляет собой значительный сегмент всего рынка информационной и коммуникационной технологии. В 2005 г. по данным Gartner общий доход от продажи лицензий на программные продукты промежуточного слоя составил около 8.5 миллиардов долларов США. В этой статье мы обсуждаем вопрос о том, вовлечены ли какие-либо исследования в создание технологии, предлагаемой на рынке? Мы стремимся применять научный подход и представляем исследовательский метод, используемый для обеспечения ответа на этот вопрос. Затем приводится краткое введение в ключевые понятия промежуточного программного обеспечения, на которых основывается этот рынок. Невозможно установить все возможные виды воздействий, которые могли бы оказать исследования. Взамен этого мы выбираем несколько очень успешных технологий, являющихся представительными на всем рынке промежуточного программного обеспечения и показываем наличие влияния результатов исследований на создание этих технологий. Мы исследуем происхождение промежуточного программного обеспечения Web-сервисов, обработки распределенных транзакций, поддержки обмена сообщениями, распределенных объектных систем и систем, основанных на вызовах удаленных процедур. Для каждой из этих технологий мы показываем серьезное влияние исследований и приходим к выводу, что без исследований, выполненных аспирантами и исследователями в университетских лабораториях в Brown, CMU, Cambridge, Newcastle, MIT, Vrije и University of Washington, а также исследований, проведенных в промышленных лабораториях в APM, AT&T Bell Labs, DEC Systems Research, HP Labs, IBM Research и Xerox PARC, у нас не было бы технологии промежуточного программного обеспечения в том виде, в котором она существует в настоящее время.*
1. Введение
Различные коммерческие тенденции вызывают возрастающую потребность в распределенных системах. Во-первых, увеличивается число слияний и поглощений компаний. Различные подразделения объединившихся или поглощенных компаний должны обеспечивать своим заказчикам единообразные услуги, а для этого обычно требуется интеграция их IT-систем. Обычно на такую интеграцию требуется настолько незначительное время, что возможность создания новой системы не является целесообразной, и поэтому требуется интегрировать в распределенную систему существующие системные компоненты. Во-вторых, все быстрее требуется реагировать на изменяющиеся требования рынка. Все чаще единственным подходом к соблюдению графика поставок является приобретение готовых к использованию компонентов и их последующая интеграция в распределенную систему. У компонентов, для которых нужна интеграция, имеются несовместимые требования к аппаратной платформе и операционной системе; может понадобиться их размещение в различных узлах сети, что неизбежно приводит к распределенному характеру результирующей системы. Наконец, Internet обеспечивает новые возможности предложений продуктов и услуг громадному числу потенциальных потребителей. В этой ситуации трудно оценить требования к масштабируемости. К какому-либо сайту поддержки электронной коммерции, разработанному для ежедневного выполнения заданного числа транзакций, могут быть неожиданно предъявлены требования, которые превышают его возможности на несколько порядков величин. Требуемой масштабируемости обычно невозможно достичь на основе централизованной или клиент-серверной архитектуры; для этого требуется архитектура распределенной системы.
Распределенные системы могут интегрировать унаследованные компоненты, позволяя избежать дополнительных инвестиций, они могут помочь сократить время вывода новых продуктов и услуг на рынок, они могут обладать свойствами масштабируемости и отказоустойчивости. Однако следует иметь в виду, что построение истинно распределенной системы является существенно более трудным делом, чем создание централизованной или клиент-серверной системы. Это связано с тем, что в распределенной системе имеется несколько точек разрушения, компоненты системы вынуждены общаться друг с другом по сети, что усложняет коммуникации и делает возможными атаки на безопасность. Промежуточное программное обеспечение разрабатывалось для того, чтобы по мере возможности скрыть эти трудности от разработчиков приложений. Промежуточное программное обеспечение обычно определяется как слой программного обеспечения, находящийся между приложениями и операционными системами и предоставляющий прикладным программистам более высокий уровень абстракций, таких как вызовы удаленных процедур, надежный обмен сообщениями и транзакции. Эти абстракции существенно упрощают построение распределенных систем, и поэтому продукты промежуточного программного обеспечения быстро утверждаются в индустрии [30], а промежуточное программное обеспечение в целом воспринимается как удачная технология.
Хотя на интуитивном уровне успехи промежуточного программного обеспечения очевидны, очень трудно количественно оценить, насколько успешной является эта технология. Можно было бы руководствоваться показателями распространенности продуктов промежуточного программного обеспечения. Но эти данные трудно получить по той причине, что скачивание и установка промежуточного программного обеспечения с открытыми кодами или покупка лицензии на соответствующий коммерческий продукт не обязательно означает его последующее активное использование. Однако для создания общего впечатления точные данные не являются обязательными, и полезное приближение обеспечивает общая сумма дохода от продажи лицензий. В соответствии с данными, полученными в недавнем исследовании компании Gartner [39], доходы от продажи на мировом рынке лицензий на продукты промежуточного программного обеспечения и средства поддержки интеграции приложений в 2005 г. вырос до 8.5 миллиардов долларов США. На рис. 1 показаны доли рынка, которыми в 2005 г. обладали различные поставщики промежуточного программного обеспечения.
Рис. 1. Доходы от продажи лицензий на продукты промежуточного программного обеспечения в 2005 г. (увеличить)
При интерпретации этих цифр важно иметь в виду, что общая экономическая активность, зависящая от промежуточного программного обеспечения, по ряду причин является существенно более крупной. Во-первых, имеется значительное число внедрений промежуточного программного обеспечения с открытыми кодами, такого как JBoss [53]. По данным исследования Gartner, в 2005 г. имелось 10 миллионов инсталляций JBoss, но этот продукт доступен бесплатно, и поэтому данные о нем не отражены на рис. 1. Во-вторых, кроме дохода от продажи лицензий, у поставщиков промежуточного программного обеспечения имеются значительные доходы в сфере обеспечения профессиональных услуг, не включенные в сводку на рис. 1. В третьих, рынок серверов приложений обладает еще большей значимостью, поскольку IBM, BEA, Oracle, Microsoft и Tibco полагаются на сторонних поставщиков услуг по интеграции в части поставки своих профессиональных сервисов. Наконец, полную экономическую значимость промежуточного программного обеспечения можно понять, только принимая во внимание ценность, присущую распределенным приложениям, возможность построения которых обеспечило использование промежуточного программного обеспечения в областях электронной коммерции, финансов, развлечений и образования.
Основной вклад этой статьи состоит в научной оценке влияния исследований на разработку технологии промежуточного программного обеспечения. Мы доказываем факты существования, а не пытаемся представить исчерпывающую оценку какого-либо влияния, произведенного исследованиями. Наши основные выводы, которые будут обосновываться далее в этой статье, показаны на рис. 2. На этом рисунке используется нотация, более формально определяемая ниже на рис. 3.
Рис. 2. Общее представление воздействия исследований на промежуточное программное обеспечение
Мы документально подтверждаем, что распределенные транзакции, критически важные для любого Java-ориентированного сервера приложений, стандартизованы в Java 2 Transaction API, который, в свою очередь, основывается на CORBA Object Transaction Service (OTS). Служба CORBA OTS была определена группой,которая включала Грейма Диксона (Graeme Dixon), выполнившего свою диссертационную работу на соискание степени PhD в области объектных транзакций при выполнении проекта Arjuna в университете Ньюкасла. В спецификации OTS также определяется понятие вложенных транзакций, которое исходно было введено в диссертации на соискание степени PhD Элиотом Моссом (Elliot Moss) в MIT.
Второй составляющей спецификации любого сервера приложений, основанного на J2EE, является служба Java Messaging Service (JMS), обеспечивающая возможность асинхронного и надежного обмена сообщениями между распределенными Java-объектами. В JMS стандартизуются интерфейсы к продуктам, поддерживающим очереди сообщений, и мы можем выяснить, что эти продукты происходят от исследований, предпринятых Дейлом Скином (Dale Skeen) в компании Teknekron, и работы, выполненной над службой Broadcast Message Service, которую придумал Стивен Рейс (Steven Reiss) для инструментального средства интеграции в среде разработки программного обеспечения Field.
Для любого сервера приложений критически важна и спецификация механизма Java Remote Method Invocation (RMI), позволяющего синхронно общаться Java-объектам, которые находятся в разных виртуальных Java-машинах. Спецификация RMI была определена в компании Sun группой, руководимой Джимом Вальдо (Jim Waldo). В ранней статье, описывающей RMI, Вальдо указывал ключевые аспекты RMI, на которые повлияли Modula-3 Network Objects. Network Objects были определены Эндрю Бирреллом (Andrew Birrell) и Грегом Нельсоном (Greg Nelson) в Digital System Research. Биррелл и Нельсон в своей статье утверждают, что они всего лишь соединили и упростили результаты предыдущих исследований, и ссылаются на ряд систем, включая язык программирования Emerald, система типов которого была определена в диссертации на соискание степени PhD Нормана Хатчинсона (Norman Hutchinson), и Orca, объектная модель которого была определена в диссертации на соискание степени PhD Генри Бэла (Henri Bal).
Влияние ранних работ Эндрю Биррелла отслеживается и по отношению к системам вызовов удаленных процедур (Remote Procedure Call, RPC), которые были стандартизованы организацией Internet Engineering Task Force. В Request for Comment ONC имеется ссылка на работу Биррелла и Нельсона в Xerox как на исходный источник этого понятия. Брюс Нельсон (Bruce Nelson) до этого защитил свою диссертацию по системам RPC в CMU, и эта работа оказалась полезной при построении в Xerox среды программирования Cedar. Для определения интерфейсов RPC в системе RPC Cedar использовался язык Mesa, являющийся языком взаимосвязи модулей.
Наконец, в новейшей разновидности промежуточного программного обеспечения Enterprise Service Bus используется технология Web-сервисов, в которых реализуются спецификации SOAP и WSDL консорциума World-Wide-Web. Дон Бокс (Don Box), первый автор первой заметки W3C по поводу SOAP представил исторический обзор происхождения SOAP, и он признает, что группа из W3C использовала понятия систем RPC и CORBA. Аналогичное утверждение по поводу WSDL содержится в статье, соавтором которой является Франческо Курбера (Francisco Curbera), соавтор спецификации WSDL. И SOAP, и WSDL – это языки, основанные на XML, а XML происходит от стандартизованного ISO языка SGML, который был определен группой, в состав которой входил Чарльз Голдфарб (Charles Goldfarb). Ранее Голдфарб определил в IBM язык разметки GML, и в ретроспективной статье про GML отмечается, что его основные идеи были почерпнуты из языка Scribe, определение которого содержалось в диссертационной работе на соискание степени PhD Брайана Рейда (Brian Reid), выполненной в CMU. Первая спецификация CORBA была написана Джо Свентеком (Joe Sventek) и Джимом Вальдо, когда они работали в HP Labs (до того, как Вальдо перешел на работу в Sun). До этого Свентек работал над промежуточным программным обеспечением ANSA, которое оказало очень сильное влияние на принятую ISO Open Distributed Processing Reference Model. В ANSA модель RPC расширяется объектно-ориентированными понятиями, и эта работа опирается на исследования Биррелла и Нельсона в области RPC.
Далее данная статья организована следующим образом. В разд. 2 обсуждается метод исследований, используемый в этом отчете. Определяются различные классы фактов, которые принимаются нами при доказательстве воздействий. Мы вводим понятие признаков воздействия и графическое представление, использованное на рис. 2, которое позволяет связывать факты для демонстрации истории того, как в некоторый продукт или стандарт попало некоторое конкретное понятие. В разд. 3 мы представляем основные понятия промежуточного программного обеспечения, необходимые для дальнейшего обсуждения. В разд. 4-8 описываются следы воздействий, показывающие связь между результатами исследований и успешными продуктами промежуточного программного обеспечения. В разд. 9 мы обсуждаем уроки, полученные при внедрении результатов исследований в индустрию, которые можно применить в ходе разработки новых технологий. Разд. 10 содержит заключение.
Содержание Вперёд
* Цель этой публикации в Software Engineering Notes состоит в том, чтобы обеспечить возможность сообществу инженерии программного обеспечения внести свой вклад в приводимый нами отчет. Авторы будут рады установлению с читателями обратной связи, для чего следует использовать адрес электронной почты первого автора.