Développer des logiciels cloud : avez-vous l'ADN qu'il faut ?

Mrityunjay Kumar, vice-président des produits chez Zenoti, explique ce qu’il faut pour développer un logiciel cloud… Les logiciels cloud sont désormais la norme en matière de technologies d’entreprise. Les fournisseurs d’hébergement tels qu’Amazon, Microsoft et Google ont rendu le développement et le déploiement de logiciels cloud plus faciles que jamais. Si l’on ajoute à cela le rapport coût-efficacité de l’hébergement, il n’est pas surprenant que tout le développement logiciel […]

Emily MartinEmily Martin
|8 minutes de lecture|
Développer des logiciels cloud : avez-vous l'ADN qu'il faut ?

Mrityunjay Kumar, vice-président chargé des produits chez Zenoti , explique ce qu'il faut pour développer un logiciel cloud…

Les logiciels cloud sont désormais la norme dans le domaine des technologies d'entreprise. Grâce à des fournisseurs d'hébergement tels qu'Amazon, Microsoft et Google, il n'a jamais été aussi simple de développer et de déployer des logiciels cloud. Si l'on ajoute à cela le rapport coût-efficacité de l'hébergement, il n'est pas surprenant que tout le développement logiciel migre rapidement vers le cloud.

Cette tendance me rappelle les débuts de Visual Basic dans les années 1990. Grâce à son environnement de développement intégré (IDE) convivial et à son paradigme de programmation, Visual Basic a rendu le développement de logiciels de bureau simple et accessible. En effet, Visual Basic a abaissé le niveau de compétences requis pour devenir programmeur débutant. Ce qu’il n’a toutefois pas fait, c’est de faire de n’importe qui un bon programmeur, et il n’était pas facile de distinguer un bon programmeur d’un programmeur moyen. J'ai observé une tendance similaire dans la programmation Android. L'IDE a rendu si facile et si rapide le fait de devenir un développeur Android moyen qu'il est devenu difficile de trouver un développeur vraiment compétent.

Les logiciels cloud semblent suivre une évolution similaire. La facilité avec laquelle on peut créer et déployer une solution cloud a permis à de nombreux développeurs de se qualifier eux-mêmes de « développeurs cloud ». Il est difficile de distinguer un bon développeur cloud d’un développeur moyen. Il est donc très difficile de recruter de bons développeurs capables de concevoir des solutions pour le cloud.

Comme tout nouveau paradigme, le cloud comporte son lot de limites et de défis, et un bon développeur cloud doit posséder l’expertise nécessaire pour les anticiper et concevoir des solutions qui les contournent. Dans cet article, j’aimerais partager ce que mes années d’expérience dans le développement et le déploiement de solutions cloud m’ont appris sur la création de logiciels cloud à grande échelle. Je suis arrivé à la conclusion que le développement cloud nécessite un certain type d'ADN difficile à trouver chez les développeurs de logiciels traditionnels, mais il est possible pour les développeurs de se défaire de leur « approche non-cloud » et de réapprendre à développer pour le cloud. Si vous ne parvenez pas à trouver les bons collaborateurs, vous pouvez également faire appel à un prestataire de services d'externalisation informatique qui vous aidera à créer le bon outil sur la bonne plateforme.

Avant d'aller plus loin, précisons ce que j'entends par « logiciel cloud ».

Qu'est-ce qu'un logiciel en nuage ?

Il existe deux façons d'envisager les applications cloud :

  1. Applications conçues de manière indépendante du cloud et qui n'utilisent le cloud que pour leur déploiement.
  2. Applications conçues pour le cloud et utilisant celui-ci comme plateforme de développement

Chez Zenoti, c'est cette dernière approche que nous privilégions : un logiciel conçu pour le cloud afin de tirer parti de ses capacités et de contourner ses limites. Nous misons sur une architecture multi-locataires qui prend en charge tous les clients à partir d'une base de code et d'une version logicielle uniques. Le recours au cloud pour le déploiement constitue un avantage important, mais cela ne suffit pas.

Traditionnellement, les éditeurs de logiciels développaient des versions personnalisées de leurs logiciels pour leurs clients et les déployaient dans le cloud. Dans le cadre de cette discussion, nous ne considérons pas cela comme un véritable cloud d'entreprise, car cela revient simplement à transférer un système local vers un environnement cloud, sans tirer parti des capacités du cloud.

Pour mettre en place un système évolutif et essentiel à la mission sur le cloud, un développeur doit utiliser le cloud comme plateforme et concevoir son application en conséquence. Il ne suffit pas de l'aborder comme s'il s'agissait d'un logiciel d'application traditionnel.

En quoi le développement dans le cloud diffère-t-il du développement traditionnel ?

Il existe trois façons d'envisager le développement qui mettent en évidence les différences fondamentales entre le développement dans le cloud et le développement traditionnel.

Architecture du produit

Concevoir pour l'élasticité des ressources – Les ressources dans le cloud sont élastiques : vous pouvez en obtenir autant que vous le souhaitez, pour la durée exacte dont vous avez besoin. Un bon logiciel cloud doit être conçu pour évoluer horizontalement – en lançant de nouvelles instances du logiciel à la demande pour mieux gérer la charge – car c'est là que réside la force du cloud. Les logiciels traditionnels sont conçus pour évoluer verticalement – en ajoutant plus de puissance de calcul, de mémoire et de stockage à un parc de machines existant pour mieux gérer la charge. De telles applications ne peuvent pas évoluer correctement sur le cloud.

Pour tirer parti de l'élasticité, un bon logiciel de gestion de salon doit être composé de composants faiblement couplés et sans état. Ceux-ci doivent également pouvoir être déployés et mis à jour de manière indépendante. Cela permet de lancer autant d'instances d'un composant que nécessaire sur plusieurs machines virtuelles lorsque la charge du système est élevée. Cela garantit également que le système peut supporter une charge importante en période de forte affluence (comme à Noël) sans avoir à déployer des ressources coûteuses tout au long de l'année.

Conception pour la multi-location – Un logiciel cloud doit intégrer la multi-location dans son architecture afin de garantir qu’il n’y ait absolument aucun risque que les données d’un client soient accessibles à un autre. Il ne peut pas compter sur le bon sens des développeurs. De plus, les techniques de partitionnement doivent être mûrement réfléchies dès la phase de conception afin que les besoins en données et en ressources d’un client n’aient aucune incidence sur ceux d’un autre client.

Exploitation des logiciels

Sécurité, disponibilité et fiabilité – Étant donné qu’un cloud public est accessible à tous, garantir la sécurité exige la plus grande vigilance et doit être intégré dès la conception dans l’architecture du système. Par exemple, un cadre de développement d’API doit intégrer un modèle de contrôle d’accès et d’autorisations par rôle.

Étant donné qu'une application cloud regroupe tous ses utilisateurs au sein d'une base de code et d'une version uniques, les exigences en matière de fiabilité et de disponibilité du système sont très élevées. La moindre dégradation du service est ressentie par l'ensemble des utilisateurs de l'application, ce qui signifie que l'impact négatif est décuplé. La tolérance aux pannes et la capacité de reprise doivent être intégrées au système. L'infrastructure cloud peut elle aussi connaître des défaillances, et une bonne solution cloud doit être conçue pour assurer la redondance et la reprise après sinistre à grande échelle.

Surveillance – Il ne suffit pas de développer un logiciel : la surveillance en temps réel de l'application cloud devient un élément essentiel du logiciel. La conception du système doit intégrer des fonctionnalités de surveillance et un système d'alerte. Lors du développement, les ingénieurs doivent tenir compte des opérations en général et de la surveillance de l'état du système en particulier ; sinon, les opérations risquent d'être coûteuses et sources d'erreurs. Pour obtenir un logiciel cloud de qualité, il est indispensable de développer (ou d'intégrer) des outils complets pour la journalisation et l'analyse des erreurs, ainsi que pour la surveillance des performances des API et du système.

En savoir plus sur : logiciel de prise de rendez-vous pour salons

Culture d'ingénierie

Agilité et rigueur – L'équipe de développement et les processus doivent faire preuve d'agilité, car lorsque le logiciel est utilisé par des milliers de clients à partir d'une seule et même version du code, le moindre problème peut rapidement se multiplier par 1 000. Les défauts, les escalades et les demandes d'amélioration exigent tous une capacité à réagir rapidement. Les déploiements doivent être réguliers et fiables, et s'effectuer en quelques semaines plutôt qu'en plusieurs mois. Cependant, une application cloud ne peut échapper à la devise « une seule version pour tous les clients ». La conception des fonctionnalités et la correction des défauts doivent donc tenir compte de l’ensemble des clients. Cela peut parfois signifier imposer un changement à un client par ailleurs satisfait, car une modification du flux de travail est nécessaire pour quelques clients, mais aura un impact sur tous les clients. Les chefs de produit et les responsables techniques doivent faire preuve d’une grande rigueur dans leur conception, sans pour autant perdre en agilité.

Décisions fondées sur les données – Un bon logiciel cloud recueille des données sur chaque interaction de l'utilisateur avec le logiciel. Une solide culture d'ingénierie exploite ces données pour prendre toutes les décisions techniques. C'est le seul moyen de garantir que les modifications majeures puissent être mises en œuvre en toute sécurité, que les fonctionnalités inutilisées puissent être supprimées pour éviter tout gaspillage supplémentaire, qu'une fonctionnalité présentant des problèmes d'ergonomie puisse être identifiée avant que les clients ne s'en plaignent, et, globalement, de prendre les bonnes décisions concernant le produit.

Les vieilles habitudes ont la vie dure

Si vous êtes un développeur habitué aux méthodes traditionnelles de développement logiciel et que vous souhaitez devenir un bon développeur cloud, préparez-vous à désapprendre certaines choses et à en réapprendre d’autres. Vous devez vous familiariser avec les capacités offertes par les plateformes cloud, ainsi qu’avec l’architecture cloud qui a fait ses preuves en matière d’évolutivité auprès de grandes entreprises B2C et B2B, et cesser de penser en termes de systèmes locaux à évolutivité verticale. Vous devez également commencer à considérer le déploiement et la surveillance comme faisant partie intégrante de votre profil professionnel, et adopter une culture d’« agilité prudente » ainsi que la prise de décisions fondées sur les données. Fort de mon expérience auprès d’excellents développeurs cloud et de l’embauche de nombreux d’entre eux, je peux vous affirmer qu’il est difficile de se défaire de certaines mauvaises habitudes, mais que ce réapprentissage est très gratifiant et en vaut la peine. Il est difficile de changer son ADN, mais ce n’est pas impossible.

Ce qui vaut pour les développeurs vaut également pour les entreprises technologiques. Les organisations qui parviennent à développer une expertise en matière de logiciels cloud sont celles qui ont le cloud inscrit dans leur ADN ; elles recrutent des équipes partageant ce même ADN et continuent à aider leurs collaborateurs à se défaire de leurs anciennes habitudes et à acquérir de nouvelles compétences à mesure que de nouveaux employés rejoignent leurs rangs.

Avez-vous l'ADN du cloud ?


Emily Martin

Rédigé par

Emily Martin, rédactrice chez Zenoti

Une passionnée de lecture qui avoue volontiers son amour des langues et du jeu des mots. Elle est comblée lorsqu'elle est en pleine nature, que ce soit à cheval ou à ski, ou bien blottie avec un bon thriller. Dans ses écrits, Emily s'attache à partager les tendances et les perspectives qui influencent le secteur de la beauté et du bien-être.