DevOps ne suffit plus ? Essayez NoOps
Si les équipes de développement interviennent au niveau de l'exploitation, pourquoi ne pas les charger de la maintenance du code dans l'environnement de production ?
Avec l'avènement de la démarche DevOps dans l'entreprise, de nombreuses sociétés rationalisent leurs processus pour sortir la programmation des environnements de test et de développement et la faire entrer en production.
Evidemment, cette approche n'est pas exempte de problèmes, dès lors que certaines entreprises permettent aux développeurs de mettre en oeuvre du code sans vérifier au préalable les besoins. Elle conduit parfois même au chaos car l'analyse des causes fondamentales peut ensuite s'avérer un véritable casse-tête et les utilisateurs doivent s'adapter à des changements rapides de leurs méthodes de travail.
Bien appliquée, en revanche, la méthode DevOps peut créer un environnement informatique dynamique et souple, extrêmement réactif aux besoins, puisque les équipes IT se voient déchargées de la plupart des tâches de gestion qui leur incombaient dans les projets traditionnels.
Mais certaines entreprises visent encore plus loin. Après tout, si les équipes de développement ont désormais les moyens de sortir des phases de tests et du développement pour intervenir au niveau de l'exploitation, pourquoi ne pas les charger de la maintenance du code dans l'environnement de production ?
Cette approche, qui consiste à affranchir la plateforme physique du code et qui ouvre la voie à une transition totalement automatisée entre développement et exploitation, a été baptisée « NoOps ».
Mais si NoOps présente des avantages indéniables, il ne convient que dans des situations précises.
NoOps : ce qui fonctionne et ce qui ne fonctionne pas
Dans un environnement informatique exclusif (par exemple, un datacenter privé ou des équipements en colocation), la méthode NoOps n'est pas vraiment viable. En effet, il faut quand même provisionner les équipements : les serveurs doivent être connectés aux réseaux et les systèmes d'exploitation, installés. De même, les volumes de stockage et les adresses réseau nécessitent d'être configurés.
Or, comme ce n'est pas le travail des développeurs, on aura toujours besoin d'un personnel d'exploitation spécifique pour mener ces tâches à bien, ainsi que pour surveiller et entretenir l'ensemble du parc informatique.
Le rôle des développeurs consiste à développer du code et à s'assurer que l'environnement est propice à sa bonne exécution.
Par conséquent, pour que NoOps fonctionne, il faut une plateforme informatique dont les développeurs n'auront pas à se soucier du point de vue des contraintes liées aux ressources. Et c'est là que le Cloud entre en jeu.
En effet, dès que l'entreprise n'a plus le contrôle du matériel, l'exploitation n'est plus de son ressort. C'est donc le fournisseur de Cloud qui doit provisionner, surveiller et entretenir le matériel. Et, à condition qu'un contrat de niveau de service (SLA) approprié ait été conclu, les aspects purement physiques de la plateforme n'ont plus guère d'importance.
Le développeur doit alors s'assurer que le code qu'il a mis au point et testé en milieu restreint est adapté aux objectifs. Bien souvent les développeurs tombent dans le piège de croire que leur environnement d'exploitation fonctionnera exactement comme celui de développement. Ils oublient que la majeure partie de ce qu'ils font tourne en circuit fermé sur leur propre poste de travail, à l'abri des aléas du réseau principal.
Certes, des environnements de test virtualisés avec des charges de travail synthétiques peuvent donner une idée du fonctionnement futur du code en production, mais rien ne vaut une expérience en conditions réelles, par une exécution en flux parallèle au code existant dans l'environnement d'exploitation.
Ainsi, on demandera à une équipe de cobayes de déployer du code en environnement d'exploitation sur des données actives et sur les mêmes réseaux que les utilisateurs du code existant. L'expérience utilisateur sera donc très proche de celle qui prévaudra à la mise en service du nouveau code.
Toutefois, cela ne dispense pas de s'assurer que le code est correctement intégré et provisionné. Les développeurs ne sont peut-être pas les plus efficaces dans ce domaine, mais de nouveaux outils d'automatisation devraient leur faciliter la tâche.
Réponses techniques au dilemme NoOps
Plusieurs fournisseurs se positionnent sur ce créneau, dont Automic, qui propose une fonction d'automatisation du lancement d'application permettant de s'assurer que le code est correctement intégré et toutes ses dépendances résolues. L'offre d'Electric Cloud est similaire et s'intègre aux outils existants de sorte que les développeurs conservent leurs habitudes de travail.
StackIQ Boss fournit un système capable de tout provisionner depuis les environnements bare-metal aux plateformes complètes pour une informatique de type entrepôt.
Nouvel acteur dans ce domaine, Verilume a lancé un système visant à déterminer la capacité inutilisée et disponible afin de l'exploiter au mieux. Cet outil peut facilement s'adapter selon une approche DevOps/NoOps, quoique NoOps ne soit pas vraiment applicable à un environnement exclusif.
Autre nouveau venu, Platform9, se place d'ores et déjà comme un acteur majeur sur le créneau du Cloud privé, avec pour objectif de réduire l'implication nécessaire au niveau de l'exploitation. La société fournit des outils d'automatisation pour le provisionnement du Cloud privé et peut prendre en charge les conteneurs, tels que Docker.
En effet, ce sont les conteneurs qui présentent l'avenir le plus prometteur en matière de NoOps. Un conteneur, construit à partir d'un ensemble de microservices isolés, peut être créé dynamiquement et provisionné avec relativement de facilité sur une plateforme.
Le secret consiste à doter le logiciel d'un moteur de provisionnement suffisamment intelligent pour comprendre les besoins et caractéristiques de la charge de travail du conteneur. Cela permet de garantir son provisionnement au bon endroit et au bon moment.
Avec la généralisation de l'analyse du Big Data, ainsi que les progrès en matière de reconnaissance de formes et de prévisions, le provisionnement automatisé des charges de travail ne pourra que gagner en efficacité.
Par ailleurs, l'utilisation des plateformes en Cloud se répand et les fournisseurs de ces services sont de plus en plus appelés à assurer les tâches de provisionnement, de surveillance et de maintenance du matériel. Cette situation constitue le terreau idéal pour NoOps et les entreprises qui l'adoptent en récolteront les bénéfices.