Les développeurs Microsoft Windows doivent apprendre Linux

Avec les architecture micro-services et les containers Docker, le développement tend à se déployer de plus en plus sur Linux. C'est un challenge pour les développeurs Microsoft de franchir le pas.

Introduction

Avec .NET Core 3.1, Microsoft propose un environnement capable de tourner sur Windows, MacOS et Linux. La mode est au développement des web API et des architectures à bases de micro-services déployées sur Docker et/ou Azure via Kubernetes sous Linux. Microsoft fournit une application de référence qui se nomme eShopOnContainers :

eShopOnContainers ou la gloire des micro-services

Cette application de référence représente le type d'applications que les sociétés partenaires de l'écosystème Microsoft doivent réaliser chez leurs clients. Ce qui frappe dans cette application c'est que le déploiement des micro-services se fait au travers de containers Docker sous Linux. Oui vous me lisez bien : Linux !

Linux sous Windows 10 avec WSL 2

Le meilleur moyen d'aborder Linux pour un développeur Windows, c'est d'installer WSL2. WSL2 c'est Windows Subsystem for Linux v2 pour Windows 10. C’est la possibilité d’avoir un kernel Linux directement inclus dans Windows.

Architecture WSL2

WSL est un Windows driver et un Linux Kernel en translation layer au-dessus du Windows NT Kernel. Il y a un Kernel Linux construit à partir des sources Linux et qui tourne avec la virtualisation Hyper-V. Ce n’est pas de la VM traditionnel. C’est de la virtualisation légère ; Native x64 bits Linux support ! Développée initialement pour Windows Server, c’est la technologie Hyper-V des containers isolés qui est utilisée. Il peut y avoir de nombreux containers sur le même host (la même machine). Le temps de boot est très rapide et la création de nouveau container est une activité anodine. Il y a donc un vrai Kernel Linux et ça, ça change tout ! Car, on n’émule plus à travers une couche de translation. C'est directement compatible. Le kernel Linux est issu des sources de kernel.org.

On se retrouve à installer Ubuntu bash et les tools comme GCC/G++ sur Windows 10 au travers du Windows Store.

Le WIndows Store

L'installation de Ubuntu sous Windows requiert 220 Mb et apporte le bash et la possibilité d'utiliser tous les utilitaires qui vont avec.

le bash Ubuntu sous WIndows 10

Docker Desktop pour Windows

Pour parfaire son apprentissage Linux, le développeur Windows doit installer Docker Desktop sous Windows 10 et utiliser les containers Linux. Il va déployer des web API C# NET Core sous une distribution Alpine avec ASP.NET Core par exemple : c'est une distribution légère avec le runtime ASP.NET Core et le serveur web Kestrel qui permet de faire fonctionner les sites web ASP.NET Core. 

ASP.NET Core sous Linux

Le développeur ASP.NET Windows/IIS traditionnel va se voir offert du développement ASP.NET Core sous Linux et cela change :

  • rien car il fait de l'ASP.NET Core sous Windows 10,
  • tout car il déploie sous des containers Linux.

En théorie, sur le papier cela ne change rien. Mais dans la réalité, le changement est culturel. On demande à des développeurs Windows de faire du Linux et ça c'est une révolution.

Le monde est pluriel. On va demander aux développeurs de faire des applications hybrides avec des web API en NodeJS (JS/TS), en Java, en C# avec des supports SQL/NoSQL comme SQL Server, Redis, MongoDB. Les systèmes d'informations seront de plus en plus complexes.

Le développeur moderne se doit de connaitre toutes ses technologies. Il en va de sa survie dans l’écosystème.