Amadeus Cloud Migration на Ampere Altra Instances — CodesCode

Узнайте, как глобальная компания по технологиям путешествий Amadeus перешла на экземпляры Ampere Altra в Azure, что позволило увеличить сырой пропускной способность до 20% и повысить производительность/цену на 50%.

Эта статья была изначально опубликована компанией Ampere Computing.

“Возможно, вам не знакома компания Amadeus, потому что это B2B-компания […но] когда вы ищете рейс или отель в Интернете, большая вероятность, что вы используете сервис, основанный на Amadeus, за кадром,” говорит Дидье Спезия, облачный архитектор Amadeus.

Amadeus – ведущая глобальная компания в сфере IT для туризма, обеспечивающая своей технологией деятельность различных участников туристической индустрии: авиакомпаний, гостиничных сетей, туристических агентств, аэропортов и т. д. Одно из направлений деятельности Amadeus – предоставление услуг по поиску и ценообразованию для авиабилетов для туристических агентств и компаний, таких как Kayak или Expedia. Amadeus также поддерживает более сложные возможности, такие как запросы на основе бюджета и календарные запросы, требующие предварительного расчета многомерных индексов. Найти подходящие рейсы с доступными местами среди множества авиакомпаний оказывается удивительно сложной задачей.

Получение оптимального решения рассматривается как задача NP-трудности, поэтому для предоставления лучшего возможного ответа Amadeus использует комбинацию “грубой силы”, алгоритмов графов и эвристических методов. Это требует масштабных распределенных систем и потребляет много ЦП, работающих сегодня на тысячах машин в помещениях Amadeus. Для удовлетворения запросов клиентов Amadeus эксплуатирует несколько объектов собственного размещения во всем мире и также выполняет рабочие нагрузки на нескольких облачных провайдерах.

Проект

Несколько лет назад Amadeus начала крупный многолетний проект по миграции большей части своих ресурсов с объектов размещения в Azure. Для этого конкретного случая Amadeus сотрудничала с Microsoft для проверки виртуальных машин (VM) Ampere на базе процессоров ARM.

В ходе обсуждения Мо Фархат из Microsoft заявил:

Исходя из нашего положения… [Microsoft] хочет предоставить своим клиентам выбор. Мы не направляем их в одну архитектуру в отличие от другой… или в один ЦП в отличие от другого. Мы хотим предоставить меню вариантов и дать доверенные рекомендации…

Изначально в рамках перехода Amadeus не была заинтересована в использовании другой архитектуры. По словам Спезии:

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

Они выбрали большое распределенное энергоемкое приложение на C++ в качестве первого для запуска на Ampere, поскольку считали, что это принесет наибольшую сравнительную выгоду по сравнению с x86.

Мы подумали, что машины на базе процессоров ARM могут быть хорошим вариантом, но, конечно же, нам нужно было проверить и подтвердить наши предположения. Мы начали с запуска нескольких синтетических бенчмарков. […] Результаты были положительными, но синтетические бенчмарки не являются особо значимыми. Поскольку внедрение новой архитектуры ЦП в экосистему не является нейтральным, нам нужно было получить более надежное подтверждение и мы решили провести бенчмарк с реальным приложением. […] Приложение состоит из большого набора кода на C++. Оно зависит от определенного количества низкоуровневых библиотек с открытым исходным кодом, а также от некоторых библиотек промежуточного слоя Amadeus и, наконец, от самого функционального кода. Для проведения бенчмарка в тестовой среде был выделен подмножество этого кода.

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

Для начала Amadeus установила несколько машин с процессорами Ampere Altra в помещении. Они использовались для начальной работы по портированию и до сих пор поддерживают нашу CI/CD. Поскольку мы находимся в процессе миграции в общедоступное облако и остаемся в гибридной модели с комплексной экосистемой, нам была важна возможность развертывания некоторых машин в помещении с той же архитектурой ЦП, что и виртуальная машина, предоставляемая Azure от Microsoft. Мы считали очень ценным использовать машины на целевой архитектуре для CI/CD и тестирования, а не заниматься кросс-компиляцией

CI приложения по-прежнему выполняется на сервере Ampere в лаборатории Amadeus.

Проблемы

Начало портирования нашего кода включало перекомпиляцию всего с использованием совместимой с Arm64 тулчейн (в качестве цели – Aarch64), а это имело последствия для нашего CI/CD.

Процесс портирования кода для его работы на Ampere прошел очень гладко, хотя были раскрыты некоторые проблемы. Некоторые специфические для платформы особенности компилятора, такие как знаковый или беззнаковый тип “char”, отличались на x86 и Arm64, и приложение делало предположения об этом поведении.

</

Для компиляции их большой кодовой базы на C++, Amadeus использует как компиляторы GCC, так и Clang C++. В рамках портирования потребовалось обновление некоторых зависимостей с открытым исходным кодом, чтобы воспользоваться улучшенной поддержкой Arm64. Некоторые из этих обновлений включали изменения в API или поведении, требующие дальнейших изменений в коде. Кроме того, несколько скрытых проблем в кодовой базе, которые не проявлялись на x86, были выявлены в процессе миграции и решены, связанные с неопределенным или определенным платформой поведением.

Развертывание

В облаке приложения Amadeus развертываются на кластерах OpenShift (платформе для контейнеров на основе Kubernetes от Red Hat). Для работы в продакшн требуется полная среда промежуточного программного обеспечения (enterprise service bus, системы ведения журналов и мониторинга и т. д.), которая также размещается в OpenShift.

Amadeus не хотела переносить всю свою инфраструктуру приложений на Arm64. Red Hat, еще один надежный партнер, предоставил функцию Kubernetes, позволяющую использовать гетерогенные аппаратные архитектуры в одном кластере OpenShift в качестве поддерживаемой функции.

Конкретно это означает, что один кластер OpenShift может включать как узлы x86, так и ARM Compute. Задавая наборы узлов с узлами x86 и Arm64 и используя метки и “тэги” для контейнеров, которые нужно развернуть, разработчики могут легко выбирать типы виртуальных машин, на которых будут запускаться поды. Поддерживающие компоненты инфраструктуры приложений Amadeus могут работать на традиционных виртуальных машинах x86, в то время как приложения, которые Amadeus решит запустить из-за экономической выгоды и производительности на Arm64, могут работать на виртуальных машинах Azure Dps v5, основанных на процессорах Ampere Altra.

Гетерогенные кластеры играют важную роль в поддержке инкрементного мигрирования и позволяют избежать удвоения числа кластеров OpenShift, которые следует использовать.

Результаты

Очевидно, перед переходом в продакшн Amadeus хотела проверить свои предположения с помощью некоторого бенчмаркинга. С помощью синтетического бенчмарка cpubench1a на виртуальных машинах с 32 vCPUs, одна виртуальная машина Ampere Altra (D32ps_v5) показала на 20% большую производительность, а также улучшение производительности/цены на 50% по сравнению с эквивалентными виртуальными машинами Intel, и на 13% и 27% соответственно в сырой производительности и производительности/цене по сравнению с эквивалентными виртуальными машинами AMD.

При тестировании на реалистичном бенчмарке приложения для шопинга был найден компромисс между пропускной способностью и временем ответа. Чем выше пропускная способность, тем больше времени отклика. Виртуальные машины Ampere Altra показали улучшение производительности/цены на 47%, с приемлемым падением на 11% среднего времени ответа по сравнению с виртуальными машинами Intel, и на 37% и 9% соответственно в производительности/цене и среднем времени ответа по сравнению с виртуальными машинами AMD.

Теперь Amadeus портировала достаточное количество компонентов приложения для запуска реального приложения (а не только для запуска бенчмарков). В настоящее время компания проводит интеграционные тесты и проверяет последние детали платформы. По достижении результата Amadeus начнет расширение продакшн-среды в нескольких регионах Azure.

Специально разработанные для устойчивого облачного вычисления, первые процессоры Ampere для облачных сред обеспечивают предсказуемую высокую производительность, масштабируемость платформы и невиданную в отрасли энергоэффективность. Мы приглашаем вас узнать больше о наших усилиях для разработчиков, найти лучшие практики, получить информацию и присоединиться к обсуждению на странице: developer.amperecomputing.com и community.amperecomputing.com.

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

Поделиться этой статьей


Leave a Reply

Your email address will not be published. Required fields are marked *