Docker : Quels scénarios pour un éditeur de logiciels ?

Docker n’est pas réservé aux startups qui développent des applications Linux basées sur des micro-services, et scalables afin de supporter des millions d’utilisateurs à travers le monde !

En effet, si vous travaillez pour un éditeur de logiciels qui a une offre logicielle datant de plusieurs années, par exemple une bonne vieille application ASP.net et donc sous Windows, vous devriez jeter un petit coup d’oeil sur la nouvelle gestion des conteneurs proposée par Windows Server 2016 afin de voir si cette nouvelle technique vous permet de simplifier vos déploiements.

Voici quelques exemples de de scénarios pour lesquels vous pourriez utiliser Docker sous Windows :

  • Gestion de vos environnements de tests, pre-prod, prod simplifiée, plus légère et plus souple qu’avec des VM
  • Blue-Green deployment et rollback de déploiement en activant/désactivant des conteneurs de manière automatisé voire automatique
  • Le saint-graal : un déploiement simplifié, et surtout uniforme entre vos clients hébergés en SaaS et vos clients On-premise. Vous souhaitez réduire de manière drastique vos temps d’installations de vos solutions (dépendances du type SQL Server, Reporting Services, et autres inclues !!), installer de la même manière vos clients hébergés sur vos serveurs et ceux qui souhaitent héberger eux-même vos applications, et gérer les mises à jour de manière uniforme.
  • Proposer une réversibilité simple pour vos clients SaaS souhaitant passer On-Premise et vice-versa

Vous êtes intéressés par une de ces possibilités ? N’hésitez pas à regarder sérieusement Docker afin de voir si cela peut répondre à vos besoins.

En savoir plus sur Docker sous Windows sur ce blog :

Quoi de neuf dans Windows Server 2016 pour les développeurs ?

L’essentiel sur Docker et les conteneurs Windows

L’essentiel de Docker : Débuter par la pratique

Meetup .net Toulouse Episode 2, DevOps avec Docker sous Windows

Visual Studio 2017 et Docker : de réelles avancées !

Visual Studio 2017 et Docker : de réelles avancées !

Les Visual Studio Tools for Docker sont disponibles depuis plusieurs mois maintenant en version Preview.

Cette extension à Visual Studio 2015 propose un scénario Dév. en permettant d’automatiquement déployer et débugger une application au sein d’un conteneur.

Il est ainsi possible d’automatiquement créer une image, de déployer l’application en cours dans cette image, de lancer un conteneur basé sur cette image, de débugguer l’application ainsi déployée, et propose une expérience ‘’Edit & Refresh” qui permet de ne pas créer une image à chaque modification de code.

Seul problème : cette extension supporte seulement les applications ASP.net Core et déployées dans des conteneurs Linux uniquement !

Très bonne nouvelle : la RC de Visual Studio 2017 propose une intégration d’une nouvelle version des Visual Studio Tools for Docker bien plus évoluée que celle disponible pour Visual Studio 2015 !

image

Au programme : Support des applications ASP.net Webforms et ASP.net MVC, et donc support des conteneurs Windows ! Le déploiement et le débogage d’applications .net “non Core” sont ainsi enfin supportés !

image

Le fichier dockerfile créé par l’extension est des plus simple :

image

Et Visual Studio affiche de manière très transparente les différentes étapes de déploiement :

image

Et une fois déployée et démarrée, Visual Studio ouvrira votre navigateur sur l’adresse IP du conteneur créé et démarré et non comme habituellement sur votre localhost :

image

Autre grosse nouveauté de cette nouvelle version, il est également possible de débugger une application déployée au sein de plusieurs conteneurs !

Si votre application est composée de différents services hébergés au sein différents conteneurs, vous n’aurez pas de problème pour débugger l’ensemble de votre solution !

Vous l’aurez donc compris, si vous souhaitez développer avec des conteneurs Windows, téléchargez Visual Studio 2017 RC pour découvrir tout cela !

Meetup .net Toulouse Episode 2, DevOps avec Docker sous Windows

 

Le 2ème meetup .net de Toulouse a eu lieu hier soir avec comme thème : Mise en place d’une approche DevOps avec Docker sous Windows.

Malgré la pluie battante (nous n’avons pas l’habitude de cela à Toulouse Clignement d'œil), une 40 aine de participants sont venus découvrir les nouvelles fonctionnalités de conteneurisation proposées par Windows Server 2016.

Nous avons ainsu pu avoir un retour d’expérience sur la mise en place d’une démarche DevOps, et rentrer plus en détail dans la technique en découvrant le déploiement d’applications .net “classique” de type ASP.net webforms  ou ASP.net MVC sous Windows, et l’intégration possible au sein de VSTS.

Cx0JxOlW8AA8a_8Photo de Stéphane Raggazi

Vous trouverez les slides de ma présentation sur slideshare :

image

Vous n’étiez pas là et vous souhaitez nous rejoindre pour les prochains meetups ?

Rien de plus simple, rejoignez-nous dans le groupe (plus de 130 membres actuellement !), et inscrivez-vous pour les meetups dont les sujets vous plaisent !

A très bientôt pour un prochain meetup !

Petit guide pour râler de manière constructive

Je sais bien qu’il s’agit d’un sport typiquement français, et j’ai bien conscience que je vais peut-être me mettre quelques personnes à dos en publiant ce post, mais je commence à être fatigué des retours négatifs et non constructifs, qui n’apportent rien au débat. Retours le plus souvent présent sur Facebook ou Twitter et donc formulés en une ligne ou deux.

image

Alors qu’il y a plus de 3-4 ans, ce type de retour étaient fournis gracieusement par des anti-microsoft sous forme de trolls. Depuis l’arrivée de Windows Phone, les critiques acerbes viennent de plus en plus de personnes adeptes des technologies Microsoft, et participant régulièrement aux communautés Microsoft.

Je vous propose donc aujourd’hui mon point de vue (oui, moi aussi j’ai le droit de râler) sur ce sujet sans trop d’illusion sur l’impact du billet, mais au moins je me serais exprimé en plus de 140 signes ! Sourire

Prendre du recul

Vous en avez marre de Windows Phone/Mobile du manque d’applications, du Windows Store qui est une calamité pour ceux qui font l’effort de développer des applications UWP et qui souhaitent en faire profiter leurs utilisateurs ?

Essayez de prendre un peu de recul, est-ce que vous pensez que les choses peuvent s’améliorer ? Est-ce que le Store fourni avec Windows 10 peut être amené à être une réussite ? Quelles sont d’après-vous les chances pour que sur le moyen / long terme les choses s’arrangent dans ce domaine ?

Cela fait plusieurs années que vous râlez ? Et vous pensez que c’est terminé ? Alors Laissez-tomber !

Enlever vos applications ou laisser Microsoft le faire à votre place suite à l’envoi d’une de leur lettre de menace et passez à autre chose. Il existe d’autres eco-systèmes mieux organisés et qui possèdent 2-3 utilisateurs Clignement d'œil 

Si au contraire, sur un autre sujet, vous pensez que les directions prises sont bonnes et porteront leurs fruits sur le moyen/long terme dites-le ! Sourire

Mon point de vue perso (et donc totalement subjectif, et très probablement erroné) sur Windows Mobile/Phone et le Store Windows : Il est improbable que Microsoft puisse réussir quelque chose sur ces sujets. L’éditeur l’a clairement indiqué, ils abandonnent le marché du mobile et restent uniquement présent pour des raisons de veille technique. Concernant le store Windows et ceci même sur PC, je pense que personne ne l’utilise. Faites un sondage autour de vous afin de savoir combien d’applications installées viennent du store, il devrait être faible ou inexistant. L’argument de dire que l’on peut toucher des millions d’utilisateurs Windows en publiant sur le store n’est pas valable puisque personne n’y va. Microsoft pourrait le mettre en avant au 1er démarrage de Windows en faisant une belle vidéo expliquant ce que c’est, ou grâce ou via des actions commerciales par exemple en proposant Office uniquement depuis le Store (ou avec une réduction par rapport aux boites). Ce ne semble pas être une priorité pour eux pour le moment. Comme, je suppose, beaucoup de lecteurs de ce blog, j’étais convaincu et enthousiasmé par la plate-forme, et j’apprécie beaucoup l’OS mobile, mais cela fait bien longtemps que je ne me fais plus aucune illusion… Wait & see…

Changement de rythme

Autre exemple, le changement de type de projet ASP.net Core où Microsoft a décidé de ne plus utiliser les fichier project.json et de finalement utiliser msbuild.

Il s’agit là d’un changement technique important et d’une décision prise après la mise à disposition de la technonologie. Le contexte est simple, les créateurs de .net core ont pris une orientation 100% cross platform et ont donc créé un nouveau type de projet au format json plus souple, plus ouvert, et qui pourra donc être facilement compatible quelque soit la plate-forme de développement ciblée.

A contrario tout le tooling existant se base sur MSBuild, zapper ce framework/outillage aurait un impact très important sur tout l’éco-système.

En résumé, l’objectif et l’inspiration d’origine sont bons, mais la prise en compte des contraintes de la réalité a pris du temps et a engendré ce changement tardif.

Ce type de décision assez importante, où Microsoft change de direction ou revient en arrière est déjà arrivé plusieurs fois auparavant mais intervenait généralement au plus tard lors de la mise à disposition de preview technique : soit via les Community Technology Preview, soit via des Alpha voire Beta.

Ne pas comprendre que ce type d’erreur puisse arriver, et que cela va de nouveau se produire pour d’autres cas, est de mon de point de vue le signe que l’on a pas compris le changement de rythme décrit dans ce post. Finis les CTP, Alpha et autres versions temporaires. Le temps où on arrivait même plus à compiler le code d’applis basées sur ces versions preview fournies 2 ans avant la RTM sur laquelle on essaie de faire fonctionner ces mêmes applis est révolu !!

Et comme décrit précédemment, une des conséquences de changement de rythme est que l’on va être de plus en plus impacté par des breaking changes importants.

Créez du contenu !

Vous n’êtes pas d’accord avec telle décision, ou tel choix technique ? Vous souhaitez vous exprimez ? Ecrivez des articles ou des posts de blog décrivant précisément le contexte, les raisons pour lesquelles telle technologie ou telle décision n’est pas optimale et comment corriger la situation.

Cela serait tellement plus intéressant et plus constructif qu’un simple “pffff… Ils font encore n’importe quoi, c’est incroyable”.

Vous l’aurez compris, je ne dis pas qu’il faut arrêter de faire des critiques et de partager son mécontentement, je pense uniquement qu’il est plus pertinent de le faire de manière développée, argumentée au travers de billets techniques plutôt que via 3-4 mots dans des commentaires Facebook.

Allez y ! J’ai hâte de lire du vrai contenu technique sur tous ces sujets ! Sourire

PS : Microsoft n’est plus en situation de monopole, il n’est plus possible de suivre aveuglément toutes les technologies proposées et de considérer que toutes les décisions prises sont les bonnes…  Donc keep cool & stay calm ! Sourire

Ce que je retiens des annonces du keynote de Connect 2016

Après le précédent évènement dédié à Windows, Microsoft continue sur sa lancée en nous proposant un très bon keynote de son évènement online Microsoft Connect.

Ce keynote fut l’occasion de faire un grand nombre d’annonces, je vous propose donc ici celles-qui m’ont le plus intéressé uniquement.

image

SQL Server 2016 SP1

Cela peut paraitre surprenant mais l’annonce qui m’a la plus enthousiasmé concerne la prochain Service Pack de SQL Server. Ce SP1 ne sera en effet pas un simple SP1 mais un changement MAJEUR au sujet de licensing de SQL Server puisque quasiment toutes les fonctionnalités qui étaient jusqu’à présent uniquement disponible dans la version Entreprise sont à présent disponible pour toutes les éditions de SQL Server !

Envie d’utiliser des fonctionnalités telles que l’Always Encrypted ou la gestion In Memory dans vos BDD SQL Server Express ? C’est à présent possible sans aucun surcoût !

Vous pouvez retrouver le détail de cette annonce sur ce post de Christophe Laporte.

Très clairement un Huge win pour SQL Server 2016 qui, avec la disponibilité de SP1, le changement de licensing, et la mise à disponibilité publique de la version Linux, a une actualité très riche.

Visual Studio for All

image_thumb8

Je ne vais pas m’étendre sur ce sujet puisque cela avait malheureusement fuité sur Internet en début de semaine, mais après avoir fait une démo de développement sous un Mac d’une application Node.js utilisant MongoDB et déployée sur Linux le tout depuis Visual Studio Code, Microsoft a annoncé une version Mac de Visual Studio. Ce rebranding de Xamarin Studio permet donc de créer des applications mobiles pour iOS et Android, mais également des applications serveur ASP.net Core.

image

Et enfin, bien évidemment, l’éditeur de Redmond n’oublie pas sa base de développeurs historique avec la mise à disposition de la RC de Visual Studio 2017 ! Au programme, de bonnes améliorations au niveau performances, plusieurs nouvelles fonctionnalités, et l’intégration de nouvelles extensions telles que les Visual Studio Tools for Docker, sujet sur lequel je reviendrais la semaine prochaine (Teaser : Elles sont vraiment bien meilleures que celles proposées en preview pour VS 2013, contrairement à ce qui pu être montré en démo).

DevOps for All

DevOps est certes un buzz-word à la mode, mais la mise en oeuvre d’une telle démarche n’est parfois pas des plus simples, et ceci même si l’outillage proposé par Microsoft (et par ses concurrents) s’est très largement développé et étoffé ces dernières années.

Les services d’intégration continue, de déploiement continu, de delivery continu, de gestion de tests, d’environnements, etc. proposés par TFS (TFS 2017 est à présent disponible en RTM) et Visual Studio Team Services permettent de faire beaucoup de choses dans ce domaine.

Microsoft complète néanmoins son offre avec une offre dédiée à la gestion du développement sur Mobile. Cette nouvelle est une repackaging de services déjà proposés par Xamarin avant son rachat par Microsoft et de Hockey App. Ce nouveau service n’est pas encore feature complete avec ses prédécesseurs, mais représente bien l’offre d’avenir qui permet à Microsoft de tout unifier.

Gestion des crashs, tests automatisés sur de rééls devices physiques, etc. L’intégration proposée est très intéressante, il sera intéressant de voir les prix qui seront proposés.

Microsoft est très sérieux sur son ouverture et avec l’Open Source

Oui, Microsoft a radicalement changé, et à réellement pivoter à une vitesse très impressionnante.

L’éditeur est à présent le plus gros contributeurs à des projets hébergés sur GitHub :

image

Et enfin, clou du spectacle : Microsoft rejoint la Linux Foundation !!! Sourire

image

Après le slow food, le slow computing ?

Depuis l’ouvrage “The Lean Startup” qui promeut l’amélioration et l’innovation en continue au coeur de l’organisation des start-ups grâce à l’adoption d’une démarche itérative, depuis l’explosion de l’adoption de la méthode SCRUM qui propose un découpage itératif du développement, une organisation destinée à améliorer l’autonomie de l’équipe de dév. et à améliorer la vélocité et donc le rythme d’ajout/livraison de nouvelles fonctionnalités, l’industrie informatique a réellement et profondément changé de rythme.

image

Alors qu’il y a quelques années, mettre en place des builds afin d’avoir une nightly build destinée à vérifier la validité/cohérence du code présent dans un repository était “hype” et synonyme de démarque qualité, nous sommes à présent nombreux à avoir mis en place de l’intégration continue, à compiler et à tester de manière automatisé dès qu’une modification est commitée.

De même que cela soit via la mise en place de Continuous Delivery ou encore de Continuous Deployment, le rythme de livraison s’est effectivement accéléré dans de nombreux projets.

Les utilisateurs ont donc le grand bonheur de bénéficier d’un plus grand nombre de nouvelles fonctionnalités, plus pertinentes, et ceci beaucoup plus rapidement !

Achievement unlocked !

Tout cela est positif, mais cette course vers la nouveauté a malheureusement un coût et de plus en plus de personnes commencent à se plaindre.

Exemple le plus récent, le projet Docker qui, que cela soit via ce post de blog controversé (lire les commentaires, et les posts de blog en réponse, cité par l’auteur), ou alors encore via ce feedback récurrent d’avoir un rythme d’évolution plus lent afin d’être en capacité de faire évoluer son infrastructure tout en bénéficiant des derniers correctifs.

Autre exemple d’impact bien plus mineur, le Bot Framework dont la V1 a été rendu disponible le 1er Avril 2016 et qui moins de 6 mois plus tard contient plusieurs nouvelles versions et une V3 contenant des breaking changes et nécessitant donc une migration de code (migration qui au passage ne fonctionne pas correctement et qui impose donc la réécriture de ses bots à partir d’un nouveau projet “from scratch”). Exemple de changement : On vient de changer le nom de ces classes, désolé, on n’avait pas assez réfléchi au nommage de nos classes, et avec le recul on trouve que les nouveaux noms sont plus pertinents.

Inimaginable dans le monde Microsoft il y a quelques années, avec une stratégie basée sur une compatibilité maximale de l’ensemble des produits, ce type d’évolution est en train de devenir de plus en plus courant.

Il est donc important de bien réaliser que le gain apporté par des itérations rapides peut se transformer en coût pour le développeur ou l’utilisateur final.

On parle ici de coût induit par du travail supplémentaire nécessaire pour supporter les nouveautés/évolutions on peut également évoquer les pertes sèches causées par l’achat de produits hardware.

Alors qu’auparavant acheter des produits et services de grandes sociétés renommées permettait d’être à peu près à l’abri de l’abandon de ceux-ci et de bénéficier d’une durée de vie plus longue que d’autres produits de sociétés moins établies, il est nécessaire d’oublier ce vilain reflexe.

Les grands éditeurs et constructeurs se placent en effet de plus en plus tôt sur la courbe d’adoption afin de maximiser les chances de prendre une part conséquence de marchés qui sont régulièrement de type “the winner takes all”, et le risque d’abandon ou d’échec est donc beaucoup plus important qu’auparavant.

Il n’y a qu’à juger la stratégie Hardware de Microsoft décrite au sein de cette excellente interview de Mary Jo Foley. Terry Myerson y indique clairement que la stratégie de Microsoft est d’essayer d’ouvrir, animer, dynamiser différents marchés hardware, et de montrer à leurs potentiels partenaires qu’ils sont sérieux sur ces différents marchés, en construisant lui-même des devices sur chacun de ces marchés.
Les casques/lunettes de réalité virtuelle sont cités en exemple dans cette interview mais on peut citer plusieurs exemples à ce sujet : les tablettes et notebook Surface destinés à montrer aux constructeurs qu’il est possible de faire des devices sous Windows d’aussi bonne qualité et aussi beau qu’Apple, Microsoft Band destiné à montrer ce qu’il est possible de faire de lien d’un point de vue hardware et software avec Microsoft Health d’un point de vue des objets connectés (wearables) lié à la santé.

Votre côté geek vous incite à acheter certains de ces nouveaux devices, et vous râlez sur le fait qu’ils ne soient commercialisés qu’en petit nombre et uniquement dans certains pays ? Peut-être que vous devriez y réfléchir plus longuement avant de potentiellement jeter votre argent par la fenêtre Clignement d'œil

Bien évidemment la solution pour ne pas tomber dans ces écueils n’est pas de ralentir le rythme d’innovation comme pourrait le sous-entendre le titre de ce post.

Il existe différentes pistes, et je suis convaincu qu’un ensemble de bonnes pratiques seront prochainement publiées en ce sens :

  • Etre clair sur sa communication
  • Proposer différentes cadences de livraison afin que chacun puisse s’adapter en fonction de son souhait (ex : Windows avec le programme Insiders et les fast/slow rings, .net où l’on peut récupérer des packages nuget de versions récentes ou utiliser le framework .net livré avec Windows, etc.)
  • Développer des correctifs pour plusieurs versions supportées en parallèle
  • Proposer un outillage de plus haut niveau qui facilite la gestion de tous ces changements. Exemple : solutions de management d’APIs

L’essentiel de Docker : Débuter par la pratique

Nous avons précédemment vu les concepts essentiels pour comprendre la conteneurisation, le fonctionnement de docker, et les différents niveaux d’isolation proposés par Windows Server 2016.

Passons à présent à la pratique afin de voir comment effectuer un tout premier déploiement.

Installation de Docker

Docker pour Windows peut être installé sur un poste développeur à partir de Windows 10 Anniversary Update (attention, en mode d’isolation Hyper-V uniquement) ou alors sur Windows Server 2016.

Je ne vais ici pas décrire cette étape d’installation très simple mais vous rediriger vers la documentation officielle de Docker : https://docs.docker.com/docker-for-windows/

Première étape : La récupération d’une image

Microsoft propose deux images de base des deux éditions de Windows qui supporte le fait d’être contenu dans un conteneur : l’édition Server Core, et l’édition Nano Server.

Ces deux images sont disponibles sur le hub de docker qui réunit un grand nombre d’images Docker mises à disposition par différents éditeurs :

image

Dans le cas de Microsoft, vous pouvez trouver l’ensemble de ses images à cette adresse : https://hub.docker.com/u/microsoft/

Vous pouvez y trouver les fameuses images de bases pour chacun de ces deux OS :

image

Pour récupérer une de ces deux images, c’est simple, si vous êtes sur Windows 10, prêtez bien attention à switcher sur la gestion des conteneurs Windows, et non des conteneurs Linux en utilisant le menu contextuel :

image

Une fois ce changement fait, vous pouvez lancer Powershell afin de lancer la commande suivante :

docker pull microsoft/windowsservercore

pour l’image de base de l’édition concernée, et microsoft/nanoserver pour l’autre édition.

Cette commande va télécharger l’ensemble des couches de cette image qui n’ont pas déjà été téléchargé.

Une fois téléchargées, vous pouvez constater que celles-ci sont disponibles via la commande  :

docker images

image

Vous pouvez à présent créer un container basé sur ces images, et lancer ces containers, mais cela n’a que peu d’intérêt puisque vous disposez uniquement d’un Windows “nu” sans votre application.

Voyons donc à présent comment créer une image Docker contenant une application ASP.net WebForms ou MVC.

2ème étape : Création d’une image et déploiement simple d’une application ASP.net

La création d’une image Docker se fait grâce à un fichier Dockerfile. Ce fichier vous permet d’exécuter différentes commandes qui vont toutes ajouter une couche à votre image.

La première étape va donc être d’indiquer l’image de base de votre image. Et il est important ici de bien comprendre que vous avez l’embarras du choix ! Vous pouvez en effet utiliser une image d’OS nue (dans notre cas impérativement microsoft/windowsservercore qui est la seule édition à supporter le framework .net) et installer toutes les dépendances nécessaires (IIS, le framework .net, etc.) via toute une série de commande dans votre Dockerfile, ou alors utiliser une image prête à l’emploi ayant déjà votre framework et l’essentiel de vos dépendances déjà installées.

Ainsi le plus simple pour déployer une application ASP.net, est d’utiliser l’image microsoft/aspnet qui est une image qui étend l’image microsoft/windowsservercore et ayant déjà IIS et le framework .net d’installé, et ASP.net correctement configuré !

Pour récupérer cette image vous connaissez déjà la procédure (cette étape est facultative car l’image sera téléchargée lors de la construction de l’image si absente) :

docker pull microsoft/aspnet

Attardons nous à présent à la création de notre fichier Dockerfile :

# The `FROM` instruction specifies the base image. You are
# extending the `microsoft/aspnet` image.

FROM microsoft/aspnet

# Next, this Dockerfile creates a directory for your application
RUN mkdir C:\Demo

# configure the new site in IIS.
RUN powershell -NoProfile -Command \
Import-module IISAdministration; \
New-IISSite -Name « ASPNET » -PhysicalPath C:\Demo -BindingInformation « *:8000: »

# This instruction tells the container to listen on port 8000.
EXPOSE 8000

# The final instruction copies the site you published earlier into the container.
ADD . /demo

Comme vous pouvez le voir, la première instruction du Dockerfile permet d’indiquer l’image de base que l’on souhaite étendre, puis nous créons le site dans IIS qui hébergera notre application, ouvrons le port 8000 sur le conteneur, et copions l’ensemble des fichiers de notre application web, dans un dossier auparavant créé.

L’application web correspond dans notre cas à l’application par défaut créé par Visual Studio lors de la création d’un projet ASP.net Webforms, et nous pouvons inclure le fichier Dockerfile dans le dossier de cette application si nous le souhaitons.

Il suffit donc de 5 instructions dans le Dockerfile pour créer notre image avec l’application déployée.

Maintenant que nous avons notre Dockerfile, passons à la création de notre image contenant notre application déployée :

docker build –t demo .

image

les arguments –t demo permettent de définir un tag pour notre image, et le . permet de spécifier le répertoire courant comme répertoire de travail.

Et si vous listez de nouveau vos images, vous pourrez découvrir un nouveau venu :

image

Créer un conteneur pour exécuter notre application

Nous avons votre image avec notre application déployée,  exécutons maintenant notre application !

Pour cela, rien de plus simple :

docker run –name demo –d –p 8000:8000 demo

La commande permet de lancer un container en exposant le port 8000 du conteneur sur le port 8000 de l’hôte.

Vous pouvez donc accéder à présent à votre site web hébergé dans votre conteneur en accédant directement au port 8000 de votre machine hôte.

Note : Windows ne permet pas d’y accéder directement via le localhost de la machine hôte, vous pouvez donc effectuer un test de fonctionnement en accédant directement au port 8000 du conteneur. Pour cela, déterminez l’adresse IP du conteneur avec la commande suivante :

docker inspect –format= »{{.NetworkSettings.Networks.nat.IPAddress}} » demo

image

image

RDV prochainement afin de rentrer un petit plus dans le détail !

OVH comparé à Microsoft Azure

Dans les premières semaines qui suivirent mon arrivée dans ma société actuelle j’ai demandé à voir l’ensemble des factures liées à l’informatique sur l’année précédent mon arrivée. Cela permet en effet d’avoir très rapidement une vision complète de l’ensemble des fournisseurs (hébergeurs, connexion internet, licences logicielles, sous-traitance, etc.), des services souscrits, et du coût de chaque service/prestation.

J’ai presque failli m’étouffer en découvrant nos factures d’hébergements liés à nos serveurs de production. Le coût me semblait en réel décalage avec le service proposé. Après plusieurs réunions chez notre hébergeur local de l’époque, j’ai donc fait une petite analyse de la concurrence afin de voir ce que l’on pouvait avoir pour le même prix ailleurs. Et j’ai très rapidement orienté plus précisément mes recherches autour de 2 hébergeurs, dont OVH.

image

Après étude et essai de leur offre (pour un prix ridicule, on peut louer des serveurs à la semaine afin d’effectuer des essais) nous sommes donc passés chez OVH, et je suis toujours très satisfait des services proposés, presque 2 ans après avoir migré nos serveurs chez eux.

Nous avons en effet multiplié par 30 la bande passante dont nous disposions, avons à présent une configuration de serveurs qui n’a absolument rien à avoir avec ce que l’on avait auparavant (8x plus de RAM, disque SSD, 4x plus de coeurs CPU, etc.) et le tout accompagné d’ une réduction de 50% de notre facture par rapport à ce que l’on dépensait chez notre précédent prestataire… La qualité de service est également au rendez-vous, même si lorsque l’on contacte le support, on réalise bien que la culture n’est pas orientée Windows Clignement d'œil

Loin de l’image de techos barbus proposant des services pas cher pour les particuliers et les TPE, je dois bien avouer que J’ai découvert avec surprise une société très intéressante, en plein évolution et en pleine transformation.

OVH est en effet n°1 au niveau européen, et fait partie des tout premiers au niveau mondial ! On dit souvent que l’on a pas de champion du numérique en France, et lorsque l’on cite des sociétés d’avenir, on cite souvent des startups comme blablacar, on devrait évoquer beaucoup régulièrement OVH dans la presse, et dans les JT du 20h ! Nous avons là un bon et beau champion mondial !!!

Grâce à la découverte de leur offre, je suis ainsi passé d’une image d’une société proposant du mutualisé pas cher sous Linux pour héberger des logiciels libres tels que du wordpress ou du prestashop, à la découverte d’une société “sérieuse”, ayant une offre à destination des entreprises de toute taille, et en pleine transformation pour parvenir à prendre le virage du cloud. (oui, j’ai une culture 100% microsoftienne, et oui j’ai parfois une vision caricaturale des choses Sourire)

Transformation au niveau de l’offre avec un développement vers le cloud massif, les investissements sont importants : 1,5 Milliard sur 5 ans. Et l’hébergeur montre son sérieux en construisant plusieurs datacenters afin d’avoir une réelle présence mondiale.

image

Projets de constructions des nouveaux datacenters OVH

image

Régions OVH actuelles et en cours de construction

A l’heure actuelle, la clientèle d’OVH se concentre à 60% sur l’offre Dedicated Cloud (en y incluant l’offre serveurs dédiés), et à 5% sur le Public Cloud.

Transformation également au niveau commercial, OVH est en train de passer d’un modèle vertical à un modèle horizontal basé sur un réseau de partenaires. Face à l’évolution de la taille de la société et de ses services, l’hébergeur est en train de construire de manière logique un réseau de partenaire afin d’avoir une approche indirecte comme d’autres fournisseurs de service comme Microsoft. Ainsi si vous souhaitez des services de développement, d’intégration ou autres en utilisant l’infrastructure d’OVH vous pourrez contacter les partenaires les plus pertinents et experts dans leurs domaines.

De gros challenges et d’importants chantiers donc.

Le défi : se maintenir et concurrencer AWS et Azure

Les deux principaux acteurs du cloud investissent massivement sur le Cloud et ont annoncé ces dernières semaines leur arrivée sur notre territoire national brisant au passage un des atouts très important d’OVH. Ainsi si domicilier vos données en France est une contrainte pour vous, vous pourrez regarder plus largement les acteurs du secteur.

OVH peut prendre quelques parts de marché à AWS et Azure en terme de présence mondiale en investissant lourdement dans l’ouverture de nouveaux datacenters (1,5 Milliard d’investissements sur les 5 prochaines années), tout en prêtant attention au coût proposé qui devra rester compétitif face à toutes les baisses de prix régulières d’AWS et Azure.

image

Régions de Microsoft Azure

Il faut néammoins relataviser, les datacenters construit par OVH ne sont pas de la même dimension que ceux de des concurrents. Ainsi pour bien mesurer le rapport de force en présence, on peut comparer le milliard et demi d’investissement sur 5 ans d’OVH et le même montant investi par Microsoft sur… le dernier trimestre 2014 !

Toujours afin illustrer la différence d’ordre de grandeur, Microsoft investit en moyenne 500 millions de $ pour la création de chaque datacenter, et 3 Milliards ont déjà été investit pour le cloud en Europe uniquement. L’investissement d’1,5 Milliards sur 5 ans d’OVH est donc certes important mais reste tout relatif par rapport à la puissance de frappe des mastodontes tels que Microsoft ou Amazon.

En dehors des montants d’investissement, je pense que la principale difficulté à laquelle va se confronter OVH concerne son offre de services proposés.

Sans même évoquer la “simple” mise à disposition des nouvelles versions logicielles (quand-est que l’on aura droit à Windows Server 2016 monsieur OVH ?), la question du développement de services est primordiale.

OVH embauche à tour de bras, a mis en place un centre de formation interne afin d’avoir le plus rapidement possible des développeurs compétents, mais il semble complexe voire impossible d’atteindre la vélocité des équipes de Microsoft ou d’Amazon.

Le cloud ne se résume en effet pas à proposer un ensemble de services d’hébergement au sein de VMs ou de conteneurs, il est également indispensable de proposer tout un ensemble de services destinés aux développeurs afin de faciliter l’accès à de nouvelles possibilités techniques et à de nouveaux usages.

Prenons l’exemple d’un secteur en plein développement : l’IOT.

OVH propose actuellement une offre partielle :

image

 

Contrairement aux autres acteurs tels que Microsoft qui avec l’Azure IoT Suite propose tout un ensemble de services permettant de répondre à un éventail quasi exhaustif des besoins de ce type de solution.

Vous pouvez effectuer le même type de comparaison pour la variété des services de stockages, etc.

Envisageant de passer de 1000 employés l’année dernière à environ 3000 personnes en 2020, il est clair qu’à court terme, ce défi de richesse d’offre semble compliqué à réussir, alors que dans le même temps il est compliqué d’arriver à suivre le rythme des nouveautés et d’ajout de fonctionnalités proposées par Microsoft Azure.

Il va donc être très intéressant de voir comment notre champion français va arriver, dans les années à venir, à prendre des marchés sur ce secteur très concurrentiel même si concentré autour de peu d’acteurs (la barrière à l’entrée étant importante).

L’essentiel sur Docker et les conteneurs Windows

Le support de Docker est une des principales nouveautés de Windows Server 2016, et maintenant qu’il est possible de conteneuriser nos bonnes vieilles applications ASP.net ainsi que toutes les nouvelles sous .net Core, je vous propose un petit tour de toutes les notions essentielles pour comprendre Docker et les conteneurs Windows.

windows-10-docker

Afin de ne pas se laisser distancer par Linux sur le marché des serveurs, Microsoft a conclu un partenariat avec Docker, leader de la conteneurisation sous Linux, afin d’implémenter la même possibilité sous Windows. 2 ans de développement en commun plus tard, nous pouvons enfin profiter de ceci afin d’héberger nos applications On-Premise, en IaaS, ou via services cloud d’hébergement de conteneurs.

Les conteneurs

image

On compare souvent les conteneurs à de la virtualisation d’OS. Ainsi au lieu de virtualiser tout le matériel d’une machine (CPU, RAM, Disques, carte réseau, etc.),  un conteneur permet de faire fonctionner une application au sein d’un environnement isolé où la couche hardware utilisée correspond à celle de la machine hôte du conteneur, mais également où le kernel de la machine hôte est partagé par tous les conteneurs en cours d’exécution.

L’idée est de proposer un environnement d’exécution isolé sans payer le coût lié à l’hébergement d’une VM, et ainsi  de parvenir à héberger un nombre beaucoup plus important d’applicatifs isolés au sein d’une machine hôte.

Les containers permettent également d’avoir une grande souplesse au sujet du type de déploiement que pouvez effectué. Déployer votre application sur un serveur physique, dans une VM, ou encore sur le Cloud se fait de manière extrêmement simple puisqu’il vous suffit de déployer votre conteneur où vous le souhaitez pour avoir une application fonctionnelle, sans réinstallation logicielle, ni paramétrage.

Différents niveaux d’isolations sont proposés sous Windows Server 2016.

Les conteneurs Windows

Avec ce niveau d’isolation, chaque conteneur partage le kernel de la machine hôte. Ainsi, il est uniquement possible de faire fonctionner des conteneurs Windows au sein d’un serveur fonctionnant lui-même sous Windows, et ayant la même version de kernel.

Les conteneurs Hyper-V

Un niveau d’isolation supplémentaire est possible grâce aux conteneurs Hyper-V. Les conteneurs Hyper-V nécessitent un hyperviseur Hyper-V, Une petite VM est automatiquement créé et démarrée lorsque vous souhaitez démarrer votre conteneur.

Le kernel n’est donc plus partagée entre conteneurs, mais reste propre à chaque conteneur.

Autre avantage, vous pouvez faire fonctionner un conteneur Linux sous Windows grâce à ce niveau d’isolation.

Les images Docker

image

Les conteneurs sont basés sur des images qui contiennent :

  • Une image de l’OS souhaité. Même si le conteneur partage le même kernel que la machine hôte, on s’assure ainsi d’utiliser une image “propre” indépendante de la machine hôte, et non polluée par les différents drivers et logiciel du constructeur de votre serveur
  • Le ou les frameworks applicatifs souhaités
  • Et bien évidemment votre application !

Les images sont construites grâce à un fichier Dockerfile qui permet de définir l’image de base utilisée, et qui permet d’exécuter différentes commandes pour installer votre application et ses dépendances, et effectuer différents paramétrages.

Les couches

Cela signifie-t-il qu’en plus de mon application web (par exemple packagée via un package webdeploy) je dois en plus uploader et télécharger toute une image de Windows ?

Au lieu d’avoir une application de 50Mo, je me donc retrouve avec une image de plusieurs Go ?

Oui, et non (et même surtout non). Il est certes nécessaire de packager l’application au sein d’une image Docker qui contient l’image de l’OS et qui pèse donc au total assez lourd, mais il n’est pas pourtant nécessaire de télécharger l’intégralité de tout cela pour déployer une application.

Les images Docker reposent en effet sur un principe de couches, chaque instruction d’un fichier dockerfile créé en effet une couche au dessus des modifications déjà effectuées.

docker-layers

Lorsque l’on souhaite récupérer une image, Docker va donc récupérer celle-ci, couche par couche en commençant par l’image de base de l’OS. Et bien évidemment si la ou les couches sous-jacentes à la dernière couche de votre image sont déjà disponibles sur votre ordinateur, Docker ne les récupèrera pas de nouveau.

Ainsi si vous avez différentes images basées sur l’image microsoft/windowservercore, vous n’aurez pas à récupérer les 4Go de celle-ci à chaque fois, vous récupèrerez uniquement les couches qui ne sont pas encore disponible sur la machine hôte.

Les images de base

D’un point de vue OS, Microsoft propose deux images de base de Windows Server, une pour Windows Server Core qui pèse 4 Go en compressé, et une autre pour la nouvelle version “ultra-light” de Windows nommée Windows Nano Server. Celle-ci pèse 300Mo compressée.

Windows Nano Server correspond à un important travail de refactoring de Windows et de suppression de différents services considérés comme étant inutiles pour ce type de serveur.

Vous pouvez apprécier avec le schéma ci-dessous le résultat de cet effort de réduction :

image

25 fois plus petit qu’un Windows Server classique,  et avec une image Docker 10 fois plus petite que Windows Server Core, Windows Nano Server est l’édition indispensable pour bénéficier d’une empreinte la plus petite possible.

Ces deux images sont disponibles comme beaucoup d’autres images sur le hub de docker. Docker Hub est une bibliothèque d’images Docker, les plus grandes sociétés et éditeurs mettent à disposition leurs images Docker directement sur ce service qui permet d’héberger des images publiques mais également privées.

Il est important de noter que des images de base contenant uniquement des OS sont disponibles mais également des images contenant des frameworks applicatifs déjà installés. Il n’est donc pas nécessaire de se baser sur une image “nue”, le plus simple est de partir sur l’image correspondant le plus à votre besoin.

Le choix entre Windows Server Core et Windows Nano Server va essentiellement se faire en fonction de l’applicatif que vous souhaitez conteneuriser. Les deux éditions sont effet loin d’être iso-fonctionnelles et vous devrez faire votre choix en fonction des dépendances de votre application.

Ainsi si vous souhaitez déployer une application ASP.net WebForms ou MVC et donc basée sur le framework .net classique, vous devrez impérativement utiliser Windows Server Core car le framework .net n’est pas supporté sur Nano Server.

A contrario, si vous déployez une application ASP.net Core, Windows Nano Server, plus léger sera probablement votre choix de prédilection.

D’un point de vue Licensing

D’un point de vue Licensing tout est décrit dans le tableau ci-dessous :

image

Comme vous pouvez le voir, il est important de noter la limitation à deux conteneurs Hyper-V en édition standard alors que les conteneurs Windows sont eux, illimités.

Du côté du cloud

Côté cloud, que cela soit sur Microsoft Azure ou sur le cloud d’Amazon, il est pour le moment nécessaire de passer par des offres IaaS et donc d’avoir un host sous forme de VM pour héberger des conteneurs Windows. Les deux fournisseurs fournissent le même type d’image Windows Server 2016 with Containers qui proposent une instance de Windows Server 2016 avec les fonctionnalités de conteneurisation déjà installées et fonctionnelles.

Les services d’hébergement de conteneurs ne peuvent héberger que des conteneurs Linux chez ces deux fournisseurs de cloud.

Une preview privée est en cours sur le service Azure Container Service, et Amazon à annoncé le support des conteneurs Windows d’ici la fin de l’année 2016.

Il va donc falloir patienter un petit peu pour profiter d’un service dédié probablement moins coûteux qu’un service d’IaaS.

 

Rendez-vous pour un prochain post sur Docker afin d’aborder le déploiement d’applications d’ASP.net par la pratique !

Enfin de la grosse actualité autour de Windows !

Je critiquais le manque de nouveautés apportées par Windows 10 et de l’anniversary update lors du précédent meetup .net de Toulouse, et je suis plus qu’heureux d’avoir été magnifiquement contredit par l’évènement d’hier.

Alors que les principales nouveautés (Bash sous Windows et l’ajout des conteneurs Hyper-v) étaient destinées aux développeurs, la prochaine mise à jour de Windows 10 est destinée aux créateurs au sens large du terme.

Microsoft remets clairement en avant Windows grâce à des pages dédiées, un live streaming diffusé sur microsoft.com ainsi que sur facebook live, et un très bon suivi sur Twitter.

Une communication d’excellente qualité qu’il est nécessaire de souligner.

Afin d’avoir une vision rapide de toutes les annonces de cet EXCELLENT évènement, je vous propose la sélection de tweets suivante.

Windows 10 Creators Update pour le printemps 2017

La 3D




La réalité virtuelle



Les jeux




Du MAGNIFIQUE Hardware




Pour aller plus loin

La synthèse de l’évènement en 09 minutes


La couverture de l’évènement par TechCrunch

https://techcrunch.com/tag/windowsevent2016/