Usine logicielle : qu’est-ce ? et à quoi ça sert ?

Usine logicielle : qu’est-ce ? et à quoi ça sert ?

Une usine logicielle ? Et bien c’est une usine qui produit des logiciels comme une usine automobile pourrait produire des voitures … ça vous avance beaucoup … en tout cas, ce n’est pas un endroit où l’on emploie des salariés, qui ne voient nullement la lumière du jour et qui produisent continuellement des logiciels, enfin cela pourrait y ressembler car l’usine logicielle, elle ne se repose jamais vraiment mais voyons en quoi cela consiste

Une usine qui produit des logiciels en continu

L’objectif de la mise en place de cet outil de production est de donner la possibilité d’automatiser la construction et la livraison d’application tout en améliorant la maintenance de ceux-ci

Concrètement, elle prend le code source de vos applications (généralement sous Git), se charge d’appliquer des tests vérifiant que l’application fonctionne de la meilleure des façons possibles (il faut que les tests aient été écrits), va se charger de livrer votre application dans un environnement de tests par exemple, valider que ces tests en conditions réels se déroulent dans accrocs et pour les plus téméraire, livrer directement l’application en production, à chaud.

Vous l’aurez compris, c’est ni plus ni moins que le fonctionnement même d’une usine classique : on assemble, on produit, on teste, on réalise des contrôles qualité et au final, on livre

Est-ce que cela fonctionne pour tout ?

Oui, à partir du moment où vous avez une application, qu’elle soit une boutique en ligne, un blog, un site vitrine, votre extranet ou autre, tout peut rentrer dans le giron de l’usine logicielle

Chez Weobia, nous utilisons beaucoup cette façon de faire, y compris pour nos sites et blogs, d’ailleurs, c’est grâce à ça que nous avons pu réaliser ce blog selon la méthode du Headless CMS

Nous avons notre WordPress sur lequel nous produisons le contenu, et un Gitlab contenant le code source de notre blog réalisé avec Gatsby. Nous lançons une pipeline Gitlab qui se charge de lancer la compilation Gatsby, qui va alors récupérer le contenu sur le WordPress pour enfin envoyer ce contenu sur les serveurs de publication. Cette méthode nous permet de livrer des sites très performants, très peu consommateurs de ressources, de protéger WordPress et de continuer à l’utiliser pour publier et si l’étape de compilation échoue, la publication ne se fait pas, nous nous évitons tout risque d’avoir un site cassé en production

Quels sont les gains qu’on peut en retirer ?

  • Gain de temps : déploiements automatiques en quelques clics au lieu de jours de travail manuel.
  • oins d’erreurs, moins de retours en arrière, optimisation des ressources.
  • Tests automatisés, revues de code intégrées, détection précoce des bugs.
  • Intégration de scans de vulnérabilités et de bonnes pratiques de sécurité (DevSecOps), si on se place dans un système de container, on livre toujours la dernière version du container et donc de son environnement également (exemple un container avec Apache sera toujours livré avec la dernière version d’Apache et donc seuls les failles zeroday peuvent apparaître, les CVE sont automatiquement corrigées régulièrement et sans effort)
  • ises à jour fréquentes et fiables (CI/CD), avec un temps de mise sur le marché réduit.

Quelle solution avons-nous adopté ?

Chez Weobia, c’est Gitlab le chef d’orchestre. Il est chargé de livrer des containers, mais pas que … dès fois il peut livrer des binaires (pour les projets réalisés en Golang par exemple) ou bien carrément déployer en production des sites web.

Pour avoir une gestion des dépendances facilitée et avoir des dépendances régulièrement mises à jour, Renovate nous aide dans cette tâche, parfois, cela livre tout seul sans que nous ayons besoin de faire quoique ce soit, ce qui fait que nous avons un système à jour et sans effort.

Pour nos projets JavaScript / TypeScript, nous utilisons le runtime Bun. Dès que Bun publie une nouvelle version, tous les projets référençant Bun se mettent à jour et sont redéployés sans que nous ayons besoin de nous en occuper.

Enfin, régulièrement, certains projets sont publiés tous les jours, de sorte à pouvoir avoir du contenu régulièrement mis à jour (par exemple nos sites web)

FrankenPHP : mise en place de la CI/CD avec Gitlab
Headless CMS: notre blog en est un exemple
Elementor mon cher Watson !
SEO : Mobile avant tout