За кулисами резервирования авиабилетов

В недавней статье сама собой затронулась тема обмена сообщениями между компаниями, обеспечивающими авиаперевозки с точки зрения поисковика билетов.
Здесь же я попробую рассказать об обработке этих сообщений, а также об особенностях работы в компании Amadeus на Лазурном берегу.
Тема достаточно обширная, поэтому я сперва набросаю лишь несколько ключевых слов, и вместе мы посмотрим, что вызовет интерес.

История


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

Развитием этого понимания стало создание Люфтганзой, Эйрфрансом и Иберией компании Амадеус, со штаб-квартирой в Мадриде, дата-центром в Эрдинге и разбросанными центрами разработки.

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

Созданная как GDS, компания Амадеус в настоящее время включает помимо системы резервации: управление расписаниями, инвентаризация полётов, управление аэропортом (чекин, посадка), подсчёт прибыли и пр. Так же есть попытки работать с резервацией отелей и прокатных машин.

Деятельность индустрии регулируется Международной ассоциацией воздушного транспорта. Задумана ассоциация была для контроля за ценами международных перевозок. Но с 2003 года идут переговоры о создании бесконтрольного рынка. В настоящее время задачи ассоциации следующие:
  • упрощение биллинга между авиакомпаниями и агентствами;
  • назначение кодов компаниям и аэропортам: 2 символа для компании (например, 1A), 3 символа для аэропорта (LED);
  • обеспечение возможности сверки цен с другими авиакомпаниями;
  • определение правил индустрии, такие как перевозка опасных грузов;
  • стандартизация, например EDIFACT.

Амадеус обслуживает более 104400 точек агентских продаж и более 36600 офисов продаж более 460 авиакомпаний. 26 компании по прокату автомобилей с 36000 пунктами проката.

Процесс


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

Продукты компании распределяются на три роли:
  1. Altéa Reservation:
    • проверка наличия мест;
    • резервирование;
    • ценообразование;
    • выписка обычных и электронных билетов;
  2. Altéa Inventory:
    • управление расписанием полётов, публикация;
    • управление картами пассажирских мест;
  3. Altéa Departure Control:
    • регистрация в аэропорту;
    • выписка посадочных талонов;
    • упраление багажом;
    • контроль посадки на борт;
    • контроль веса и балансировки воздушного судна.

Подробности можно посмотреть на официальном сайте.

Доступ к продуктам осуществляется посылкой сообщений в автоматическом режиме либо с терминалов клиентов. Терминалом может быть текстовая консоль или web-сайт. При поиске или заказе билетов через интернет-поисковики запросы с серверов приходят к нам примерно в таком же виде, как если бы запрос делали вручную с терминала агентства или аэропорта. Сообщение может быть в виде TTY, EDIFACT или XML-запросом к веб-сервису.

В ответ система может отсылать электронную почту с PDF документами, печатать билеты на принтерах в аэропортах, слать SMS и просто показывать HTML-странички.

При резервировании билета создаётся PNR. Эта запись содержит основную информацию о пассажире: имя, особые требования, номер рейса, отель, машина, поезд, вот это всё. Все записи последовательно нумеруются.

Пример PNR:
RP/MUC1A0701/                                                   
RF THOMAS TEST                                                  
  1.SRC/TEST                                                    
  2  LH4143 Y 27OCT 5 NCEFRA HK1  0645 1  0745 0925   737 E 0 R 
     NON-SMOKING FLIGHT                                         
     SEE RTSVC                                                  
  3  LH4138 Y 03NOV 5 FRANCE HK1  1600 1  1640 1805   737 E 0 R 
     NON-SMOKING FLIGHT                                         
     SEE RTSVC                                                  
  4 AP 809-0239424                                              
  5 TK TL26OCT/MUC1A0701                                        
  6 FP CASH                                                     


На сайте checkmytrip.com можно запросить вашу PNR введя фамилию и номер брони (6 символов).

Жизнь рейса выглядит так:
  • -7/10 дней: создание рейса;
  • -24 часа: вычисление вместимости;
  • -3 часа: начало оценки загрузки;
  • -2.5 часа: отправляется сообщение EZFW;
  • -1.5 часа: обновление оценки загрузки (DG/SL);
  • -1 час: отправка инструкций по загрузке;
  • -50 минут: ввод данных по топливу;
  • -45 минут: отправка NOTOC и предварительного отчёта о загрузке;
  • -10 минут: проверка перрона;
  • -3 минуты: отправка итогового отчёта о загрузке;
  • 0: взлёт;
  • +10 минут: release control, чтобы это ни значило, отправка LDM/CPM/SLS.

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

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

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

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

Разработка


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

Спервоначалу ядром системы было готовое программно-аппаратное решение от IBM. Впрочем, написанное на ассемблере в бородатое время до сих пор верно работает, хоть и требует значительных ресурсов на поддержку: решение дорогое, специалисты редкие. Сейчас новыми продуктами занимается центр разработки, и используются современные инструменты.

Основной язык программирования сильно нагруженных сервисов — C++. Для графических интерфейсов есть Java, web-сервисы с различными серверными решениями. Широко используется Python для создания скриптов регрессивного тестирования. На серверах трудится Linux.

Перед тем, как код попадает в продакшн, проходит обкатка на нескольких уровнях тестовых систем, которые представляют собой копии работающей системы различной степени достоверности. В эти копии направляется сохранённый реальный трафик, так что системы работают как бы в прошлом, с известным сдвигом во времени. Один из уровней — система тренинга, предназначенная для обучения персонала клиентов.

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

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

Трактор


Центр разработки, в котором трудится ваш непокорный слуга, находится на Лазурном берегу, в парке София Антиполис — местной кремниевой долине. IT-компаниям были предложены специальные условия в этом регионе (льготное электричество, например), чем воспользовались многие известные фирмы: Intel, ARM, Inria, AirFrance, Amadeus, прочие. Кстати, имеются открытые вакансии.

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

Из окна видны южные Альпы, деревушки на склонах холмов и Лигурийское море. По лесам бегают зайцы и кабанчики. Видел из окна автобуса пасущихся на газоне поросят. Скоро зима, горы наденут снежные шапки и настанет лыжный сезон. Раз в год выпадает снежок на дорогах вокруг города, чем вызывает катаклизм, потому что к гололёду никто не готов. Даже поезда.
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 32

    0
    А простым смертным есть возможность получить доступ к API и документации этой GDS в целях обучения на бесплатной основе?
      0
      к сожалению нет, только за деньги ходя на отдельные курсы
        +1
        Да, пожалуй смертным физическим лицам получить доступ можно только устроившись сотрудником в юридическое лицо — GDS, агентство по продаже билетов, аэропорт или компанию-перевозчик.
      +1
      Огромное спасибо за статью!

      Не знаю, касается ли это вас… Но вы наверняка знаете ответы :)

      1. Почему поиски такие медленные? Я понимаю, что данных много-много, но всё-таки. Поиск у некоторых клиентов GDS длится десятки секунд. Почему так происходит? Возможна ли скорость поиска на уровне гуглов/яндексов? Проясните, пожалуйста.

      2. Как и на чьей стороне устроен поиск составных маршрутов? Вопрос тут в сторону «почему составной маршрут иногда дороже, чем отдельные билеты, почему составной поиск не предлагает эти отдельные билеты в одном».
        0
        1)Просто тупая и медленная старая система. Переписать конечно можно и на быстрое, объем данных не такой уж и большой и далеко не гугловский и даже не яндексовский.
        2)Ни разу не встречал чтобы составной был дороже точно тех же самых билетов. Составной это там где одной авиакомпанией или же авиакомпании в одном авиаальянсе их по моему три или четыре в мире, то есть если билеты от разных компаний то по сути это не составной перелет и компании друг перед другом не несут никаких ответственностей, и багаж вам надо получать при пересадке и расчекиниться зачекиниться по новому вместо просто трансфера. В составные билеты ещё обычно не попадают всякие лоукостеры как рунайр или айр азия, так что иногда проще взять билет прямой до бангкока и за 600 рублей долететь айр азией до пхукета.
        Вы скорее всего не правильно понимаете термин составной билет, и для любой перелет в пересадкой считается составным, с точки зрения авиакомпаний это могут быть два совершенно не связанных перелета.
          0
          1. Никому не интересно?
          2. Попробую объяснить, что я подразумаваю. В моей голове живут типы oneway и return билетов. Т.е. хочу из А в Б или хочу из А в Б и обратно. Недавно я открыл для себя третий тип: «составной» (поправьте, как его правильно называть) — это из А в Б, из Б в В, из Г в А, например.

          Но из вашего ответа я, кажется, понял кое-что. То, что дешевле, — от разных альянсов, а если из одного брать, то получится дороже. Правильно?
            +2
            1)Ну вот есть жж, вот там бы тоже не помешало и вроде бы интересно, но видимо надо иметь определенную смелость, а вдруг не полетит? большой бизнес что тут скажешь. Американ айрлайнс или как его там сделало такую систему вроде как более быструю, но она пока что ни у кого не прижилась, там ещё есть большая проблема с тем что билеты плохо стандартизированы по формату, что тоже сильно усложняет жизнь автоматизированным системам.
            2)Ну вам не могут продать билет составной скажем от компаний которые не связаны друг с другом авиаальянсом или какими то ещё договорами. Скажем если взять составной билет и взять теже самые билеты от тех же компаний они всегда будут дороже по отдельности чем составной. Но при этом компании гарантируют вам доставку и часто сами перенаправляют ваш багаж, и если есть не стыковки по их вине дадут вам другой билет на пересадке на следующий рейс скажем.
            В случае купленных по отдельности билетов если скажем ваш первый рейс задержали то все остальные ваши билеты скорее всего плакали, а обычно дешевые билеты и вернуть нельзя, там возвращают только таксы аэропортов, а это вообще копейки.
          0
          Пожалуйста!
          Я занимаюсь маршрутизацией сообщений и поиском в архиве, и как устроен поиск рейсов я в нюансах не знаю, но могу узнать.
          Поиски медленные по нескольким причинам: ограниченные возможности кэширования, система ориентирована на высокую надёжность со многими гарантиями.
          Если гугл или яндекс немного ошибутся в результатах, им ничего не будет за это.

          По второму вопросу разузнаю технические детали на неделе. Действительно, существует огромная база бизнес-правил, по которым считается стоимость билета. Там изгаляются кто во что горазд, и расчёт не тривиальный. В итоговой цене могут получаться странности. Притащу примеры по возможности.
            0
            Спасибо за статью-ответ!

            И все-таки про скорость. На том уровне, на котором ОТА отдают данные пользователям и нам (метапоисковикам) — особой «надежности» нет, некоторый процент попыток бронирования завершается надписью «авиакомпания не потдвердила, блабла». Лучшие агенты успевают отдать данные за 10-12 секунд, худшие думают, проверяя разные ГДС, до 40 секунд. При этом авиакомпании, с которыми мы работаем напрямую отвечают за 1-3 секунды, не больше.

            Какой роадмап у Амадеуса по вопросу ускорения? Ну чтобы «фиу фиу и в продакшен» ;-)
            +1
            При составном маршруте компания-перевозчик, от имени которой будет выпущен билет, берёт на себя дополнительные обязательства. Если первый рейс опаздывает и вы не успеваете на второй — вам бесплатно дадут новый билет на продолжение вашего сегмента. Тут, правда, я не силён на тему, когда заканчивается один сегмент и начинается другой. Один раз меня это уже выручило, прождал 6 часов в Хитроу, но улетел без проблем и доплат, и багаж прилетел вместе со мной.
              0
              Я, возможно, не очень понятно объяснил. Ещё раз попробую на примере.

              Хочу лететь из Питера в Нью-Йорк 25 сентября. Оттуда 1 октября в Сан-Франциско, где хочется побыть ещё неделю. 8 октября я беру в прокат автомобиль и еду по побережью до Лос-Анджелеса, откуда через несколько дней вылетаю обратно в Питер.

              Т.е. маршрут такой: LED-NYC-SFO, LAX-LED. Три сегмента. Я хочу купить всё это разом.

              И вот бывает такое, что сумма цен отдельных билетов меньше, чем цена на сложный/составной маршрут (опять-таки, я здесь использую, может быть, неверный термин, который сбивает вас с толку).

              Опаздания здесь не играют роли, потому что между сегментами может быть несколько дней. И тут возникает вопрос. Пускай каждый из сегментов (LED-NYC, NYC-SFO, LAX-LED) будет представлен одним альянсом (как раз для безопасности пассажира, если в сегменте есть пересадки), но что мешает продавать сегменты разных альянсов?
                0
                Так вам в итоге один билет ведь продают, состоящий из трех сегментов, поэтому и один альянс. В ценообразовании начинают играть всякие разные факторы: туда-обратно в одном билете обычно дешевле, чем в двух разных; у разных авиакомпаний могут быть разные цены на один и тот же совместный рейс; цены повышаются в зависимости от количества купленных билетов; распродажи всяческие и т.д… Например, сейчас билеты аэрофлота LED-NYC 6 ноября туда и 20 обратно стоят 17 тысяч, только туда 12 тысяч, а только обратно — 11. Впрочем, LED-NYC + LAX-LED есть от люфтганзы за 22 тысячи, так что тут надо смотреть внимательно. Но лететь дольше, чем аэрофлотом.

                С другой стороны в штатах гигантское количество внутренних рейсов, и если покупать чуть заранее — можно отлично сэкономить. В вашем случае я бы вообще покупал 3 разных билета: LED-NYC туда-обратно, NYC-SFO и LAX-NYC (ну и мустанг для автотрассы №1 :) ). Опасность только в пересадке в NYC, и скорее всего возможна экономия.
                  0
                  В вашем случае я бы вообще покупал 3 разных билета: LED-NYC туда-обратно, NYC-SFO и LAX-NYC
                  Кстати, интересна тема таких хаков. Иногда можно неплохо сэкономить, перебрав кучу разных вариантов, но как это делать легко и быстро, пока непонятно.
            0
            Могли бы вы предоставить больше деталей из жизни рейса. Что означает каждый из пунктов и как это происходит?
              +1
              Сложно, как оказалось. Источники разбросаны и я пока не нашёл кого-нибудь, кто бы знал всё. Вот обрывки поступающих сведений:

              EZFW = Estimated Zero Fuel Weight
              Отправляется в систему планирования полётов примерно за 2-3 часа до вылета. Система рассчитывает необходимое топливо.

              NOTOC = NOtification TO Captain
              Уведомление капитана о грузе: есть ли опасный или что-то специальное. На каждый такой груз отправляется такое сообщение. Скорее всего.

              LDM = LoaD Message
              CPM = Container Pallet Message
              Эти отправляются в порт назначения с информацией что летит, как разгружать.

              Копаю дальше.
                +1
                DG — по идее, Dangerous Goods
                  +1
                  Да, а SL — special load.
                  +1
                  Объясните, пожалуйста, такой момент. Эти различные GDS (Amadeus, Galileo) используют одну общую базу данных, или у каждой своя?
                  И какое отношение к ним имеет IATA, в частности BSP? Описание на сайте www.iata.org/services/finance/bsp/Pages/index.aspx похоже на GDS.
                    0
                    База данных у каждого своя. Авиакомпании выбирают с какой GDS работать. Разные GDS предоставляют разный набор сервисов. Амадеус продаёт очень много всего.
                    IATA регулирует правила бизнеса. Например, GDS обязаны брать плату за каждую бронь билета. Нельзя взять и делать бронь бесплатно взамен на показ рекламы.
                      0
                      Есть ли этому какое-то объяснение или просто нельзя?
                        0
                        К сожалению, я далёк от понимания правил бизнеса. Почему-то решили вот так ограничивать возможности конкуренции.
                0
                Помнится, несколько лет назад покупал авиабилет. И меня очень удивило, что девушка-кассирша при поиске билета работала в текстовой консоли, вводя какие то хитрые короткие команды. Я еще все думал, почему не сделать простую GUI оболочку. Все таки там работают простые кассирши, а не *nix-админы.
                  0
                  Вы так говорите, будто хитрые короткие команды — это что-то плохое. Работает, и достаточно хорошо. Исторически так сложилось.
                  Сейчас практически ко всем продуктам есть более человеческий веб-интерфейс, но не все клиенты к нему готовы.
                    0
                    Просто мне кажется что обучать девочек-кассирш пользоваться консолью намного тяжелее, чем обучить пользоваться GUI.
                    Это нам с вами легко в Linux терминале команды давать, а у простого смертного может культурный шок случиться ))
                      0
                      работала в текстовой консоли, вводя какие то хитрые короткие команды
                      Быстро это делала? Мне тоже приходилось наблюдать за такой работой. Билеты подбирали долго, но сам процесс ввода запросов и перевод полученной информации на человеческий язык был очень быстрым благодаря интерфейсу и квалификации «девочки-кассирши». Боюсь представить, на сколько бы растянулась покупка, если бы интерфейс был более «человечным».
                        0
                        Да. Она довольно быстро работала. Мне так слабо.

                        Но опытные операционистки и с GUI очень быстро работают. И в GUI их работу очень ускоряют горячие клавиши, автозаполнение, всплывающие окна со справочниками и т.п.

                        Вопрос, скольно времени нужно обучать девочку, до того, как она сможет начать работать (хотябы медленно для начала).
                          0
                          Наличие GUI провоцирует к медленной работе с мышью (сами знаете, каким образом большинство в word/excel работает). А большой разницы между изучением горячих клавиш и консольных команд я не вижу. Может быть даже наоборот всё — названия команд, как правило, явно соответствуют своим функциям, а вот с хоткеями лично у меня гораздо сложнее (какой набор модификаторов? какой символ?).
                            +1
                            GUI рассчитанные на быструю работу оператора — обычно могут работать без мышки. Посмотрите на операционисток в банках, даже на обычных кассиров…
                  0
                  Вот, кстати, на картинке* пример HTML-интерфейса Амадеуса: strangers.d3.ru/comments/483882

                  *NSFW
                    +1
                    А как вам условия работы? Меня зовут в Амадеус из Амстердама, думаю, стоит ли того? По вашему описанию работа может быть как очень интересной, так и очень неинтересной, так что детали придется смотреть на месте, если до этого дойдет, а вот если в общем расскажете, как вам офис, как транспорт, какие плюшки в контракте кроме зарплаты, то буду признателен.
                      +2
                      Офис приятный, есть столовая и кафешки. Кофе/шоколадки в машинах за деньги. Из Антиб ходит бесплатный автобус (правда, обычно набитый битком в часы пик). Остальные автобусы 1 евро.
                      Если работать на Амадеус консультантом через подрядчика, то, как правило, условия чуток хуже, но проще попасть. Обычно выдают ресторанные билетики по 7-8 евро/день, которые можно тратить во Франции в пунктах питания и в магазинах на некоторую еду.
                      Если работать напрямую на Амадеус, то есть дополнительные плюшки: профсоюз со скидками на мероприятия и спорт, столовая в 2 раза дешевле, компенсация бензина для езды на работу, софинансирование доп. пенсионного плана и паевых фондов. Отпуск что-то типа месяц + 7..9 дней за вредность (зависит от года). Небольшая помощь с кредитом на жильё. Также удвоенное время на оплачиваемые треннинги (относительно гарантированных законом 20 часов в год). Разного рода и размера годовые бонусы.
                      Офисы (37 зданий) разбросаны в живописном месте. Если повезёт, из окон будет отличный вид.
                      Если французский язык не очень — легко говорят по-английски (в офисе), это официальный язык внутри.
                      Зарплата по отзывам местных — выше среднего (мне-то всего всегда мало, конечно же).
                      Это Лазурный берег, так что климат, налоги, бюрократия и цены соответствующие.
                        0
                        Спасибо, буду думать дальше.

                    Only users with full accounts can post comments. Log in, please.