06/04/2022
Au fur et à mesure des développements, les ressources statiques évoluent et une nouvelle version est nécessaire à chaque étape. Pour faciliter le travail de nos équipes et la gestion de nos ressources, nous avons donc imaginé une solution capable d’héberger différents types de contenu et leurs différentes versions : l’A7 (prononcer /ˈasɛt/).
Qu’est-ce qu’une ressource statique ?
Les ressources statiques sont des fichiers immutables, c’est-à-dire non modifiables. En développement web, il s’agit par exemple d’un élément qui agrémente un site, comme une image ou un fichier .css.
Or, dans une entreprise technologique comme Bouygues Telecom, une même ressource peut être utilisée dans plusieurs projets simultanément.
Notre pôle Architecte Logiciel Produits Transverse a ainsi développé l’A7.
Capable de gérer plusieurs versions d’une même ressource statique, cet outil (distribué sous licence Open Source) permet d’améliorer l’autonomie des équipes qui peuvent travailler sur leurs propres projets sans impacter ceux des autres.
Techniquement, comment ça marche ?
Une philosophie : l’immutabilité.
Il s’agit de rendre non modifiable une ressource lors de sa mise à disposition. Par la suite, pour mettre à jour cette ressource, il faudra en importer une nouvelle version. A7 se chargera de la rendre disponible sans pour autant écraser les versions antérieures.
Deux composants sont essentiels à l’A7 :
- le service en lui-même, accessible par les consommateurs, et qui permet la gestion des versions courtes.
En savoir plus dans le README du projet. - un opérateur Kubernetes, afin de gérer le déploiement d’A7 sur une infra kube et de publier du contenu de façon multi-tenant.
Définition
Un opérateur est un contrôleur Kubernetes sur mesure qui utilise des ressources personnalisées pour gérer des applications et leurs composants. L’utilisateur fournit une configuration et des paramètres de haut niveau par l’intermédiaire d’une ressource personnalisée.
Source : Un opérateur Kubernetes, qu’est-ce que c’est ?
Plus concrètement, l’opérateur intégré se charge de consommer les spécifications des ressources sur-mesure ou Custom Resources : fichier, nom, version, point d’entrée, type d’exposition attendue, etc.
Tous les Namespaces dotés d’un objet Kubernetes “A7Ressource”, de toutes nos Feature Teams, sont ainsi renseignés.
Pour chaque Namespace portant un objet “A7Service”, l’opérateur déploie les objets Kubernetes nécessaires aux ressources statiques présentes sur le cluster, tout en respectant les spécifications attendues par la feature team. Des pods nginx, configurés avec l’ensemble des fonctionnalités prévues et accessibles en open-source sur github, seront ajoutés aux Namespaces.
Les Features Teams peuvent ainsi mettre à disposition n’importe quel fichier statique de leurs processus tout en choisissant sa portée de service, le tout, via un simple fichier de configuration.
Pour garantir la qualité de service, la haute disponibilité, ainsi qu’une gestion de montée (et descente) en charge, A7 est hébergé sur l’infra kube de Bouygues Telecom. La gestion du code a, quant à elle, été entièrement automatisée. L’écriture d’opérateurs en Python directement intégrés à notre chaîne d’outil d’intégration et de livraison assure aux équipes une autonomie complète.
Des solutions techniques créées par Bouygues Telecom
À l’image du projet A7, chez Bouygues Telecom, nous développons en interne nos propres outils techniques.
Pour nos équipes, c’est un moyen de monter en compétences et d’affiner leurs expertises. Nous innovons en permanence pour surmonter chaque situation. De plus, si ces outils sont utiles pour nous, ils le seront pour d’autres. C’est aussi ça, mettre la technologie au service du plus grand nombre.
Découvrir nos métiers technologiques
Découvrir notre GitHub
Découvrir notre stack technique