Chez eBay, les équipes produit peuvent choisir parmi plusieurs piles (Java Spring / Spring Boot, Nodejs, Python, etc.) pour implémenter plus de 3000 interfaces utilisateur frontales d’eBay, des microservices, des applications de traitement par lots et de messagerie. L’équipe de la plate-forme d’application est une équipe centrale qui opérationnalise les projets open source à utiliser sur eBay en intégrant des fonctionnalités horizontales telles que la surveillance et l’observabilité, la journalisation, le traçage, la protection de la sécurité, l’authn et l’authz, etc. En outre, l’équipe de la plate-forme d’application fournit également les conteneurs / environnements sous-jacents dans lesquels les applications seront exécutées. Une mauvaise version de l’équipe de la plate-forme d’application peut endommager de nombreuses applications lors de la mise à niveau vers la dernière version de la plate-forme. Par conséquent, la certification des versions de la plate-forme est d’une importance capitale pour l’équipe de la plate-forme d’application. Cet article décrit comment nous avons utilisé les opérateurs Kubernetes, les graphiques Helm et les pipelines Jenkins pour parvenir à une automatisation complète de la certification de la qualité des logiciels et à la comparaison automatisée des résultats des tests.

Les types d’ensembles de modifications qui doivent souvent être certifiés:

  • Versions du framework:

    • Versions de mise à niveau à l’échelle du site

    • Patchs pour la version micro

    • Contributions inter-équipes

  • Mises à jour d’exécution:

    • Correctifs d’exécution pour JDK, Tomcat, Envoy et Node.j.

  • Mises à jour du système d’exploitation:

    • Certifications de cadre avec de nouvelles images de conteneurs

  • Autre:

    • Certification du système d’exploitation: Kernel + système d’exploitation

    • Certification du conteneur d’applications eBay

Nous avons conçu la solution de certification pour être efficace et éviter les tests manuels et l’analyse des résultats. De plus, nous avons développé la solution de manière à ce qu’elle soit auto-entretenue et puisse réaliser tout type de certification.

La solution de certification fournit un modèle d’automatisation standard et peut orchestrer et traiter plusieurs exigences et combinaisons de certification complexes. Des suites de certification bien définies sont proposées pour différents types de demandes de certification.

des détails

Unité (s) de certification

Une unité de certification est une unité autonome qui effectue une partie de la certification, notamment:

  • Simple: juste le cas de test

  • Cas de test + application de test + pipelines

  • Test de performance

  • Miroir de signalisation avec comparaison de réponses

Diagrammes de casque de certification

Chaque catégorie de certification (certification d’image, certification de version de cadre, certification de mise à niveau du noyau, etc.) possède son propre diagramme de casque qui contient les modèles de l’unité de certification et des autorités de certification. Pour déclencher la certification, le diagramme de casque approprié doit être installé dans un cluster Kubernetes avec des paramètres fournis par l’utilisateur.

Les instances CRD de certification et de graphique sont créées en fonction du graphique du casque et des paramètres d’entrée utilisateur. L’autorité de certification définit le référentiel Git du pipeline Jenkins et les paramètres du pipeline, tandis que l’autorité CRD du graphique définit les paramètres généraux, les groupes d’unités de certification et leurs relations de dépendance.

Schéma du contrôleur CRD et du contrôleur de certification

Les contrôleurs sont les principaux organisateurs de l’ensemble de la solution d’automatisation. Le contrôleur de diagramme de certification est responsable de la gestion de toutes les instances des unités de certification, par ex. B. pour l’application des dépendances, la pause / reprise / annulation de la certification, l’agrégation du statut et du résultat de chaque instance d’unité. Le contrôleur de certification contrôle le cycle de vie complet d’un travail de pipeline exécuté via le service de certification. De plus, chaque tâche échouée est corrigée en essayant à nouveau d’améliorer la probabilité de succès.

Service de certification

Le service de certification est le service de coordination entre le contrôleur de certification et le service Jenkins backend. Il fournit des API RESTful pour exécuter et interroger l’action des contrôleurs et déléguer l’action de requête au serveur Jenkins backend pour qu’elle s’exécute. Tous les pipelines Jenkins sont créés et supprimés selon les besoins. Le service de certification enregistre également les journaux des travaux avant de supprimer le pipeline.

Scripts de pipeline Jenkins modulaires

Le débit du pipeline varie en fonction du type d’unités de certification individuelles. Nous avons créé des scripts de pipeline modulaires en tant qu’étapes autonomes afin que différents flux de pipeline puissent être créés par réutilisation.

Nous avons également développé des modules de pipeline pour faire une comparaison de réponse en transférant un pourcentage du trafic en direct à l’hôte cible avec n + 1 code, charge et puissance (à l’aide de JMeter et Taurus) etc. et les métriques (temps de transaction, TPS, GC) , mémoire, etc.)

Résultats

Développer une expérience de certification unifiée et évolutive est un énorme pas en avant vers notre objectif d’automatisation complète de la certification de la qualité des logiciels et de la comparaison automatisée des tests. Nous avons créé divers modules fonctionnels (par exemple, la mise à niveau du framework, le déploiement de code, l’analyse des résultats, etc.) en utilisant des bibliothèques de pipeline Jenkins réutilisables qui sont utilisées pour instancier des unités de certification. Une unité de certification peut facilement être incluse dans toutes les tables de certification en ajustant les paramètres et les seuils d’erreur.

Les membres de l’équipe peuvent utiliser le portail de certification en libre-service pour lancer des tâches de certification sans avoir à se soucier des configurations complexes. Des mécanismes de notification avec des seuils d’erreur configurables sont disponibles pour un dépannage immédiat. Notre solution de certification nous a également aidés à réduire le temps global de certification de quelques jours à quelques heures. En tirant parti du mécanisme de réconciliation des contrôleurs Kubernetes, nous avons rendu les problèmes de réseau et les dépendances non fiables plus résilients et réduit l’implication des membres humains de l’équipe.

Constatations et suggestions

Concevez votre technologie en gardant à l’esprit l’évolutivité. Parfois, la capacité et l’infrastructure sous-jacente doivent être mises à jour pour répondre aux besoins de votre projet – par ex. Un mécanisme de déploiement amélioré, une sélection de nœuds, un générateur Jenkins léger, un cluster de basculement, etc.

Soyez courageux et essayez de nouvelles choses. Parfois, les logiciels open source résolvent déjà un sous-ensemble de problèmes et peuvent servir de base utile au lieu de partir de zéro. Après tout, il est important de continuer à innover – en gardant à l’esprit les avantages à long terme – pour obtenir un effet de volant qui rassemble toutes vos améliorations dans un système logiciel cohérent et optimisé.

Prochaines étapes

Améliorer la vitesse des développeurs et doter notre équipe d’ingénieurs d’outils de classe mondiale est très important pour offrir de belles expériences à nos clients. Nous innovons constamment en évaluant les normes et les meilleures pratiques de l’industrie et en les intégrant dans notre SDLC. Nous travaillons sur de futures améliorations pour la certification de la qualité des logiciels:

Pipeline de CD Cloud Native

Nous prévoyons d’utiliser Tekton, un framework open source puissant et flexible pour la création de systèmes CI / CD, pour les pipelines et leur intégration dans les contrôleurs CRD.

Service d’analyse des pannes alimenté par l’IA

Nous travaillons à la classification des défaillances, à l’analyse des causes profondes et à la prévision des défaillances futures à l’aide de l’apprentissage automatique.

Intéressé par une carrière sur eBay? Nous recrutons! De rien regarde iciavec nos postes vacants actuels.

Cet article a été initialement publié le La nouvelle pile le 22 mars 2021.

Déni de responsabilité

eBay Inc. a publié ce contenu sur 5 avril 2021 et est seul responsable des informations qui y sont contenues. Distribué par Publicité, inchangé et inchangé, le 5 avril 2021 15:07:02 UTC.



Source link

Recent Posts