Lotus Notes: все же реальность
АрхивВ "КТ" #427 была опубликована статья Андрея Акопянца "Lotus Notes: миф и реальность", в которой по вине автора и редакции был допущен ряд фактических ошибок. Публикация вызвала шквал откликов, причем большинство из них представляли собой не возмущенные письма, а статьи, в которых рассматривались разнообразные аспекты использования Lotus Domino/Notes. Одно из писем мы и публикуем сегодня.
В «Компьютерре» #427 была опубликована статья Андрея Акопянца «Lotus Notes: миф и реальность», в которой по вине автора и редакции был допущен ряд фактических ошибок. Публикация вызвала шквал откликов, причем большинство из них представляли собой не возмущенные письма, а статьи, в которых рассматривались разнообразные аспекты использования Lotus Domino/Notes. Одно из писем (в сокращенном варианте) мы и публикуем сегодня. С его полной версией, равно как и с другими, вы сможете ознакомиться на сайте «Софтерра» в рубрике «Офисные приложения» - Сергей Scout Кащавцев.
Немного истории
В основу технологии легла система PLATO Group Notes, функционировавшая на мэйнфреймах. Созданием системы, основанной на подобных же принципах, но предназначенной для персонального компьютера, занялась команда разработчиков Group Notes во главе с Рэем Оззи (Ray Ozzie), которого называют теперь отцом Lotus Notes. Для разработки ПО нового типа, при финансировании Lotus Development, в 1984 году была создана компания Iris Associates.
Notes разрабатывался пять лет, и, что интересно, с самых ранних бета-версий продукт начал использоваться для организации документооборота внутри самой Iris. Соответственно, разработчики могли сразу определить слабые места своего проекта и добавлять функциональность, необходимую в реальной работе. Так, например, когда понадобилось синхронизировать данные между двумя офисами, был создан механизм репликаций (синхронизации данных между удаленными компьютерами).
Первая версия была выпущена в 1989 году, причем продажи начались еще до официального выхода релиза: глава компании Price Waterhouse Coopers под впечатлением от возможностей продукта принял решение о приобретении 10 тыс. лицензий. Интересно, что изначально Lotus Notes не был ориентирован на небольшие компании - приобрести можно было не менее двухсот лицензий; правда, в следующих версиях позиционирование продукта было изменено.
В 1996 году Lotus Development была приобретена корпорацией IBM, в основном, конечно, именно из-за Lotus Notes. Эта сделка позволила выделить дополнительные средства на разработку, что положительно сказалось на качестве и объемах продаж продукта.
Надо сказать, что кроме Notes в арсенале Lotus Development были и другие программные продукты, например SmartSuite - пакет офисных приложений, прямой конкурент MS Office. В настоящее время развитие SmartSuite прекращено. Тем самым IBM-Lotus практически признали монополию Microsoft на этот тип приложений, а усилия разработчиков Lotus Development сосредоточились на развитии технологии Notes и продуктов, поддерживающих эту технологию или базирующихся на ней.
Из чего состоит и как работает Lotus Notes
Lotus Notes - это клиент-серверная СУБД, имеющая нереляционную структуру. Единицей хранения в БД является «объект» 1. Содержанием «объекта» могут быть данные Notes (в терминологии Notes - «документы»), служебные данные и… код приложений Notes. Да-да, код приложений хранится в самой БД, и если разработчики поменяли его на сервере, то все пользователи со своих клиентских мест сразу же после этого начинают работать с обновленным приложением. Таким образом, у системных администраторов отпадает необходимость размножать код приложений по рабочим станциям: достаточно один раз установить клиентское рабочее место Notes и больше не беспокоится о том, что приложения меняются. Эти заботы возьмет на себя Lotus Notes.
Единицей хранения данных в документе Lotus Notes является поле. В одном документе могут храниться поля различных типов и, что гораздо интереснее, различных размеров и размерностей. То есть поле может содержать данные стандартных типов, форматированный текст (rich-text), любые файлы, OLE-объекты и даже форму, по которой нужно отображать документ.
Клиентское рабочее место Lotus Notes подключается к серверу Lotus Notes 2. Клиент - это приложение с графическим интерфейсом, тогда как сервер - приложение консольное. В отличие от других систем, позиционирующихся в той же нише, в основе Notes не лежит почтовая служба. Базовым механизмом является система доступа к данным, хранимым в БД. Между собой клиент и сервер Lotus Notes общаются по протоколу NotesRPC. На сервере независимо друг от друга функционируют задачи-демоны Lotus Notes. Их независимость (по коду и по занимаемой памяти) позволяет серверу Lotus Notes легко распределять задачи по нескольким процессорам и сильно облегчает жизнь системному администратору.
На клиенте же функционирует графическая оболочка пользователя, которая по мере необходимости тоже может запускать задачи-демоны, аналогичные серверным.
Что умеет
Аутентификация пользователей базируется на механизме электронной подписи. При регистрации в системе пользователю выдаются необходимые ключи, а все остальные участники (серверы и клиенты) получают возможность контроля. При проверке прав пользователя, сначала проверяются права на доступ к данному серверу, потом - права на доступ к конкретной БД, и далее - права на работу с отдельной записью в этой БД 3. Все проверки производятся на сервере, поэтому взламывать клиента Notes бесполезно. Отношения между серверами строятся по той же схеме: каждый из серверов Notes рассматривает другого, как еще одного клиента.
Может сложиться впечатление, что такое нагромождение проверок сильно замедляет работу, но шифрование и цифровая подпись использовались в Notes с самой первой версии, и защищенность данных уже давно стала одной из особенностей системы, а все алгоритмы разрабатывались с учетом быстродействия систем на 286-х процессорах под однозадачной DOS.
Шифровать в Notes можно все - и данные (как БД целиком, так и отдельные документы или поля), и трафик, и электронную почту. Если пользователю недостаточно тех ключей, которые ему предлагает Notes, он может создавать, импортировать, экспортировать и обмениваться с остальными пользователями другими, дополнительными ключами.
В состав базовой поставки Notes входят электронная почта, а также групповой планировщик, который позволяет эффективно планировать график жизни даже территориально распределенного трудового коллектива.
Одной из базовых технологий является репликация. В конце 1980-х, когда она создавалась, самыми распространенными устройствами для связи были телефонные линии и модемы с черепашьей скоростью. Разработчики Notes сумели создать технологию, которая работала даже на такой скорости, и сейчас благодаря качеству и гибкости настроек система репликации Lotus Notes является самой нетребовательной к ресурсам 4. Используется она в первую очередь для того, чтобы удаленные друг от друга компьютеры (как клиенты, так и серверы Notes) могли синхронизировать общие данные. При репликации соблюдаются все правила политики безопасности, причем наравне с данными реплицируется и код.
Еще одной ключевой особенностью технологии Lotus Notes является быстрая разработка и быстрое внедрение приложений, благодаря в том числе и тому, что на рабочее место пользователя нужно установить лишь клиента Notes. Набор приложений, к которым он имеет доступ, определяется лишь изменениями в политике безопасности с рабочего места администратора, а в удаленные офисы политика безопасности поступает также по механизму репликации и немедленно вступает в действие. Может показаться что «быстрая» - значит «сделанная в спешке», «некачественная». Ничего подобного! Система так построена (имеет такие базовые возможности), что функционально сложные, полноценные приложения получаются готовыми и внедренными в очень сжатые сроки.
Клиент Notes действительно нельзя назвать «тонким», но его основное достоинство в том, что для работы не только с почтой, но и со всеми приложениями Notes вовсе не обязательно подключаться к серверу. Клиент, по сути, представляет собой сильно облегченный сервер Notes и имеет в своем составе набор инструментов, необходимых для полноценной офлайновой работы. Таким образом, для работы с удаленной системой пользователю совершенно необязательно быть подключенному к ней постоянно - достаточно подключаться по мере необходимости, для того чтобы синхронизировать данные.
С кем и как «дружит» Lotus Notes
Во-первых, в Lotus Notes обеспечивается стопроцентная совместимость по данным «снизу вверх». Это означает, к примеру, что конфигурации «клиент 1.0 - сервер 5.0» или «сервер 5.0 - клиент 1.0» одинаково работоспособны. Задача администратора - обеспечить их работу по одному сетевому протоколу, но и это не проблема. Поддерживаются TCP/IP, IPX/SPX, NetBIOS (NetBEUI), Banyan Vines, прямое модемное подключение. Клиент Notes существует для Windows 5 и для Mac OS. Серверы Lotus Notes - для Windows NT/2000, Linux, Sun Solaris SPARC, OS/2, AIX, HP-UX, AS/400 и OS/390.
Кроме почты Notes, поддерживаются такие почтовые стандарты, как SMTP, POP3, IMAP4. К адресной книге Notes можно получить доступ по протоколу LDAP. С данными на сервере Notes можно работать (кроме клиента Notes) через браузер: Notes поддерживает протокол HTTP. Естественно, возможности браузера и других почтовых систем ограничены по сравнению с клиентом Notes, но для устранения этих отличий можно установить пакет iNotes, который доводит функциональность браузера и почтового клиента до полноценного рабочего места Notes.
Несколько серверов Notes можно объединить в кластер, который будет обеспечивать работу пользователей и доставку почты при сервисных работах или сбое на одном из серверов и равномерно распределять нагрузку между всеми серверами в кластере. Причем для того, чтобы серверы Notes работали как кластер, нет необходимости, чтобы это был кластер операционной системы или аппаратной платформы. Более того: серверы - члены кластера Lotus Notes - могут строиться на разных аппаратных и программных платформах и иметь разные версии. Для пользователей переключение на другой сервер в кластере происходит прозрачно.
Notes поддерживает интеграционные технологии: OLE, COM, DDE, ODBC, XML, Corba, а также имеет возможность прямой работы с четырьмя реляционными СУБД - MS SQL, Oracle, Sybase, DB/2. Существуют коннекторы и к ERP-системам, но в составе базового продукта они не поставляются.
Разработчики приложений могут выбирать любой из встроенных языков программирования: Lotus Script (диалект Visual Basic), Java Script, язык формул 6 или внешние языки разработки, для которых есть интерфейсы библиотек - Notes C++ API и Java. На самом деле для создания простейших приложений достаточно базовых знаний пользователя ПК: для поддержки этого существует язык «простых действий», в котором пользователь может «мышкой» с использованием «Помощников» построить схему обработки документа (если, конечно, ему это позволено по уровню доступа), а то, что не получиться сделать «мышкой», дописать на @-формулах. Язык простых действий, конечно же, не позволяет реализовать все возможности платформы, но в нем можно настроить, например, условия, по которым будет выполняться то или иное автоматическое действие или отбор документов для отображения пользователю, обработка и отправка почты, процедуры создания и модификации документов, реакция на приходящие письма и многое другое. Здесь можно провести аналогию по функциональности и сложности программ с тем же MS Excel, в котором для простых задач есть язык формул, а для более сложных - Visual Basic for Applications.
Разработка приложений Notes под Web имеет свои особенности, отличающие ее от остальных методов разработки интерактивных Web-сайтов, но те возможности, которые она предоставляет, стоят того, чтобы использовать именно эту технологию. Ведь HTTP для Notes - не внешний протокол, в который нужно транслировать данные из БД, а просто еще один, «родной» для системы интерфейс к данным и коду, помимо стандартного клиента Notes (рис.1, 2).
Есть ли недостатки
А как же! Систему писали люди, а человек - грешен по определению. Так что не реже раза в квартал разработчики выкладывают сервис-паки на сайте www.notes.net.
Есть и ограничения, связанные с архитектурой, которые сужают область применения Lotus Notes. На базе этой технологии не стоит создавать приложения, связанные с проведением расчетов по большим массивам данных, - например, финансовые. Не следует использовать Lotus Notes и для организации больших хранилищ данных. По собственному опыту знаю, что подавляющее большинство проблем (помимо недостатка знаний) с эксплуатацией Lotus Notes происходит из-за того, что пакету поручают выполнять не ту работу, для которой он предназначен. Иногда Notes неправильно позиционируют в противовес MS SQL: на самом деле, у этих продуктов разные ниши, и наилучшее решение - их интеграция, когда каждый из них занимается тем делом, которое выполняет лучше.
При разработке приложений Notes под WWW (либо для Notes и WWW одновременно) желательно заранее подумать об этом, так как далеко не весь код, исполняющийся в Notes, может быть оттранслирован для исполнения в браузере. Но касается это только кода, так что, если вдруг появилась необходимость использования Notes-приложения по протоколу HTTP, можно дописать соответствующую часть приложения, а с данными проблем не возникнет.
Клиент Lotus Notes для Windows (без рабочих мест разработчика или администратора) занимает на диске около 100 Мбайт. Не слишком «легкое» решение, если использовать только функции электронной почты. Так что, если вы не пользуетесь богатыми возможностями Lotus Notes, я первый порекомендую вам подумать либо о смене решения, либо… все же о том, чтобы начать этими возможностями пользоваться.
Интерфейс почтовой подсистемы отличается от привычного многим интерфейса Outlook. Это не значит, что интерфейс Outlook идеален и неповторим (еще как повторим! причем стандартными средствами Notes; см. рис. 3). Стоит привыкнуть к интерфейсу Notes, чтобы понять, что при интенсивной работе с большим количеством сообщений он удобен, и как минимум не хуже, чем MS Outlook или Outlook Express.
Идем дальше. Специалисты по Lotus Notes традиционно обходятся дороже процентов на двадцать, чем специализирующиеся на более распространенных программных продуктах. Если же переучивать специалистов (программистов и проектировщиков) по другим платформам, нужно быть готовым, что им потребуется некоторое время, чтобы освоить архитектуру Lotus Notes. Как показывает практика, применение навыков разработки или проектирования, полученных, скажем, на MS SQL, может привести к тому, что приложения будут чужды среде их исполнения. Речь идет о «скользких» местах системы, с которыми знаком каждый разработчик: «Так не делать, а здесь нужно обходить вот так». Так вот: очень часто в Lotus Notes следует делать именно «так», как не стоит делать в SQL. Верно и обратное. Для профессиональных разработчиков это может оказаться сложным испытанием - вдруг осознать, что немалая часть интеллектуального багажа здесь не может быть применена. Однако, как только специалист поймет, чем разнится подход к проектированию систем на Notes, все пойдет как по маслу.
Проблемой также является и сравнительно слабая поддержка продвижения продукта на рынке российским представительством IBM-Lotus. Очень мало литературы по Lotus Notes издано на русском языке, количество информационных публикаций в компьютерной прессе стремится к нулю. Техническая литература переиздается с большой задержкой после представления новых версий продукта. А ведь именно отсутствие такой поддержки вендора порождает ситуации, когда любой миф может быть воспринят как прорыв информационной блокады!
И наконец, мне кажется недостатком то, что почти все, кто найдет силы разобраться в том, что такое Lotus Notes и какие результаты можно получить с его помощью, становятся «адептами культа Notes». Почему так происходит - тема отдельной дискуссии (некоторые возможности системы я до сих пор считаю волшебными!), а вот проблема мне здесь видится в том, что иногда такому «адепту» нужно вовремя остановиться, чтобы не заставить свое «божество» выполнять несвойственную ему работу.
Что с этим всем можно делать
Сила Lotus Notes - не только в продвинутой почте и групповом планировщике.
С его помощью можно создавать приложения, автоматизирующие сбор, сортировку, хранение и доставку информации с развитой системой оповещений и уведомлений, с высокой степенью защищенности, с возможностью интеграции с большинством реляционных систем, ERP-системами, наиболее распространенными desktop-приложениями. Notes также позволяет сравнительно просто организовать интерактивный web-сайт с аутентификацией пользователей и разделением прав доступа до уровня отдельной записи. Благодаря этим возможностям, предоставляемым одним продуктом в базовой конфигурации, на Lotus Notes строятся интегрированные, обращенные как внутрь компании, так и вовне, защищенные корпоративные системы.
То, что Lotus Notes имеет нереляционную структуру, позволяет при проектировании и разработке гибко подходить к процессу совместной работы распределенного коллектива - например специалистов «на выезде» с ноутбуком или большого числа удаленных филиалов (складов, представительств и пр.), которые не имеют возможности подключиться по быстрой выделенной линии (как того требуют системы реляционных СУБД) и имеют один маломощный компьютер.
Если схема документооборота на вашем предприятии родилась в тяжелых трудовых буднях, а не построена на основе какого-нибудь российского ГОСТа или иностранного стандарта, то, скорее всего, реализацией именно вашей схемы еще никто не озаботился. Вы, конечно, можете пойти по модному пути «реинжиниринга» и адаптировать рабочие будни предприятия под некий стандарт или схему, для которой уже существует система автоматизации. Но обычно поступают по-другому: покупают систему, которая наиболее соответствует схеме работы предприятия, а различия устраняют либо силами собственных специалистов, либо заказывают доработку у разработчика системы. Существует немало бизнес-партнеров компании IBM по продукту Lotus Notes, занимающихся как внедрением существующих приложений, так и разработкой заказных решений. С их списком можно ознакомиться на сайте www.lotus.com/russia.
В дистрибутив Notes входит набор шаблонов для простейших схем документооборота. Сразу после установки можно начинать работу с этими приложениями. А многие разработчики Notes начинали с того, что добавляли в стандартный шаблон необходимые функции и получали готовое приложение, которое тут же и внедрялось. Вообще, Lotus Notes относится к средствам «быстрой разработки»: он дает возможность разрабатывать и внедрять приложения ощутимо быстрее, нежели в других системах автоматизации на других платформах. Многие ИТ-менеджеры недооценивают достоинства быстрой разработки, но представьте: вместо того, чтобы в ожидании первых работающих приложений кормить топ-менеджеров «завтраками» (что их сильно раздражает), в кратчайшие сроки после получения задания предоставить уже работающие элементы системы.
Резюме
Слухи о «смерти» технологии Lotus Notes явно преувеличены - на подходе уже новая, шестая версия продукта, от бета-версий которой у специалистов уже текут слюнки. Lotus Notes - незаменимая технология для того, чтобы все пользователи корпоративной системы документооборота чувствовали себя в любом месте земного шара так же уверенно, как в офисе среди коллег, чтобы руководитель, находясь в отъезде с ноутбуком, получал любые отчеты с такой же оперативностью и в таком же виде, как и при подключении к локальной сети, нажимая всего одну кнопку «Соединиться с офисом», и мог бы работать с информацией именно в тот момент, когда она нужна.
А на вопрос: «Кто сильнее - слон или кит?» - правильный ответ таков: «кит» никогда не догонит «слона» на суше, а «слон» никогда не будет чувствовать себя, «как рыба в воде». Сравнивать платформы для создания решений бесполезно - можно сравнивать решения, которые получаются на базе этих платформ.
Большое спасибо Андрею Акопянцу! Именно его материал стал основным побудительным мотивом к написанию этой статьи. Спасибо моим коллегам С. Карандину и М. Салимову за идеи, без которых эта статья была бы другой и по сути, и по содержанию. Спасибо А. Линеву и его команде за поддержку при написании статьи.
1 (обратно к тексту) - Lotus Notes не является объектной СУБД, поэтому слово «объект» я беру в кавычки, дабы оно не было принято за термин.
2 (обратно к тексту) - На самом деле сервер называется Domino, однако я неоднократно сталкивался с тем, как трудно интуитивно воспринять, что «клиент Lotus Notes работает с сервером Domino». Поэтому, упоминая сервер Domino, я буду говорить: «сервер Lotus Notes» - подразумевая, что это «сервер, к которому подключаются клиенты Lotus Notes».
3 (обратно к тексту) - Можно также управлять и доступом на изменение отдельных полей.
4 (обратно к тексту) - Приходилось слышать жалобы на то, что репликация начинает пожирать ресурсы каналов, при этом почти всегда оказывалось, что репликация настроена неверно для данной задачи.
5 (обратно к тексту) - 95, 98, ME, NT, 2000, XP - на этих версиях Windows исполняется последняя версия клиента Notes.
6 (обратно к тексту) - Разработчики называют его @-formulas, «язык эт-формул». Он похож на язык формул MS Excel, но каждая команда в нем начинается с символа @; в нашей стране он, естественно, получил название языка «собакоформул».