22 novembre 2019

4min

Développement IT

Dans nos téléphones, nos télévisions, nos voitures, notre électroménager, les jouets de nos enfants, le logiciel s’est immiscé dans notre vie quotidienne, jusqu’au fond de nos poches. L’industrie du développement logiciel est l’une des plus dynamiques aujourd’hui.

Le logiciel est partout.

Les développeurs logiciels sont demandés partout à travers le monde. Le « développement logiciel » désigne, quant à lui, le processus global impliqué lors de la prise en charge d’un projet logiciel, de sa conception à sa livraison en production.

Les technologies évoluent rapidement. Chaque année, de nouveaux langages apparaissent. Frameworks, méthodologies, architectures. Ce qui est à la mode aujourd’hui sera peut-être obsolète l’année prochaine. Dans ce contexte de transformations rapides, avoir un avantage concurrentiel est primordial pour un éditeur de logiciel. La satisfaction client et la qualité du code sont aussi importantes à prendre en compte que les traditionnelles mesures de rapidité et de vélocité. Plusieurs tendances émergent pour répondre à ces enjeux.

Les architectures Microservices pour repenser les monolithes

Les monolithes sont des applications massives, fortement couplées, difficilement évolutives et essentiellement constituées de 3 blocks:

  • IHM
  • Base de données
  • Application (côté serveur)

Chaque développeur doit avoir l’application complète dans son environnement de programmation. Ainsi, développer de nouveaux services ou fonctionnalités contraint le développeur à modifier tout ou partie de l’application, ce qui conduit souvent à des erreurs qu’il est difficile d’anticiper, d’identifier et d’analyser.

Ces inconvénients amènent à repenser les modules comme des services et l’application comme une suite de services. D’où l’existence d’une architecture dite en « micro services ». Chaque service est indépendant. Il peut être écrit dans différents langages de programmation et, surtout, réalisé par différentes équipes. Il sera déployé indépendamment. La complexité de l’application, ainsi cassée en modules, sera plus facile à maintenir tels quels et, donc, plus faciles à faire évoluer.

Les plateformes de Continuous Integration (CI) et Continuous Delivery (CD) industrialisent la qualité des développements

Dans le domaine des technologies, l’utilisateur attend aujourd’hui que tout se mette à jour très vite. Un produit qui n’évolue pas sera vite obsolète et remplacé.

Problème. Car la plupart des équipes de développement ne peuvent livrer leurs services aussi rapidement et fréquemment. De longues phases de recettes manuelles demeurent indispensables. Les tests unitaires sont encore trop peu fréquents, les process manuels, longs et sources d’erreurs. A cela s’ajoute le manque d’automatisation – ou le peu efficacité – des processus de build et de déploiement.

Les pratiques de Continuous Integration (CI) et Continuous Delivery/Deployment (CD) constituent des solutions permettant aux équipes de délivrer des produits logiciels de qualité, fréquemment et automatiquement, jusqu’à la production. Ainsi, les équipes délivrent et capturent le feedback des utilisateurs plus rapidement quand ils disposent d’une solution de CICD, tout en déclarant moins d’anomalies à la livraison.

DevOps comble le gap entre le développement et l’exploitation des systèmes

Devops, à mi-chemin entre le développement logiciel (Dev) et l’exploitation des systèmes (Ops) désigne, dans son sens le plus large, une philosophie ou une culture favorisant une meilleure communication entre opérationnels et développeurs.

Cette approche s’applique, dans le domaine des technologies, à des collaborateurs ayant des compétences pour travailler à la fois en tant que développeur et ingénieur système. Ils mettent à disposition des outils et des processus permettant d’accélérer et d’automatiser le développement, l’intégration et le déploiement.

La philosophie DevOps est donc une suite logique dans l’application des valeurs et des principes agiles, au-delà de l’équipe de développeurs. Mais comme tout changement et toute transformation, l’adoption réussie des pratiques DevOps au sein d’une équipe ou d’une entreprise est un challenge difficile qui perturbe les processus établis, les définitions de rôle, les systèmes de récompense, les modèles de gouvernance et de déploiement.

Poussée par le Cloud, les architectures Serverless font leur apparition

La montée en puissance des infrastructures hébergées dans le Cloud a rendu possibles de nombreuses opportunités. Au-delà des architectures Microservices, du DevOps et des Conteneurs, un nouveau type d’architecture fait son apparition : les architectures sans-serveur, dites « Serverless ».

À l’instar de nombreuses tendances en matière de logiciel, il n’existe pas de définition unique du terme Serverless. Il englobe deux domaines différents qui se chevauchent :

  • Serverless peut définir des applications qui s’appuient massivement ou totalement sur des services managés par des cloud providers, composées de nombreuses bases de données accessibles dans le Cloud (Parse, Firebase), les services d’authentification (Auth0, AWS Cognito) et d’autres services.
  • Serverless peut également définir un modèle dans lequel le fournisseur de services Cloud (AWS, Azure ou Google Cloud) est responsable de l’exécution d’un morceau de code en allouant de manière dynamique les ressources. Le code est généralement exécuté dans des conteneurs sans état pouvant être déclenchés par divers événements, notamment des requêtes http, des événements de base de données ou des services de file d’attente. Le code envoyé au fournisseur de Cloud pour l’exécution se présente la plupart du temps sous la forme d’une fonction. On parle alors de FaaS : “Function as a Service”. Chaque Cloud provider dispose de son implémentation : AWS Lambda, Azure Functions et Cloud Functions de Google.

Ces pratiques ont été adoptées par les éditeurs de logiciels qui ont eu le plus de succès. Comprendre comment les équipes peuvent utiliser ces pratiques pour accélérer le développement donne un avantage concurrentiel.

Nelson Godinho

Partner, Industrie, Distribution, Energie, Techstud.io