Fermer

octobre 26, 2023

Migration Amadeus Cloud sur les instances Ampere Altra —


Cet article a été initialement publié par Ampère informatique.

« Vous ne connaissez peut-être pas Amadeus, car c’est une entreprise B2B […but] lorsque vous recherchez un vol ou un hôtel sur Internet, il y a de fortes chances que vous utilisiez en coulisses un service fourni par Amadeus », selon Didier Spezia, architecte cloud chez Amadeus.

Amadeus est un leader mondial de l’informatique du voyage, qui alimente les activités de nombreux acteurs de l’industrie du voyage : compagnies aériennes, chaînes hôtelières, agences de voyages, aéroports, etc. L’une des activités d’Amadeus est de fournir des services d’achat pour rechercher et tarifer des vols aux agences de voyages. et des entreprises comme Kayak ou Expedia. Amadeus prend également en charge des fonctionnalités plus avancées, telles que les requêtes basées sur le budget et les requêtes limitées par le calendrier, qui nécessitent le pré-calcul d’index multidimensionnels. La recherche de vols adaptés avec des sièges disponibles parmi de nombreuses compagnies aériennes est étonnamment difficile.

Obtenir la solution optimale est considéré comme un NP-problème difficile, donc pour fournir une réponse au mieux, Amadeus utilise une combinaison d’algorithmes et d’heuristiques de force brute et de graphes. Il nécessite des systèmes distribués à grande échelle et consomme beaucoup de processeurs, fonctionnant aujourd’hui sur des milliers de machines dans les locaux d’Amadeus. Pour répondre aux demandes des clients, Amadeus exploite plusieurs installations sur site dans le monde entier et exécute également des charges de travail sur plusieurs fournisseurs de services cloud.

Le projet

Il y a quelques années, Amadeus a lancé un vaste projet pluriannuel visant à migrer la plupart des ressources sur site d’Amadeus vers Azure. Pour ce cas d’utilisation spécifique, Amadeus a travaillé conjointement avec Microsoft pour valider les machines virtuelles (VM) Ampere basées sur ARM.

Au cours de la discussion, Mo Farhat de Microsoft a commenté :

De notre position…[Microsoft] veut donner le choix à nos clients. Nous ne conduisons pas [them] vers une architecture contre une autre… ou un CPU contre un autre. Nous souhaitons proposer un menu d’options et fournir des conseils fiables…

Au départ, dans le cadre de la transition, Amadeus n’était pas nécessairement intéressé par l’introduction d’une architecture différente. Selon Spezia :

Nous introduisons une architecture différente uniquement parce que nous attendons certains avantages… Nous sommes très intéressés par le rapport performances/prix que nous pouvons obtenir d’Ampère… Nous voulons avoir la possibilité de mélanger des machines avec des processeurs x86 traditionnels et des machines avec des processeurs Ampere et d’exécuter des charges de travail sur les processeurs. le mieux adapté à cette charge de travail.

Ils ont choisi une grande application C++ distribuée et gourmande en calcul comme première à s’exécuter sur Ampere, car ils estimaient que cela offrirait le plus grand avantage comparatif par rapport à x86.

Nous pensions que les machines basées sur ARM pourraient être une bonne solution, mais bien sûr, nous devions valider et confirmer nos hypothèses. Nous avons commencé par effectuer un certain nombre de benchmarks synthétiques. […] Les résultats ont été positifs, mais les benchmarks synthétiques ne sont pas extrêmement pertinents. L’introduction d’une nouvelle architecture CPU dans l’écosystème n’étant pas neutre, nous avions besoin d’une meilleure garantie et avons décidé de comparer avec du code d’application réel. […] L’application est une grande base de code C++. Cela dépend d’un bon nombre de librairies open source de bas niveau, plus quelques librairies middleware Amadeus, et enfin du code fonctionnel lui-même. Un sous-ensemble de ce code a été isolé pour que le benchmark puisse s’exécuter dans un banc d’essai.

L’un des facteurs qui ont permis la réussite du projet a été la capacité de l’équipe Amadeus à obtenir des serveurs Ampere dès le début du projet. Selon Didier :

Pour commencer, Amadeus a installé quelques machines équipées de processeurs Ampere Altra sur site. Ils ont été utilisés pour le travail de portage initial et font toujours fonctionner notre CI/CD aujourd’hui. Puisque nous sommes en pleine migration vers le cloud public et très dans le modèle hybride avec un écosystème complexe, nous avons apprécié la flexibilité de déployer certaines machines on-premise, avec la même architecture CPU que la VM livrée dans Azure par Microsoft. . Nous avons trouvé inestimable d’utiliser des machines exécutant l’architecture cible pour le CI/CD et les tests, plutôt que de procéder à une compilation croisée,

Le CI de l’application continue de fonctionner sur un serveur Ampere dans le laboratoire Amadeus.

Défis

Le portage de notre code a commencé par tout recompiler à l’aide d’une chaîne d’outils compatible Arm64 (cible Aarch64), avec des implications sur notre CI/CD.

Le processus de portage pour faire fonctionner ce code sur Ampere s’est très bien déroulé, même si certains problèmes ont été révélés. Certains comportements du compilateur spécifiques à la plate-forme, par exemple si le type de données « char » est signé ou non signé, étaient différents sur x86 et Arm64, et l’application faisait des hypothèses sur le comportement.

Pour compiler sa vaste base de code C++, Amadeus utilise à la fois les compilateurs GCC et Clang C++. Parmi les changements requis dans le cadre du portage, un certain nombre de dépendances open source ont nécessité des mises à niveau, pour profiter de la prise en charge améliorée d’Arm64. Certaines de ces mises à niveau impliquaient des changements d’API ou de comportement qui nécessitaient des modifications supplémentaires du code. De plus, plusieurs problèmes latents dans la base de code qui ne s’étaient pas révélés sur x86 ont été exposés dans le cadre de la migration, liés à un comportement non défini ou défini par la plateforme, ont été exposés et corrigés dans le cadre de la migration.

Déploiement

Dans le cloud, les applications Amadeus sont déployées sur des clusters OpenShift (la plateforme de conteneurs basée sur Kubernetes de Red Hat). Pour fonctionner en production, les applications nécessitent un écosystème middleware complet (bus de services d’entreprise, fonctionnalités de journalisation et de surveillance, etc.), également hébergé dans OpenShift.

Amadeus ne souhaitait pas migrer l’intégralité de son infrastructure applicative vers Arm64. Red Hat, un autre partenaire de confiance, a fourni une fonctionnalité Kubernetes permettant des architectures matérielles hétérogènes dans un seul cluster dans OpenShift en tant que fonctionnalité prise en charge.

Concrètement, cela signifie qu’un seul cluster OpenShift peut inclure à la fois des nœuds x86 et ARM Compute. En définissant des ensembles de nœuds avec des nœuds x86 et Arm64, et en utilisant des étiquettes et des « teintes » pour les conteneurs à déployer, les développeurs peuvent facilement décider du type de machines virtuelles sur lesquelles les pods sont planifiés. Les composants de support de l’infrastructure d’applications Amadeus peuvent donc fonctionner sur des machines virtuelles x86 traditionnelles, tandis que les pods d’application qu’Amadeus décide d’exécuter pour des raisons de coût et de performances sur Arm64 peuvent fonctionner sur des machines virtuelles Azure Dps v5 alimentées par des processeurs Ampere Altra.

Les clusters hétérogènes sont essentiels pour prendre en charge une migration incrémentielle et éviter de doubler le nombre de clusters OpenShift à exploiter.

Résultats

Évidemment, avant de passer à la production, Amadeus souhaitait valider ses hypothèses par des analyses comparatives. Avec le benchmark synthétique cpubench1a, avec 32 machines virtuelles vCPU, une seule machine virtuelle Ampere Altra (D32ps_v5) a fourni un débit brut 20 % plus élevé et une amélioration performances/prix de 50 % par rapport aux machines virtuelles Intel équivalentes, et un débit brut de 13 % et une performance/prix de 27 %. débit sur des machines virtuelles AMD équivalentes.

Lors de l’analyse comparative avec le benchmark réaliste des applications d’achat, il y avait un compromis entre le débit et le temps de réponse. Plus le débit est élevé, plus le temps de réponse est impacté. Les machines virtuelles Ampere Altra ont généré une amélioration performances/prix de 47 %, avec une dégradation acceptable de 11 % du temps de réponse moyen par rapport aux machines virtuelles Intel, et une amélioration performances/prix de 37 % avec une dégradation de 9 % du temps de réponse moyen par rapport aux machines virtuelles AMD.

Amadeus a désormais porté suffisamment de composants d’application pour exécuter l’application réelle (pas seulement des tests de performance). L’entreprise termine actuellement les tests d’intégration et valide les derniers éléments de la plateforme. Une fois cela fait, Amadeus commencera à accélérer l’environnement de production dans plusieurs régions Azure.

Conçus pour le cloud computing durable, les premiers processeurs cloud natifs d’Ampère offrent des performances élevées prévisibles, une évolutivité de la plateforme et une efficacité énergétique sans précédent dans l’industrie. Nous vous invitons à en savoir plus sur nos efforts de développement, à trouver les meilleures pratiques, des informations et à rejoindre la conversation sur : développeur.amperecomputing.comet communauté.amperecomputing.com.

Parlez à notre expert équipe de vente sur les partenariats ou pour obtenir plus d’informations, ou obtenez un accès d’essai à Ampere Systems via notre Programmes d’accès pour les développeurs.






Source link

octobre 26, 2023