Le stack de plateforme de cloudtec
Chaque plateforme que nous développons démarre sur la même base. De quoi se compose ce stack, comment il est né et quels détours nous avons pris en chemin.
L’article Le stack, base des plateformes en ligne et des portails expliquait ce qu’apporte un stack logiciel en général. Ici, on entre dans le concret : notre propre stack, ses composants et les raisons de sa construction.
Les briques sont, sans exception, des composants open source éprouvés. Il en résulte une base conçue pour une exploitation de longue durée, qui reste pourtant flexible : certaines parties peuvent être remplacées sans que tout en dépende.
Comment le stack est né et ce qui a d’abord mal tourné
Chez nous aussi, chaque projet évolue dans le triangle temps, qualité et budget. L’idée de toujours démarrer les nouveaux projets sur la même base logicielle et infrastructurelle est née d’un simple constat : nous reconstruisions sans cesse les mêmes fondations.
La première tentative a pourtant échoué. Les nouveaux développements ne pouvaient pas être réintégrés dans le stack ; il ne pouvait donc pas grandir avec les projets, et la mise en place n’était pas plus rapide pour autant. La solution a été le branching et les subtree splits : depuis, les améliorations issues d’un projet reviennent dans la base commune.
Un deuxième détour a concerné les templates. Au début, nous en utilisions beaucoup de différents, ce qui rendait la gestion et la conception inutilement laborieuses. Avec le choix d’une bibliothèque de templates fixe, le développement et le design sont devenus homogènes. Tout reste adaptable à l’identité visuelle et aux souhaits de la clientèle. Dans le même temps, nous avons passé la langue des applications de l’allemand à l’anglais.
Le processus de déploiement a lui aussi été uniformisé pas à pas. Depuis, l’interruption pendant un déploiement est d’environ 20 secondes au maximum. Nous retravaillons en continu la configuration des serveurs et des bases de données ainsi que la gestion du système de fichiers. Comme le stack va de l’infrastructure jusqu’au logiciel, l’installation est en grande partie standardisée. Cela réduit la complexité d’une plateforme et simplifie son exploitation.
Les couches du stack
Pour le choix des technologies, des frameworks et des langages, un principe s’applique : l’open source. Ces composants sont développés en continu, se laissent adapter en profondeur et ne nous lient pas à un fournisseur.
Le stack est divisé en quatre couches :
- La couche infrastructure fournit la base technique sur laquelle tout fonctionne.
- La couche plateforme fournit les frameworks et les fonctions récurrentes d’une plateforme en ligne.
- La couche logicielle correspond au développement sur mesure pour chaque client ou cliente.
- La couche sécurité recouvre les trois autres avec la surveillance, la détection d’erreurs et des sauvegardes externalisées.
La couche infrastructure
Sans elle, aucune application ne tourne. Nous avons opté pour un environnement uniforme avec Docker : il n’a plus besoin d’être configuré pour chaque projet, avec sa propre version de PHP et son propre système d’exploitation. En local, on obtient une copie de l’environnement de production avec les mêmes configurations. Cela rend la mise en place et le développement rapides, et la recherche d’erreurs prévisible.
Docker sépare l’application de l’infrastructure. Le système d’exploitation est conteneurisé et abstrait. C’est aussi ainsi que nous fournissons des services auxiliaires comme l’antivirus et l’indexation de PDF, qui communiquent en local avec les conteneurs du projet.
S’y ajoute Portainer pour la gestion des conteneurs : gérer, configurer, orchestrer et sécuriser les conteneurs de manière centralisée, avec une interface web pour le quotidien.
L’hébergement, les conteneurs et le centre de données virtuel (et donc toutes les données des projets) restent chez nous. Nous exploitons les serveurs et sommes responsables de la gestion des versions. Les données de la clientèle sont isolées dans un conteneur dédié et ne peuvent pas se mélanger.
Deux autres composants de cette couche sont la sécurité et le DevOps. Grâce au DevOps, une grande partie des processus de déploiement est automatisée. Côté sécurité, on trouve un pare-feu et un pare-feu applicatif web, la segmentation du réseau ainsi que des contrôles automatisés dans le processus de build.
La couche plateforme
La base est formée par Symfony et Sylius, tous deux basés sur PHP et extensibles à volonté. Symfony fournit des composants réutilisables pour les applications web, les API et les microservices.
Nous avons choisi Symfony parce qu’il n’apporte justement pas ce que d’autres frameworks imposent, un CMS tout prêt par exemple. Sylius s’appuie sur lui et fournit les fonctions et les API nécessaires à l’exploitation d’une boutique en ligne.
Sur cette base, nous avons ajouté ce dont une plateforme en ligne a généralement besoin : des mécanismes de grille, des filtres, la gestion des utilisateurs et les fondations pour la messagerie. RabbitMQ s’y ajoute pour que les interfaces puissent être connectées de manière transactionnelle et sûre, ainsi qu’API Platform pour les points de terminaison REST et GraphQL.
La couche logicielle
C’est ici que le stack rencontre le développement sur mesure. Il est étendu et adapté selon les exigences du projet : interface, modules spécifiques à la clientèle, rôles et accès.
Techniquement, les limites sont larges ; la question est généralement ailleurs. Le bénéfice d’une solution spéciale justifie-t-il son effort, à la construction et à chaque mise à jour ultérieure ? Sinon, la variante standard est la meilleure réponse.
Ce que le stack nous apporte
- De nombreuses applications métier ont des exigences similaires : listes, filtres, gestion des utilisateurs, workflows.
- Un nouveau projet ne part pas de zéro.
- Qui rejoint un projet existant en connaît déjà la structure.
- Les fonctions récurrentes sont développées une fois et utilisées plusieurs fois.
- Les composants de base sont testés de manière approfondie, ce qui profite à chaque projet.
- Moins de développement maison, c’est moins de risque technique.
Le stack n’est pas un produit fini, il continue de grandir avec chaque projet. Ce qui a fait ses preuves une fois est à la disposition de tout le monde la fois suivante.