ПРОЕКТЫ

Использование языка Python для резервирования авиабилетов доказывает, что иногда змеи и самолеты могут мирно сосуществовать

Летом прошлого года распространилась малоправдоподобная история о рептилиях на самолете - будто бы во время полета на "Боинге-747" был потерян клубок змей. Вы можете счесть столь же далеким от истины и то, что компания ITA Software применяет язык Python в своей системе бронирования авиабилетов. Многие ревнители чистоты языков программирования считают, что в корпоративных приложениях должны использоваться Java, C++ или Cи. Однако разработчик ПО и сервисов ITA доказывает, что динамические языки, подобные Python, могут служить надежной основой для работы предприятий.

Ден Келли: “Это первый

случай замены системы на

базе мэйнфрейма”

Действительно, в сентябре 2006 г. ITA объявила, что заключила с монреальской фирмой Air Canada, которая входит в состав ACE Aviation Holdings, соглашение о разработке новой системы управления бронированием авиабилетов. Система резервирования компании Air Canada, относящаяся к новому поколению, будет включать модули, обеспечивающие заказ билетов, управление имеющимися ресурсами и предоставление информации о наличии свободных мест, а также регистрацию в аэропортах и выполнение всех наземных операций.

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

Отказ от устаревших систем

По словам директора ITA по интеграции приложений Дена Келли, в следующем году ITA передаст систему в Air Canada и она будет развернута по всей сети фирмы, включая центры обработки заказов по телефону и представительства в аэропортах мира. Система резервирования билетов будет представлять собой приложение, централизованно управляемое (hosted) компанией ITA Software.

ITA Software (www.itasoftware.com) была основана в 1996 г. компьютерщиками из Массачусетского технологического института. Она обеспечивает авиационные и транспортные предприятия системами управления ценами на авиаперевозки или товары в магазинах, свободными местами и т. п.

"Если вам удастся отстоять Python перед людьми, которые не очень разбираются в технике, вы лишь воздадите должное этому языку".

Среди клиентов ITA Software значатся Air Canada, Alaska Airlines, Alitalia, Continental Airlines, US Airways, Star Alliance, Galileo International, Kayak, Orbitz и другие компании.

Kayak.com - веб-сайт, на котором приводятся сравнительные цены на товары для авиапассажиров, - как и многие другие клиенты ITA, использует ITA Software QPX - систему информации о ценах и о совершении покупок в аэропортах. В отличие от традиционных систем на базе мэйнфреймов (а именно на них построено большинство программных систем для авиаперевозчиков) QPX использует множество потребительских ПК под управлением Linux и компонентную архитектуру, не имеющую единой точки отказа и допускающую линейное масштабирование.

"На протяжении всего своего существования ITA занималась поиском и ничем иным, - рассказывает Ден Келли. - Можете считать нас системой Google для авиапассажиров. Тем, кто прибегает к нашим услугам, приходится писать значительный объем кода на Java для своих веб-сайтов, чтобы клиенты могли обращаться к ним. Вот этот-то код и позволяет осуществлять собственно резервирование билетов на одном из больших мэйнфреймов, хранящем информацию о том, кто какие билеты покупал. А мы предоставляли только механизм поиска".

Однако контракт ITA с Air Canada заставит эту компанию перенести свою систему с мэйнфреймов на группу ПК под управлением Linux. "В настоящее время мы создаем для Air Canada систему резервирования, которая не будет базироваться на мэйнфреймах, выполняющих 95% ее бизнес-функций", - поясняет Ден Келли.

Вместо единой монолитной системы ITA создает несколько компонентов, которые будут запускаться на разных компьютерах в виде процессов Linux. Подразделение, которое возглавляет Ден Келли, объединяет 30-50 таких компонентов в единую операционную среду. И некоторые из них, наиболее важные, написаны на языке Python.

Система Air Canada насчитывает 110 интерфейсов или способов взаимодействия пользователей с системой. "Она подключена примерно к пятистам различным компьютерам, которые находятся здесь и в других местах", - говорит Ден Келли.

"Но помимо того что это представляет собой сложную техническую задачу, никто еще за всю историю использования компьютеров в авиации не переносил систему резервирования билетов с мэйнфрейма на что-то другое, - продолжает он. - Это нас несколько смущает. Где-то в будущем году Air Canada собирается на несколько часов отключить все системы, а затем мы намерены включить все вновь, используя новое решение. Такого еще никогда не делалось, я имею в виду переход с унаследованной системы на новую".

Динамичный Python

Значительная часть используемого ITA программного кода написана на языке Python, несмотря на присущий некоторым специалистам скептицизм относительно готовности динамических языков к широкому применению. Тем не менее такие люди, как Гвидо ван Россум, создатель Python, указывают на успешное использование этого языка в системах Google и YouTube, ежедневно обеспечивающих трафик в характерных для предприятий масштабах.

Тем временем ITA использует в своем коммерческом ПО около 200 тыс. строк кода на языке Python.

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

Серверное ПО представляет собой смесь из C++ и Python, работающую в среде Twisted Python.

"Кроме того, некоторые потоки данных, поступающие от наших клиентов и партнеров, обрабатываются сетевыми серверами, работающими под управлением Twisted", - отмечает он.

Как рассказывает Ден Келли, при создании высокопроизводительных серверов, выдающих информацию о наличии свободных мест, ITA тесно сотрудничала со своими партнерами из числа авиаперевозчиков. Эти серверы собирают информацию из общедоступных и закрытых источников, обрабатывая как потоковые данные, так и файлы.

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

В своей новой системе резервирования билетов авиаперевозчик Air

Canada использует ПО компании ITA, в основном написанное на языке Python

Более того, ITA применяет приложение на языке Python для мониторинга своей гетерогенной производственной среды, в которой работают сотни серверов. "Чтобы добиться высокой эффективности, мы разработали собственную среду мониторинга, позволяющую формулировать требования при конфигурировании вместо того, чтобы закладывать их в программный код", - поясняет Ден Келли.

И рассказывает дальше: "ITA использует методы ускоренной [agile] разработки, которые требуют, чтобы из нашего ПО можно было в любой момент создать сборку. Для такой цели нам необходима возможность автоматически производить возвратное тестирование любой сборки. Но чтобы эти тесты имели смысл, нашим системам нужны динамически меняющиеся данные. ITA разработала среды для возвратного тестирования на языке Python с целью проверки как системы информации о наличии свободных мест, так и системы резервирования билетов. Эта среда позволяет загружать тестовые данные в процессе тестирования. Она построена на языке конфигурирования, а значит, в нее легко добавлять новые сценарии тестирования по мере необходимости".

Первым программным ядром, созданным ITA с использованием Python, по словам Дена Келли, было ПО балансировки нагрузки: "Мы знали, что без ПО балансировки нагрузки выполнить требование заказчика, касающееся работы его веб-сайта, не удастся. У нас имелась слепленная на скорую руку версия, которую кто-то написал за неделю на Perl, но она постоянно давала сбои. А нам нужно было нечто такое, что мы могли бы собрать для ее замены, но при этом можно было бы поддерживать на протяжении длительного времени". И Python отвечал таким требованиям.

"С тех пор мы кардинально изменили способ использования Python в компании, - продолжает он. - Объем написанного на Python коммерческого ПО вырос многократно. Мы фактически переписали на Python систему мониторинга всех наших коммерческих сервисов, а также инфраструктуру управления используемым нами коммерческим ПО".

Важным компонентом этой работы стало применение Twisted Python. "Мы в значительной мере опираемся на среду Twisted и используем ее в своем базовом ПО, которое служит для управления подавляющим большинством имеющихся у нас коммерческих сервисов, инфраструктурой мониторинга и продуктом следующего поколения. Этот продукт (он у нас на подходе) представляет собой пакет программ для автоматизации процесса обновления ПО", - утверждает Ден Келли.

Смесь компонентов

По его словам, система, созданная для Air Canada, будет представлять собой смесь компонентов, написанных на различных языках: "Есть компоненты на Java, LISP, C++ и Python. Для сферы действия каждого из них [component area] мы получили от заказчика функциональную спецификацию, в которой говорится, что он должен делать. И нам нужно было определить, кто те люди, которые должны работать над данным проектом. А они уже решали, какой язык использовать".

На языке Python написаны два важнейших компонента, без которых система не может обойтись. Первый - контроль имеющихся ресурсов. Он отслеживает, на каких самолетах имеются свободные места и какие именно.

Однако ключевым компонентом, по мнению Дена Келли, считается тот, что принимает заказы и заносит их в базу данных. Он написан на LISP. А следующий по значению - тот, что ведет учет свободных мест на самолетах. "Он обеспечивает весь обмен сообщениями между нами, транспортными агентами и другими системами резервирования билетов. И этот "демон" взаимодействия написан на Python", - поясняет Ден Келли.

Кроме того, в прошлом году значительная доля билетов компании Air Canada была продана через транспортные агентства. В новой системе каждая такая транзакция будет осуществляться с помощью обмена сообщениями на языке Python.

Но почему именно Python? "Если обратиться к истории, то он не является тем языком, на котором кто-то станет создавать ПО корпоративного уровня", - уверен Ден Келли. - Тем не менее он совершенно определенно является языком подходящего для предприятий калибра с точки зрения стабильности, масштабирования и способности обеспечить работу над проектом большому количеству участников".

Досье: Air Canada, г. Монреаль (Канада)

 Краткие сведения об организации. Крупнейшая авиакомпания Канады. В 2005 г. вместе с родственной компанией Jazz перевезла более 30 млн. пассажиров.

 Потребности бизнеса. Более гибкая система управления резервированием билетов, охватывающая бронирование, регистрацию в аэропорту и сведения о наличии свободных мест.

 Технический партнер. ITA Software, г. Кембридж, шт. Массачусетс (США).

Рекомендованное решение. Перенести системы Air Canada с мэйнфреймов на группу ПК под управлением Linux, написать значительную часть программного кода на языке Python.

"Но если вам удастся убедить людей, не очень разбирающихся в технике, что это язык, на котором можно создавать корпоративное ПО, вы лишь воздадите ему должное. Одно из наших преимуществ как компании, основанной специалистами по компьютерам, заключается в том, что нам не приходится обосновывать использование этого языка программирования лишь потому, что он не Java, - подчеркивает Ден. - Мы находимся в том счастливом положении, когда можно самостоятельно выбирать необходимые инструменты для работы. У нас есть компоненты, написанные на Java, на C++, на Python, Ruby и Perl. Некоторые наши сотрудники, являющиеся классными специалистами по компьютерам, люди, прошедшие через лаборатории искусственного интеллекта и компьютерных наук Массачусетского технологического института, определенно рассматривают Python в качестве подходящего языка для создания корпоративных приложений".

В действительности ITA приходится доказывать, что она может обеспечить выполнение соглашений об уровне обслуживания посредством технологии на базе Python.

"Мы совершенно уверены, что данная технология готова к широкому применению, - заявляет Ден Келли. - То, что мы делаем, говорит бизнесу с многомиллиардными оборотами, что можно писать компоненты именно на этом языке программирования, и они, эти компоненты, обеспечат работу авиакомпании".

Адриан Холовейти, программист, обслуживающий сайт Washingtonpost.com, и создатель Django - среды разработки веб-приложений на базе Python, свирепеет, когда Python критикуют за неготовность к применению в масштабе предприятия. "Для меня слово "предприятие" в подобном контексте в большинстве случаев лишено смысла, - говорит он. - На деле это словечко из области маркетинга, и оно не имеет ничего общего с логикой".

В качестве примера Адриан Холовейти приводит Google и YouTube. По его мнению, на предприятиях трафик ненамного больше, чем у этих компаний. "Лично я имею непосредственный опыт ежедневной работы с Python в качестве основного языка программирования, когда тружусь над Washingtonpost.com. Это фантастический язык, без которого я уже не могу обойтись", - утверждает он.

Более того, принимая на работу новых сотрудников, ITA хочет, чтобы они имели опыт работы с Python. "Нам очень везло с теми, кто программирует на Python, поскольку они умеют решать проблемы на уровне ядра и строить системы", - констатирует Ден Келли.

Он говорит, что сравнительно просто найти программистов для работы на Java или на Си, которые могут хорошо писать строки кода, но при этом не сильны в решении возникающих проблем. "Нам гораздо труднее найти людей, способных проанализировать локальную проблему, а затем предложить решение, устраняющее множество локальных проблем", - поясняет Ден Келли. Он уверен, что те, кто программирует на Python, как правило, умеют это делать.

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

У вас появились замечания или предложения? Напишите нам по адресу: editorial@pcweek.ru.