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

Практика

В ходе эволюции ряда проектов, выполняемых в ПКТБ ЦКИ, происходили изменения среды разработки и требований к используемому инструментарию, что повлекло за собой необходимость проработки вопросов применимости выбранного инструментария в новых условиях. Система IBM Rational ClearCase показала высокую гибкость при конфигурировании, но возник и ряд проблемных ситуаций. В частности, выяснилось, что штатными средствами ClearCase затруднительно организовать полноценное взаимодействие из столичного офиса ПКТБ ЦКИ с серверами файлового репозитория, развернутого на территории ПКТБ ЦКИ в Домодедово. В условиях недостаточно устойчивого канала связи с низкой пропускной способностью стандартные клиентские приложения ClearCase работали с большими задержками и нестабильно, а в случае применения «легкого клиента» не обеспечивали нужной функциональности. Все это потребовало реализовать и отладить новые способы доступа к ресурсам ClearCase.

В ClearCase предусмотрено три клиентских приложения: ClearCase Native Client (Native CC) – группа Windows-приложений, включающих как инструменты с графическим интерфейсом, так и утилиты, работающие в командной строке; ClearCase WebClient (CCWeb) – Java Web-приложение, работающее с ClearCase Web Server; ClearCase Remote Client (CCRC) – Java-клиент на платформе Eclipse. Приложение Native CC следует признать лидером как по функциональности и производительности, так и по удобству использования, причем наиболее мощным функционалом обладают входящие в комплект утилиты командной строки. Однако Native CC обеспечивает работу только в домене Windows, где развернут репозиторий, или в домене, с которым настроены доверительные отношения. Необходимо отметить, что при создании доверительных отношений между доменами основной и удаленной организаций требуется поддерживать высоконадежный защищенный скоростной канал связи. Даже при незначительных сбоях возникают проблемы с авторизацией между доменами, приложение начинает работать медленно и с ошибками, а обеспечить надежную связь удается далеко не всегда.

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

Если приходится иметь дело с множеством малых офисов или с работающими дома сотрудниками, то дешевле и проще посредством Web-клиента (CCWeb) или CCRC организовать взаимодействие каждого рабочего места разработчика с центральным репозиторием. CCWeb значительно уступает CCRC по функциональности, а также имеет ряд существенных недостатков, например этот клиент не работает с современными версиями Java-машины.

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

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

Облик системы удаленного доступа

Одним из очевидных вариантов реализации полнофункционального удаленного доступа является использование Native CC в режиме терминального доступа. Главная проблема здесь заключается в том, что терминальный доступ не ориентирован на передачу большого объема информации между клиентской машиной и сервером, в частности не предполагается возможность досылки частично переданных файлов при обрыве связи. Можно, конечно, организовать передачу файлов через FTP, однако удобство работы в этом случае будет далеко от желаемого, а организовать полноценную автоматизацию выполнения типовых процедур (включающих как работу с репозиторием в терминальном сеансе, так и передачу файлов на клиентскую машину вне терминального сеанса) будет затруднительно. Не следует забывать и о том, что работа в терминальном режиме потребует выделения достаточно мощного сервера с установленной на нем серверной операционной системой, а также о финансовых затратах на лицензирование терминального сервера и клиентов Windows.

Другой способ состоит в удаленном подключении к командной строке ClearCase, что непривычно для пользователя Windows, но в ряде случаев может обеспечить максимальную эффективность. Не углубляясь в технические детали и сравнение особенностей использования графических утилит и их консольных версий, отметим, что к выводу о недостаточности только графических утилит пришли и другие специалисты, работающие с ClearCase (см., например, clearcase.ru/cc_commands.html).

Необходимость применения консольных команд вряд ли вызовет восторг у большинства пользователей, хотя специалист по инструментарию обязан владеть интерфейсом командной строки независимо от того, работает он с локальным или удаленным репозиторием. Для остальных же членов команды можно разработать скрипты или утилиты, общающиеся с ClearCase на языке командной строки и позволяющие легко, в том числе и через графический интерфейс, выполнить любую типовую операцию, определенную регламентами текущего проекта. Такие инструменты могут быть разработаны на любом языке скриптов, в том числе и в виде хорошо знакомых системным администраторам командных bat-файлов, скриптов shell и им подобных, – в зависимости от операционной системы и личных предпочтений специалистов. Эти работы не потребуют сложных специальных знаний или больших трудозатрат и могут быть включены в процессы настройки рабочей среды проекта.

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

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

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

Выбор технологий удаленного доступа

Выбор сервисов для удаленного доступа к текстовой консоли, предлагаемый в среде Windows, невелик: telnet, средства для удаленного доступа Windows PowerShell и протокол SSH.

Telnet не предусматривает средств защиты трафика, и даже более поздний вариант, поставляемый начиная с Windows 2000, не намного лучше – добавлена только поддержка аутентификации NT LAN Manager с шифрованием паролей. Windows PowerShell – относительно новый (2006 года) проект Microsoft, он призван дать администраторам и пользователям Windows гибкость командной строки Unix-систем и может быть интересен как хорошая замена cmd.exe. Хотя сам по себе, как и cmd, Windows PowerShell не дает возможности выполнения команд на удаленных машинах, и для этого требуются дополнительные продукты для обеспечения обращения к удаленной консоли, например такие, как WinRM и PowerShell Server. Сервис WinRM и утилита winrs – это более доступный вариант, чем PowerShell Server. Однако программа-клиент существует только для Windows, сервис WinRM поставляется с Windows Server 2008 и Windows Vista, а для Windows XP его придется устанавливать дополнительно. PowerShell Server – коммерческое решение, которое в сравнении с предыдущим вариантом выглядит более удобным. Удаленным клиентам через SSH-подключение предоставляется доступ к PowerShell на удаленной машине. Кроме того, есть компоненты, предоставляющие возможность обмена файлами по протоколу SFTP. Если опустить подробности, можно сказать, что данный продукт является обычным SSH-сервером, который запускает в качестве командной оболочки PowerShell.

Теперь необходимо определиться с программным обеспечением поддержки SSH для платформы Windows XP и более поздних версий Windows.

Сервер SSH. Хороший, если не лучший выбор – программное обеспечение OpеnSSH, фактический стандарт мира Unix, которое поставляется для Windows в составе пакета Cygwin, поддерживаемого компанией RedHat. Тут надо порекомендовать утилиту GNU Screen, позволяющую обеспечить защиту от обрыва канала связи. Screen создает консольный сеанс, который можно переносить между разными подключениями. Если произошел обрыв канала связи, то запущенные в данном сеансе программы не прекратят работу, и их можно будет перенести на другой сеанс и продолжать с ними работу, подключившись к серверу снова.

Виртуальная среда. Установка сервера доступа по SSH на виртуальной машине поможет упростить администрирование системы и снизит затраты на аппаратное обеспечение. Выбор системы виртуализации не критичен, и можно использовать все, что есть в наличии, главное, чтобы гостевая операционная система работала стабильно. Если в качестве основной ОС используется Windows, то можно рекомендовать Microsoft Virtual PC или встроенную в Windows Server 2008 платформу виртуализации. Следует также обратить внимание на систему VirtualBox, предлагаемую Sun Microsystems.

SSH-клиенты. Наиболее распространенный клиент доступа к консоли SSH из Windows – программа PuTTY (www.chiark.greenend.org.uk/~sgtatham/putty), в комплекте с которой поставляется клиент для обмена файлами по протоколу SFTP – PSCP. Другой удобный клиент для SFTP – WinSCP, поставляемый как самостоятельная программа.

Программы пакета Cygwin поставляются на условиях лицензий GNU GPL и BSD, хотя существуют также и платные варианты, отличающиеся наличием пакета услуг расширенной технической поддержки от производителя. Microsoft Virtual PC распространяется свободно, и можно использовать этот продукт в том числе и для коммерческих нужд. Встроенные в Windows Server 2008 решения виртуализации не требуют дополнительных лицензий. VirtualBox доступен в виде свободной (лицензия GNU GPL) и коммерческой версий. Программы PuTTY и SFTP лицензируются на условиях GNU GPL.

К сожалению, создать систему полностью бесплатно не получится: каждая работающая на сервере доступа копия ClearCase потребует отдельной «плавающей» лицензии. Например, если приобрести десять таких лицензий на ClearCase, то с репозиторием смогут работать одновременно не более десяти удаленных клиентов. При этом общее количество рабочих мест, с которых будет производиться работа с репозиторием, не ограничено. Этот вариант хотя и не бесплатен, но выглядит по стоимости вполне приемлемым, особенно в сравнении с другими рассмотренными вариантами организации удаленного доступа.

Архитектура системы

Рассмотрим теперь архитектуру системы, позволяющей решить проблемы удаленного доступа к ClearCase (см. рисунок).

В качестве сервера удаленного доступа использована виртуальная станция на базе Microsoft Virtual PC с Windows XP, клиентским программным обеспечением ClearCase Native Client и SSH-сервером OpеnSSH. Для каждого удаленного пользователя создан локальный доменный пользователь, под которым он будет авторизоваться (при доступе через протоколы SSH и SFTP) и работать с ClearCase. Данные пользователи добавлены в списки пользователей SSH-cервера. В папках пользователя настроены права доступа к файлам, выделена рабочая папка, к которой он имеет доступ на запись и которую он может обозревать через SFTP. Эта папка в настройках пользователя определена как домашняя.

Пользователь не имеет возможности запустить в сеансе SSH файлы, которые он закачал по SFTP. Это реализуется через установку прав, когда в одном объекте файловой системы (папке или файле) никогда не совмещаются дополнительные права «Запись» и «Обзор папок/выполнение» (для файловой системы NTFS) – для каждой конкретной папки пользователь SSH имеет право записать файл или выполнить уже существующий файл. Пользователь имеет права чтения и записи только файлов в своей домашней папке, каталоге для временных файлов и ведения логов. Кроме того, он имеет права на чтение и запуск только файлов, необходимых для используемых в работе инструментов.

На компьютере удаленного клиента устанавливается набор программного обеспечения для доступа к SSH: PuTTY для доступа к текстовой консоли через SSH и WinSCP для доступа к файлам на сервере по протоколу SFTP.

Станция, сервер и промежуточные защитные и транспортные системы (межсетевые экраны, прокси-серверы, серверы NAT, маршрутизаторы и др.) настраиваются так, чтобы к виртуальной станции можно было осуществить подключение с помощью клиентского ПО по протоколу SSH.

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

Повышение надежности работы. Связь по протоколу Server Message Block, используемому в ClearCase, очень чувствительна к качеству канала, и при среднестатистическом качестве связи система начинает работать недостаточно надежно, не обеспечивая приемлемый уровень удобства работы.

Упрощение вопросов лицензирования. При подключении нового разработчика нет необходимости приобретения или передачи разработчику лицензий на клиентское программное обеспечение ClearCase.

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

Упрощение процесса развертывания и настройки клиентского ПО. Нет необходимости настраивать доверительные отношения между доменами и настраивать клиентское программное обеспечение ClearCase.

Данные преимущества сохраняются и при сопоставлении предлагаемого варианта с вариантом терминального доступа. В условиях плохого качества связи доступ по протоколу SSH/SFTP оказывается вне конкуренции, а при сравнении с терминальным доступом сохраняются преимущества, связанные с облегчением процесса лицензирования программного обеспечения. Кроме того, в отличие от системы терминального доступа, развертывание предложенной системы не приведет к существенным финансовым затратам: не требуется специально выделенный терминальный сервер и можно обойтись виртуальной машиной с Windows XP; нет необходимости в приобретении лицензий на терминальный доступ.

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

***

Описанное решение позволило создать в ПКТБ ЦКИ надежную, автоматизируемую технологию удаленного доступа к репозиторию ClearCase, применение которой без ограничений возможно в условиях сети передачи данных всей структуры подразделений ОАО РЖД и его партнеров.

Владимир Байбаков (baybakov@pktb.css-rzd.ru) – руководитель группы методологии офиса разработки, Денис Гасило (gasilo@pktb.css-rzd.ru) – системный аналитик проектного офиса,  Кирилл Петров (KPetrov@pktb.css-rzd.ru) – начальник отдела качества внешних проектов ПКТБ ЦКИ филиал ПКТБ ЦКИ ОАО «РЖД» (Москва).


Требования к удаленному доступу

К системе удаленного доступа к репозиторию файлов предъявляются следующие требования:

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

ПКТБ ЦКИ

Проектно-конструкторско-технологическое бюро центра корпоративной информатизации (ПКТБ ЦКИ) разрабатывает основные информационные системы, регулирующие работу РЖД. В их число входит и система АСОУП/АСОУП2, осуществляющая управление и координацию всех грузовых перевозок страны. Сегодня в бюро идет перестройка процессов разработки, предусматривающая использование продуктов и методологий Rational, в том числе системы версионного и конфигурационного контроля IBM Rational ClearCase. Данная система необходима в первую очередь для облегчения работы с большим числом часто меняющихся файлов, она позволяет вести разработку систем, состоящих из множества связанных элементов (модели, документация, нормативно-справочная информация), компонентов или файлов, без риска получения необратимых изменений в проекте. Так, она позволяет контролировать несколько версий одного и того же файла, обеспечивая возможность возвращаться при необходимости к более ранней версии. Под версионным контролем ClearCase находится репозиторий нормативной документации по методологии создания программного обеспечения «Коллективная среда разработки», содержащий около 200 согласованных друг с другом документов по всему спектру вопросов разработки программного обеспечения для ОАО РЖД.


 

SSH

SSH (SecureShell) предоставляет множество возможностей, таких как удаленное управление операционной системой, туннелирование TCP-соединений, в том числе передача файлов. SSH используется для создания защищенного соединения при удаленном доступе в публичных сетях, в том числе при медленном или неустойчивом канале связи. При удаленном управлении протокол обеспечивает доступ к командной строке на управляемой системе. Технология SSH реализована на множестве аппаратных и программных платформ, в виде различных клиентских и серверных программ, как коммерческих, так и свободных. При этом практически все решения совместимы между собой. Помимо доступа к консоли, данная технология обеспечивает защищенную передачу файлов, что сразу решает и второй вопрос – выбор технологии обмена файлами с репозиторием.