2008-10-12

Microsoft BizTalk Server: Что же это такое?

Что такое Microsoft BizTalk Server?

Довольно веселый и простенький вопрос.

BizTalk позиционируется, как пакет для интеграции систем.

Что Microsoft вкладывает в понятие "интеграция", применительно к BizTalk?

1). Это обмен данными в разных форматах и по разным протоколам и стандартам. Имеются в виду как форматы данных, такие, как многочисленные текстовые форматы, SQL, Xml. Протоколы, такие, как HTTP, SOAP, SMTP, POP3, FTP, MSMQ, которые обычно включают в себя и стандарты форматов данных. Форматы приложений, таких, как, SAP/R3, Siebel и индустриальные стандарты, такие как EDI, SWIFT, HL7, HIPPA включают в себя форматы данных, протоколы, системы аудита, защищенности.
Иногда в понятие обмена данными вкладывается просто структурное преобразование данных между форматами (например, данные надо преобразовать из текстового формата в формат Xml) плюс использование нужного протокола обмена (пример, данные надо передать по протоколу SOAP, что означает преобразование данных в формат Xml, упаковку этих данных в SOAP-пакеты и использование протокола SOAP для отправки этих пакетов).
Иногда понятие обмена данными расширено настолько, что включает в себя стандарты безопасности, средства аудита, архивирования, синхронизации данных и т.п. К примеру, модули, ответственные за обмен EDI данными, представляют из себя сложные системы, состоящие из множества частей, удовлетворяющие множествам EDI стандартов. Одних только схем EDI в составе BizTalk поставляется несколько тысяч. Для обмена данных BizTalk включает в себя большое количество адаптеров, как простых (File, SOAP, FTP), так и супер-сложных (SAP, J.D.Edvards, HL7...).

2). Другая сторона обмена данных - это преобразование форматов данных. В BizTalk преобразование данных реализуется по простой идее: все внешние форматы данных преобразуются к одному внутреннему формату - Xml. Все адаптеры осуществляют такое преобразование, как в одну, так и в другую сторону. Сообщения в формате Xml описываются схемами - Xsd. Чтобы осуществить структурные преобразования, то есть когда требуется часть данных поменять местами, часть данных просто удалить и т.п, используется стандарт Xslt. Документ Xslt (карта - map) описывает, как исходный (source) XML документ преобразовывается в конечный (destination) XML документ. BizTalk имеет для этих целей два редактора: Schema Editor и Mapper. Первый редактирует и создает Xsd документы, второй - Xslt.

3). Microsoft добавило в BizTalk средства, которые имеют более широкое использование, чем просто обмен данными. Это Business Process Orchestration. Это инструментарий для создания бизнес процессов и для поддержки среды выполнения этих процессов. К примеру, нам потребовалось создать систему, координирующую продажи товаров. Сейчас система состоит из нескольких независимых приложений. Одно приложение этой системы инициирует обработку, например выдает счет на товары. Другие приложения отвечают за утверждение счета, комплектации заявки на отгрузку товара, комплектации отгрузки, обработки сопутствующих финансовых транзакций. Все эти приложения могут быть независимы друг от друга, могут даже принадлежать разным компаниям. В BizTalk можно создать координирующие программки, бизнес процесса, Orchestration, которые и управляют всеми приложениями. Запуск бизнес процесса, а значит и Orchestration инициируется одним из внешних приложений. Другие приложения добавляют в систему недостающие данные, а Orchestration интегрирует их в один бизнес процесс. Когда все данные введены и обработаны, Orchestration завершает процесс. Orchestration может ожидать данные от других программ дни, а то и месяцы. Интересность ситуации в том, что одновременно могут работать многие тысячи Orchestration для многих тысяч заявок.
Возникающие при этом проблемы очень интересны и в принципе элементарны, хотя на практике бывают сложны: это и обеспечение бесперебойного восстановления системы после неизбежных сбоев оборудования, и обеспечение стабильной работы большого количества приложений, обеспечение синхронизации тысяч документов, программ, партнеров и т.д. Простая интеграция, когда данные берутся из одного источника, преобразуются в формат другой программы и передаются этой программе, не решает проблемы асинхронной обработки. Что будет, если принимающая данные сторона временно не работает? Что делать, если исходная системы выдала несколько комплектов данных, а принимающая сторона все еще не работает или не успевает их принять в том же темпе? Business Process Orchestration помогает решить и эти проблемы.
BizTalk предоставляет среду, которая ответвечает за создание огромного количества процессов, за управление этими процессами. BizTalk предоставляет специальный редактор Orchestrations, позволяющий моделировать разнообразные бизнес процессы с помощью простых блок-схем.
Основное применение Orchestrations - координация обработки интегрируемых данных, а не только согласование форматов и протоколов передачи данных. Это консолидация данных из разных источников, реализация бизнес логики по промежуточной обработке данных, синхронизация данных из разных источников, поддержка транзакций и т.п. Создана теория и несколько стандартов, посвященных именно долгоживущим процессам, называющимися Long Running Transactions. Основные игроки в данном сегменте, это IBM, Microsoft, Siebel, TIBCO и ряд других.

Как видите, решаемые задачи объективно трудоемкие, что неминуемо и приводит к тому, что на этом рынке конкурируют всего несколько пакетов.

BizTalk можно рассматривать с двух сторон: С одной стороны - это инструментарий разработчика, включающий в себя многочисленные редакторы (схем, maps, Orchestrations...). Часть средств BizTalk работают, как независимые программы, часть, как дополнения к Microsoft Visual Studio.
С другой стороны - это среда выполнения, обеспечивающая работу разработанных процессов обработки данных. При этом среда выполнения обеспечивает очень высокую надежность обработки данных, очень высокую степень масштабируемости. Оптимальные системы работают и на одном компьютере, и на серверных фермах, состоящих из десятков и сотен серверов. BizTalk Server работает только в среде Windows и в качестве хранилища требует Microsoft SQL Server.

Один из нюансов использования BizTalk, требующий внимания, состоит в том, что он используется прежде всего для интеграции систем в автоматическом режиме, для интеграции программ с минимальным участием человека. Одни приложения поставляют данные, другие их потребляют. В промежутке располагается BizTalk Server, который согласовывает форматы обмена, координирует обмен данных и их обработку. Типичная система на базе BizTalk работает без участия человека. BizTalk – это типичная back-end система. Ее многочисленные и мощные средства для разработчика контрастируют с минимальным набором средств для оператора, которому надо лишь в ограниченных пределах наблюдать за работающей системой, подстраивать ее. В BizTalk есть четкое деление между средой разработки (development) и средой исполнения (runtime).

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

Типичные примеры использования BizTalk:

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

2) BizTalk процесс с определенной периодичностью запрашивает SQL базу на предмет появления новых данных. Процесс стартует, когда обнаруживаются новые данные. Процесс рассылает эти данные в другие приложения и ожидает от этих приложений ответа, что данные обработаны. Когда все ответы получены, данные в SQL базе помечаются, как обработанные.

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

4) Складская система на базе RFID (радио кодов). BizTalk процессы получают данные с RFID считывателей установленных на воротах склада, фильтруют их и передают данные в многочисленные складские приложения для учета и мониторинга движения товара.

-----------------------------------------------------------

[1] BizTalk Server – главная страница в интернете http://www.microsoft.com/biztalk/

[2] BizTalk Server документация на сайте MSDN http://msdn.microsoft.com/en-us/library/bb430723.aspx

[3] BizTalk datasheet: версии, цены, список адаптеров http://download.microsoft.com/download/c/2/2/c22737c1-707e-42a3-ae45-5df40973a0a7/BizTalk%202006%20R2%20Datasheet.pdf

3 comments:

wojzeh said...

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

но я не из пугливых - жду статью "просто о сложном бизтоке".

моя рыжая говорит, что усложнять - просто, а упрощать - сложно.

Leonid Ganeline said...

Я в свою очередь офигиваю от богатства и красочности втоих выражений. По-белому завидую.
Критику с радостью принимаю. Буду переделывать сейчас.
С упрощением я понимаю. Дабы как-то отвести от себя огонь, прошу посмотреть официальные странички БизТолка. Если там будет проще, то посыплю свою голову пеплом и застрелюсь. ;)
Спасибо еще раз!

wojzeh said...

1. либо точку, либо скобку используй для обозначения очередного пункта

2. микрософт добавила (она, компания)

3. хорошо бы давать ссылки на используемые термины, такие как xml и проч. по ходу дела.

4. обрати внимание, как оформляется "такие как" в предыдущем пункте.

5. ссылки делай ссылками, а не текстом.

6. отбивай параграфы новой строкой.

7. в смысл не вчитывался - оставил на сладкое.