Orchestration du cloud : que faire si vous n'avez pas assez d'expertise DevOps

Le DevOps n'est plus une question de savoir s'il est nécessaire ou non, mais plutôt de savoir quand l'adopter. Mais plusieurs problèmes existent : le recrutement, la formation, les workloads...

Aujourd’hui couramment utilisé dans les équipes de développement, le mouvement DevOps a émergé au début des années 2000 lorsque les équipes informatiques opérationnelles et de développement ont exprimé leurs inquiétudes quant au modèle traditionnel. En effet, par le passé, le développement et les opérations étaient séparés. Les développeurs écrivaient le code, et les administrateurs système étaient responsables de son déploiement et de son intégration. La communication entre ces deux silos était limitée et les spécialistes de chaque domaine travaillaient séparément sur un même projet.

Contraction de “développement” (Dev) et “opérations” (Ops), DevOps est l'union des personnes, des processus, des technologies et des outils qui visent à améliorer la capacité d'une entreprise à livrer applications et services à un rythme élevé, dans un processus d’amélioration continue.

Apparaît alors le poste d’ingénieur devOps, un expert très recherché, à mi-chemin entre le développeur logiciel et l’administrateur système. 

Selon le dernier rapport 2021 Enterprise DevOps Skills Report d’Upskilling et du DevOps Institue, le DevOps n'est plus une question de savoir si les organisations en ont besoin ou non, mais plutôt de savoir quand l'adopter. Plusieurs problèmes majeurs existent : le recrutement et / ou la formation des ingénieurs DevOps, ainsi que la question de leur charge de travail. 

Recrutement difficile, formations coûteuses régulières 

Encore plus que les autres métiers, l’ingénieur devOps se doit d’être un véritable couteau suisse, ce qui ne facilite pas le recrutement ainsi que la formation des salariés.

Les entreprises recruteuses demandent énormément de compétences telles que : 

  • Expertise en matière de gestion des systèmes ("Sysadmin")
  • Compétences en programmation (en plusieurs langages, JavaScript, python, etc)
  • Connaissance du cycle de vie du développement logiciel (SDLC)
  • Capacité technique à mettre en place une infrastructure adaptée aux microservices
  • Une expertise sur la gestion d’infrastructure on-premise, sur un fournisseur cloud, voir plusieurs fournisseurs cloud,
  • La volonté de se tenir au courant des nouvelles technologies
  • Une compréhension des processus Assurance Qualité (QA)

En outre, les ingénieurs DevOps ont besoin de compétences générales, telles que le leadership, la communication, la collaboration, l'empathie et la résolution de problèmes. Il peut être difficile de cultiver ces compétences si vous n'êtes pas déjà dans une organisation qui utilise un modèle DevOps.

Dans les compétences “must-have”, on retrouve traditionnellement les compétences et connaissances techniques, deuxièmement l’automatisation et troisièmement les compétences relationnelles. Cependant, depuis la pandémie, l'automatisation passe en première place des priorités en matière de compétences, les compétences relationnelles venant en deuxième position et les compétences techniques en troisième. Ce n'est pas une surprise, car le passage au télétravail implique une plus grande automatisation des flux de travail avec l'entreprise et au sein de l'IT afin de minimiser le risque inhérent aux tâches et processus manuels. 

De nos jours, il est également devenu essentiel en devOps de comprendre le fonctionnement des plateformes de cloud computing, les technologies modernes de computing telles que les microservices et les conteneurs… car il n’y avait, jusque-là, pas d’autres alternatives. Ces nouvelles technologies permettent d’améliorer la transformation numérique, mais aussi de gérer efficacement et développer l'entreprise. 

Mais si vous n’avez pas les compétences en interne ? 

Selon le dernier rapport 2021 Enterprise DevOps Skills Report d’Upskilling et du DevOps Institue, la moitié des interrogés cherchent d’abord à recruter et à former en interne les compétences DevOps, avant de se tourner vers un recrutement extérieur. 

Si la formation en interne n’est pas possible, il faut ainsi recruter ou faire appel à des compétences externes chez des entreprises de service du numérique (ESN).

Malheureusement, les profils ingénieurs DevOps sont très durs à recruter (Tech Hiring Survey, 2022 | CodinGame et CoderPad) et les équipes font face à de nombreux challenges selon le rapport Upskilling 2021 : 

  • 64% ont des difficultés à trouver des talents DevOps compétents
  • 57% ont des difficultés à déterminer quelles seraient les compétences DevOps dont ils ont besoin
  • 41% ont des difficultés à attirer les talents DevOps

Dans l'ensemble de la filière informatique, le DevOps est constamment l'un des domaines à la croissance la plus rapide et à la valeur la plus élevée de la profession. Cette demande se répand rapidement dans de nombreux rôles et secteurs. En fait, si rien ne change, au cours des cinq prochaines années, les besoins en compétences DevOps devraient augmenter de 122 %, ce qui en fait l'une des compétences à la croissance la plus rapide de toute la profession. 

Le DevOps induit une charge de travail importante

Dans la mise en place d’un système DevOps, on retrouve notamment des actions importantes comme :

  • l’implémentation d’automatisation, qui permet d’éliminer les erreurs humaines et améliore la productivité sur le long terme,
  • l’optimisation du CI/CD qui permet de réduire les coûts et le temps de mise en production d’une fonctionnalité,
  • la gestion de plusieurs environnements (staging, test, production…) au fur et à mesure que l’application devient complexe
  • la mise en place du DevSecOps (sécurité) dès le début du développement (lorsque c’est possible) et sa maintenance
  • la collecte, la surveillance et l’analyse des données afin d’améliorer les processus et les performances
  • la réduction de la dette technique pour améliorer le déploiement de fonctionnalités et leur qualité sur le long terme
  • le provisioning des ressources cloud pour les équipes de dev demandant et obtention des ressources auprès des fournisseurs, via l’achat des serveurs et la gestion globale de l’infrastructure cloud, etc.

Malheureusement, le temps que les ingénieurs DevOps passent à s’occuper de l’infrastructure (provisionnement, déploiement, sélections de clouds et leurs gestions…) induit inévitablement une réduction du temps passé au développement du produit et à son amélioration (automatisation, CI/CD, analyse de la donnée…). 

Quand une entreprise investit des ressources humaines DevOps sur un ou plusieurs fournisseurs de cloud, elle investit sur le fournisseur de cloud et non pas sur son propre produit. 

Maintenant, y a-t-il un moyen de résoudre ces problèmes ?

Oui, et voici quelques solutions qui pourraient être utiles pour votre entreprise :

> Réduisez votre charge de travail DevOps en adoptant un nouveau concept : Containers-as-a-Services 

Un CaaS est un système d'exploitation permettant d'exécuter des conteneurs et de fournir des ressources cloud.  Un CaaS est une sorte d'intergiciel qui connecte les différents composants microservices de votre application à leurs instances. Il facilite le développement, le déploiement et la gestion des applications en offrant des outils pour créer des applications natives du cloud au niveau du conteneur. Le CaaS permet aux développeurs de se concentrer sur l'écriture du code plutôt que de gérer l'infrastructure du cloud ou de s'inquiéter des problèmes d'évolutivité et de performance.

Le CaaS permet de réduire à zéro toute la charge de travail de DevOps infrastructure en fournissant :

La flexibilité : Le CaaS vous permet d'exécuter simplement vos applications sur n'importe quel type d'infrastructure, qu'il s'agisse de bare-metal, de machines virtuelles, de clouds publics ou privés, d'infrastructures hybrides ou multi-clouds ou de conteneurs. Vous avez ainsi la possibilité d'augmenter ou de diminuer instantanément la taille de vos applications selon vos besoins, sans vous soucier des problèmes de compatibilité entre votre code et l'infrastructure de base.

La scalabilité : Avec un CaaS, vous pouvez dimensionner au niveau du conteneur et/ou de l'application. Si une instance unique d'une application tombe en panne, tous les conteneurs qui lui sont associés ne sont pas détruits. Au contraire, l'application peut être redémarrée rapidement sur une autre instance tout en conservant son état, de sorte que les utilisateurs ne souffrent d'aucun temps d'arrêt.

L'efficacité : Le CaaS est plus efficace car il nécessite moins d'infrastructure et il a plus de granularité que le PaaS, ce qui vous permet d'économiser sur vos coûts de cloud computing. Et comme il est plus facile à utiliser, vous n'aurez pas non plus à payer pour la gestion, la maintenance ou le support. Et comme le CaaS ne nécessite pas Kubernetes, vous n'aurez pas à payer pour toutes les ressources supplémentaires nécessaires pour maîtriser Kubernetes, des ressources qui pourraient être mieux utilisées ailleurs dans votre entreprise !

> Economisez en formation DevOps et sur les fournisseurs cloud 

L'expertise nécessaire pour provisionner et déployer votre application sur une ressource cloud est coûteuse et difficile à trouver. J'ai déjà constaté qu'il faut autour de 140k € afin de former une petite équipe DevOps de 6 personnes sur un seul fournisseur cloud. 

Donc, si vous n'avez pas ça en interne, vous pourriez avoir besoin de passer par une plateforme externe qui fonctionne avec tous les fournisseurs de cloud, et qui ne nécessite aucune formation sur aucun fournisseur.

Vous avez la liberté de modifier, de revenir en arrière, de changer de région géographique et de réduire une surcapacité avec un maximum de simplicité.

Votre équipe sera outillée, prête à se concentrer sur les fonctionnalités clients à développer. Vous pouvez recentrer les formations de votre équipe à l’amélioration de votre produit, et non à pas sur les fournisseurs cloud ni sur les tâches DevOps.