Аналитики из Forrester Research оценивают, что в 2003 году рынок серверов приложений достигнет 2,5 млрд. долл. Нетрудно предположить, почему этот рынок столь велик. Сегодня любая компания должна учитывать в своем развитии фактор Internet, планировать и предоставлять удобный автоматизированный доступ к своим информационным ресурсам со стороны заказчиков и партнеров. Компания, которая не сделает этого, будет вытеснена с рынка. Любое предприятие обязано присутствовать в Internet, хотя бы статичной страничкой. Но только статики уже недостаточно — любой посетитель сайта ожидает увидеть услуги, предоставляемые компанией, которые, как правило, должны быть связаны с внутренней системой автоматизации предприятия. Для того чтобы это сделать, применяется специальное ПО — сервер приложений.
Сервер Baikonur может применяться при создании типичных приложений для менеджеров, например, для разработки сложного серверного приложения для оперирования информацией о заказах, клиентах и состоянии склада |
Сервером приложений называется программное обеспечение промежуточного слоя, находящееся в среднем звене между различными сетевыми клиентами (включая браузер) и приложениями бизнес-логики. Четкой границы провести здесь невозможно, поэтому некоторые аналитики утверждают, что только CORBA-совместимые серверы приложений могут называться серверами приложений, другие — что только серверы, поддерживающие спецификацию J2EE. С нашей точки зрения, очень просто определить, что такое приложение. Запустите на своем компьютере exe.-файл или программу на Visual Basic — эта программа и есть приложение. А сервер — программа, которая обслуживает удаленные запросы от многих пользователей. Правда, в случае сервера приложений, приложение обслуживает уже не одного пользователя, а многих. Соответственно, сервер приложений — это программное обеспечение, задача которого — поддержка аппарата запуска серверных приложений и передачи им запросов от удаленных пользователей. С нашей точки зрения, неважно, на каком языке программирования написаны эти приложения и при помощи каких библиотек и объектов созданы.
Пока аналитики спорили об определениях, мы строили свою технологию, а наши пользователи ставили нам оценки. Конечно же, мы не сдавали экзаменов, но конкурировать с сильными и крупными поставщиками можно было только, предоставляя заказчикам надежный продукт, удобную среду (и метафору!) разработки, качественную техническую поддержку. В некоторых случаях мы имели ощутимое преимущество. Команда разработчиков находится в Москве, поэтому нетрудно выслушать пожелания отечественных заказчиков и пойти им навстречу — добавить дополнительный нюанс в сервер или библиотеку, предложить пилотное решение и т.д. Однако как оказалось, в России наиболее важным преимуществом Baikonur является низкий барьер освоения продукта — разработчик может построить свое первое серверное приложение через 5 минут после установки сервера и библиотек. На западе для этого применяют термин Time To Market — скорость достижения готовности Internet-службы. В России это означает несколько иное: программисты могут очень быстро показать начальству результаты, и тогда им дают денег на развитие проекта и, даже, возможно, на обучение и дальнейшее освоение продукта.
Архитектура и основные идеи
Начиная с выпуска Baikonur Web Application Server, в компании Epsylon Technologies стремились сделать так, чтобы разработка приложений для Web стала довольно простым делом даже в случае очень сложной функциональности. Большинству предприятий, планирующих организовать свой корпоративный интерфейс в Internet, нет смысла уходить с головой в программирование. Так это происходит в случае использования механизмов CGI или ASP, либо серверов приложений, где разработка поручается системным программистам, способным написать километры кода на C++ или Java. Мы решили, что наиболее правильным решением будет использование визуальных компонентов построения серверных приложений аналогично тому, как применялись компоненты для архитектуры клиент-сервер. Мы не стали разрабатывать собственную среду программирования, а воспользовались тем, что имелось тогда на рынке — инструментарием Delphi и C++ Builder. Впоследствии планировалось использовать также и другие среды разработки, например, Java и Visual Basic.
В основе архитектуры Baikonur Application Server лежат три «кита»:
- универсальный Телемонитор Baikonur;
- Объектная Поверхность;
- Парсеры Протоколов.
Телемонитор Baikonur. Все серверные и клиентские продукты Epsylon Technologies построены на основе Телемонитора, который работает в качестве двунаправленного переключателя запросов и ответов (в отличие от простого сервера, функционирующего в режиме запрос-ответ). Телемонитор оперирует понятиями соединений, пользователей, сессий и транзакций.
Парсеры Протоколов. Телемонитор допускает одновременную асинхронную работу различных Internet-протоколов (http, ftp, gopher, finger, smtp, pop3, socks, iiop). Телемонитор переключает информационные потоки между специальными модулями парсеров (модулей разбора). Каждый парсер представляет собой набор логических алгоритмов для обработки описанных стандартами протоколов.
Объектная Поверхность. Эта метафора призвана упростить написание серверных приложений. Ввод-вывод каждого приложения производится при помощи самодостаточного набора (библиотеки) классов. Такие библиотеки определяют набор функциональных возможностей любого клиентского приложения или устройства. Для каждого типа устройства или клиента создается своя Объектная Поверхность и библиотека к ней. Для обычного браузера — библиотека HTML-компонентов, для Java — JAT-компоненты, для мобильных телефонов — WAP-компоненты, для Taxxi Communicator (клиентский продукт разработки Epsylon Technologies) — Taxxi-компоненты. Иногда требуется лишь небольшая модификация существующего набора, как, к примеру, в случае HTML-компонентов для приставок WebTV.
Объектная Поверхность приложения проецируется на клиентское приложение или устройство. Проецирование не обязательно осуществляется точно. Так, к примеру, функциональность компонента HTMLDBGrid (таблица, связанная с базой данных), гораздо шире, нежели его представление в браузере в виде HTML-таблицы и дополнительных скриптов. Однако наличие HTMLDBGrid позволяет разработчику не задумываться о том, как осуществляется запрос браузера к приложению, как осуществить запрос к базе данных, как упаковать ответ в шаблон и т.д.
Зачем разработчику нужны компоненты? Ответ прост — прежде всего, они повышают скорость разработки. К примеру, HTML-компоненты являются наследниками уже существующего набора компонентов в Delphi, поэтому перевод существующего в «настольном» варианте приложения в новую архитектуру не занимает много времени. Фактически, проектируя логику приложения для персонального применения, HTML, Taxxi Communicator или для мобильных телефонов, разработчик использует один и тот же подход: быстрое визуальное проектирование.
Компоненты и шаблоны
В ранних версиях Baikonur мы делали упор только на компоненты, в то время как большинство альтернативных серверов приложений опиралось на тот или иной способ подключения приложений к шаблонам. Мы уповали на скорость разработки логики приложения, а другие поставщики при помощи шаблонов предоставляли дизайнерам гораздо больше возможностей, чем в Baikonur. Мы считали, что специфику устройства ввода/вывода можно полностью выразить правильным подбором компонентов Объектной Поверхности (в данном контексте под устройством ввода/вывода понимается любая клиентская программа, скажем, браузер, или физическое устройство: сотовый телефон, карманный компьютер Palm). В результате, пользователями продуктов Epsylon Technologies были в основном крупные компании, для которых важна прежде всего скорость разработки, нагрузочная способность, быстродействие и надежность собственно сервера, а не дизайн. И это был явный недостаток Baikonur первых версий.
В Baikonur 2.0 концепция проекции Объектной Поверхности на устройство ввода-вывода было расширено возможностью проекции Объектной Поверхности приложения внутрь шаблона. Т.е. в соответствии с терминологией Epsylon Technologies шаблон тоже стал устройством ввода-вывода. Таким образом, при сохранении сильной особенности технологии Baikonur (визуальные компоненты), разработчики получили возможность возлагать задачу дизайна на дизайнеров. Ну а наша компания приобрела рынок публичных проектов в дополнение к освоенному корпоративному рынку, что тоже неплохо. Да и корпоративные заказчики теперь уделяют дизайну гораздо больше внимания.
В варианте Epsylon Technologies шаблоны интегрируются с приложениями, написанными компонентным способом, CGI-скриптами, с ISAPI-модулями следующим образом. Во-первых, в отличие от других серверов приложений, которые проповедуют свою собственную систему шаблонов (так, в Allaire ColdFusion — это CFML, Bluestone — Taglibs, в Zope — DTML), в Baikonur можно использовать любую систему шаблонов, в том числе свою частную, долгое время писавшуюся для частных случаев. Более того, можно использовать любую смесь из шаблонов. Результирующая страничка в Baikonur может состоять из частей, формируемых разными приложениями, CGI-скриптами, разными интерпретаторами шаблонов. Конечно, это не означает, что разработчики Epsylon Technologies взяли на себя обязанность поддерживать все существующие в мире шаблонные системы. Но некоторые завоевавшие популярность системы вполне имеют право на включение в комплект поставки, например, интерпретатор PHP.
Концепция безопасности
Когда мы говорим про безопасность, то должны точно знать что и от чего мы защищаем. При обращении пользователя к серверу защите подлежат три вещи: трафик между клиентской программой и сервером; приложения; пользователя следует защищать от возможного проникновения извне и запуска вредоносных программ у него на компьютере.
Baikonur позволяет использовать для шифрования трафика практически любой из известных на сегодняшний день протоколов защищенной передачи данных транспортного уровня. Это стало возможным благодаря введенной в версии 2.0 динамической транспортной подсистемы, предоставляющей администратору сервера средства создания защищенных серверов по основным высокоуровневым сетевым протоколам (HTTP, FTP, Finger, Gopher, DAAP, SOCKS) с использованием включенных в поставку модулей шифрования. Прикладной программист может разрабатывать собственные специфические системы шифрования. Динамическая транспортная подсистема позволяет подключать любые, в том числе сертифицированные модули шифрования трафика.
Сервер и серверные приложения защищаются от несанкционированного доступа при помощи системы аутентификации и введения системы прав и полномочий удаленного пользователя по доступу к ресурсам сервера (профиль безопасности пользователя). Если пользователю с именем «Петр Иванов» запрещено запускать задачу перевода средств со счета на счет, он не сможет этого сделать и даже никогда не узнает о существовании такой программы. Если же этому пользователю позволено запускать программу «просмотрщик секретных материалов», но запрещено иметь доступ к файлу «Ультрасекретные отчеты», то он сможет программу запустить, но получить доступ к файлу не сможет.
При использовании браузера пользователь, в зависимости от установленных опций, может загрузить к себе на компьютер управляющие директивы ActiveX или Java-апплеты. Это происходит, когда выразительных средств HTML и интерактивности HTML-приложений не хватает для обеспечения удобного интерфейса. Потенциально это может нанести вред пользователю, поскольку любая загрузка активного кода на компьютер — это возможное внедрение кода злоумышленника. Поэтому в Epsylon Technologies был разработан специальный защищенный браузер Taxxi Communicator, который не грузит активный исполняемый код в сеансе пользователя с сервером. Между сервером и коммуникатором передаются только XML-пакеты синхронизаций объектных поверхностей клиентского и серверного приложения. Такие XML-пакеты представляют собой пассивные описания, а не исполняемый код, поэтому пользователь может быть уверен в безопасности своего компьютера. Трафик обмена данными между Taxxi Communicator и сервером может быть защищен шифрованием.
В то же время Taxxi Communicator дает возможность серверному приложению иметь пользовательский интерфейс, обладающий не меньшей выразительностью, чем у обычного настольного приложения. Фактически обычное настольное приложение (например, для работы с корпоративным сервером данных) и серверная программа с точки зрения пользователя и выглядят и действуют одинаково. Но серверное приложение физически выполняется под управлением сервера приложений, публикуя свой пользовательский интерфейс на пользовательском компьютере. Например, корпоративная система КИВЦ «Аэрофлот — Российские международные авиалинии», использующая Baikonur SuperServer при построении корпоративной intranet-сети, выполнена именно по этой технологии.
Существует еще ряд систем, созданных при помощи Taxxi, к примеру, биллинговая система InterBill, используемая для тарификации междугородних переговоров и система бухгалтерского учета InterBuh. Два этих продукта созданы компанией Niklaus и внедряются сегодня на различных российских предприятиях. Привлекательность этих систем состоит в минимальном администрировании клиентских мест и надежной защищенности.
Масштабируемость, быстродействие и надежность
Тестирование сервера Baikonur проводилось в Европейской тестовой лаборатории Intel. Результаты показали, что на ПК-сервере с четырьмя процессорами Pentium Pro/200 МГц в локальной 100-мегабитной сети сервер отработал 10 тыс. одновременных запросов, генерируемых тестовыми клиентами. Сервер показал также практически линейную зависимость увеличения производительности от количества процессоров на сервере, что говорит о хорошей распараллеливаемости внутренних алгоритмов.
Сервер компании EpsylonGames.com (Нью-Йорк), построенный на базе одной двухпроцессорной машины с Windows NT с процессорами Pentium II/500 МГц и Baikonur SuperServer 2.0, ежедневно обслуживает запросы от 25 000 уникальных пользователей, генерирующих от 50 до 300 запросов за сеанс. На сервер ложится ежедневная нагрузка по обслуживанию до 1,5 млн. запросов в сутки. На 97% это запросы к серверным приложениям, работающим с центральной базой данных, установленной на другом компьютере. Количество уникальных пользователей www.epsylongames.com примерно в два раза меньше чем, например, на популярном портале Lenta.ru, но средний пользователь генерирует в 10-20 раз больше запросов.
Состав поставки и требования к аппаратуре
Baikonur поставляется в двух вариантах: Baikonur Enterprise Web App Server (BEWAS 2.0) и Baikonur SuperServer (BSS 2.0). BSS 2.0 входит в BEWAS, как составная часть. Требования к аппаратуре самые минимальны: сервер работает без особого напряжения даже на компьютере с процессором 486-DX/66 МГц с 24 Mбайт памяти, хотя, естественно, при высокой нагрузке лучше применять двух- или четырехпроцессорный сервер с памятью емкостью 256-512 Mбайт. Taxxi Communicator также может работать на упомянутой минимальной конфигурации или даже с еще меньшей оперативной памятью.
В стандартный комплект поставки Baikonur входит модуль поддержки восстановления работоспособности, а модули балансировки загрузки, не входящие в комплект поставки, доступны по отдельному запросу.
BEWAS 2.0 включает:
- сервер с поддержкой http, ftp, gopher, finger, telnet, SSL 2, SSL 3, TLS 1, виртуальных серверов и шаблонов;
- библиотека компонентов для написания HTML-приложений HTMLLib для Delphi и C++ Builder в исходных текстах;
- библиотека классов для C++, Baikonur Foundation Classes 2.0, без исходных текстов;
- административная утилита Admin Utility, позволяющая администрировать без перезагрузки сервера.
BEWAS 2.0 и BSS 2.0 совместимы со стандартными анализаторами журнальных файлов наподобие WebTrend, LiveStats и т.п.
В дополнение к программам и службам, поставляемым в рамках BEWAS 2.0, вариант BSS 2.0 предусматривает:
- возможность работы с Taxxi-приложениями, Taxxi Communicator 2.1 и Taxxi Components — библиотеку компонентов (Delphi, C++ Builder) для написания серверных приложений для Taxxi Communicator;
- WAP Components — библиотека компонентов (Delphi, C++ Builder) для написания серверных приложений для мобильных телефонов и карманных органайзеров;
- исходные тексты для BFC 2.0;
- Personal Baikonur и лицензию на неограниченное применение Personal Baikonur в собственных клиентских решениях (к примеру, с помощью Personal Baikonur и BFC можно написать нечто вроде Taxxi Communicator);
- Protocol SDK — библиотека классов C++ для написания собственных парсеров протоколов;
- парсеры SMTP, POP3 и DAAP;
- Mail SDK — библиотека (Delphi, C++ Builder) для разработки почтовых приложений (почтовые роботы, сортировщики, списки рассылки);
- Transport SDK — библиотека для разработки и подключения модулей шифрования и расширенную утилиту Admin Utility.
Интегрируемость и поддержка стандартов
Baikonur поддерживает множество стандартов. Некоторые из них поддерживаются непосредственно, например, Http 1.1, gopher, finger, Smtp, POP3, а другие — в библиотеках: HTML 3.2, HTML 4.0, XML, WAP 1.3. или через встроенную поддержку стандартов в средствах разработки: Delphi, C++ Builder, Visual C++ для COM и CORBA. Через средства поддержки баз данных (Delphi и C++ Builder) серверные приложения Baikonur могут работать с Oracle, InterBase, Informix, DB/2, Microsoft SQL Server и другие, доступные через ODBC или при помощи прямых ссылок.
Рис. 1 Архитектура Baikonur Application Server |
Когда заказчик выбирает продукт — первое, что его интересует, это насколько можно совместить разные системы, базирующиеся на разных технологиях и продуктах. К примеру, на предприятии уже существует корпоративный Web-сайт, который сделан на основе Apache. Как впишется в уже существующее хозяйство Baikonur, не придется ли что-то переделывать? Как совместить корпоративную информационную систему и сервер приложений? Даст ли это что-нибудь сотрудникам предприятия? Насколько тяжело сопровождение и обучение новым технологиям?
Baikonur Server вписывается в существующую корпоративную инфраструктуру и может работать, не требуя установки отдельного Web-сервера, а может подключаться в качестве сервера приложений, используя Apache или IIS в качестве фронтального сервера, который принимает на себя все внешние запросы. При этом серверу Baikonur непосредственно адресуются только его запросы, направленные к приложениям, а с точки зрения пользователя корпоративный сайт выглядит, как единое целое, несмотря на то, что Apache может быть установлен на UNIX-машине, а Baikonur — на машине под управлением Windows NT.
Примеры разработки приложений
На рис. 2 приведены образцы экранов популярных сайтов www.karaoke.ru и www.epsylongames.com, обслуживающих большое количество пользователей, работающих с серверными приложениями и базами данных.
Рис. 2. Образцы экранов популярных сайтов www.karaoke.ru и www.epsylongames.com, обслуживающих большое количество пользователей, работающих с серверными приложениями и базами данных |
Сервер Baikonur может применяться при создании типичных приложений для менеджеров, например для компонентной разработки сложного серверного приложения для оперирования информацией о заказах, клиентах и состоянии склада. На рис. 3 приведен момент разработки такой же службы, но для карманного органайзера Palm VII. Изобразительные возможности этого устройства несколько хуже, чем у ПК, но при помощи компонентов удается реализовать требуемую функциональность.
Рис. 3. Компонентная разборка для Palm VII |
Гораздо сложнее реализовать пользовательский интерфейс для мобильного телефона, однако, при помощи WAP-компонентов удается сделать и это. На рис. 4 изображен момент разработки такой же службы для мобильных телефонов. Именно системы, информирующие о текущем состоянии бизнеса, наиболее интересны в WAP-проектах.
Рис. 4. Реализация пользовательского интерфейса для мобильного телефона |
Инструменты разработчиков
В поставку Baikonur 2.0 входит библиотека классов для C++ Baikonur Foundation Classes, предназначенная для опытных разработчиков. До сих пор эта библиотека находилась во внутреннем использовании Epsylon Technologies; именно при помощи этой библиотеки были написаны Taxxi Communicator и серверные библиотеки. Теперь эта библиотека открывает новые возможности для разработчиков, в частности, написание сложных быстродействующих серверных приложений, а также написание новых типов клиентов (например, уровня Taxxi Communicator).
Направление развития
Рынок меняется — меняются требования к инструментальным средствам. Если сейчас спросить потенциального заказчика, для чего ему Internet, большинство ответит: «для бизнеса». Поэтому свои продукты Epsylon Technologies так и позиционирует, как основу и инструментарий к ней для бизнес-присутствия предприятия в Internet. Однако для того, чтобы облегчить построение бизнеса в Internet с учетом современных требований мало одного лишь сервера приложений с возможностью делать приложения для HTML — необходима цельная платформа, с предоставлением различных протоколов и архитектур, клиентов и серверов. Сегодня Baikonur постепенно превращается в Internet платформу обеспечения бизнес-присутствия корпорации в Internet. Именно поэтому в Baikonur SuperServer появились Taxxi- и WAP-компоненты, некоторые низкоуровневые средства, позволяющие заказчику быстро адаптироваться в быстроменяющемся мире, где требуется обеспечивать совместимость информационной системы с новыми протоколами и технологиями.
Один из наиболее важных приоритетов развития Epsylon Technologies — это расширение Taxxi Communicator для придания этому продукту свойств персонального интегратора различных потоков бизнес-информации. С этой целью Taxxi Communicator оснащается поддержкой новых протоколов, возможностью взаимодействия peer-to-peer — «каждый с каждым», без центрального сервера. В Taxxi Communicator 3.0 будет возможность смены внешнего вида, а разработка приложений и другого интеграционного контента уже не будет уделом профессионалов, а станет не сложнее, чем разработка таблицы в Microsoft Excel. Продукт будет нацелен в большой степени на аудиторию квалифицированных непрограммистов, что ново для Epsylon Technologies. Однако модную сегодня аббревиатуру B2B все чаще произносят именно непрограммисты, и мы надеемся, что Taxxi Communicator станет интеграционной основой для построения персонального бизнес-пространства в Internet. А серверные продукты Epsylon Technologies обеспечат стыковку персонального бизнес-пространства с корпоративными источниками данных и приложений и с другими источниками приложений в Internet.
В 2001 году Epsylon Technologies планирует выпустить Unix-версию Baikonur, а также ввести поддержку Java и Visual Basic.
Рынок технологий, обеспечивающих взаимодействие бизнеса с заказчиками и партнерами, представляется нам наиболее перспективным. Поэтому компания не будет ограничиваться выпуском только сервера Web-приложений, а планирует вывести на рынок весь спектр серверных и клиентских продуктов для построения технологической платформы для поддержки мелкого, среднего и крупного бизнеса.
Александр Сергеев (aes@demo.ru), Александр Хорошилов (hor@demo.ru), Андрей Дементьев (adem@demo.ru), Антон Шутов (anton@demo.ru) — сотрудники компании Epsylon Technologies.
В орбите Baikonur
Продукты семейства Baikonur работают на предприятии ОАО «Электросвязь» (г. Улан-Удэ) уже четыре года и дали возможность для достаточно простого и быстрого способа публикации баз данных в Internet/intranet. C помощью этого сервера приложений была создана информационно-справочная служба, корпоративная служба сбора финансовой информации от филиалов, несколько web-серверов, в том числе таких крупных, как www.midi.ru, www.karaoke.ru, www.bol.ru.
С начала 1998 года ОАО «ЛУКойл» использует Baikonur Enterprise App Server для создания intranet-системы сбора и отображения отчетной информации в рамках компании. Сегодня система работает в режиме промышленной эксплуатации и решает вопросы доступа к информации и конфиденциальности данных.