mercredi 23 mai 2018

C'est quoi un container Docker ?

On est en droit de se poser la question, disons qu'on est même obligé dans le métier du logiciel vous entendez maintenant ce mot de Docker avant c'était Machine Virtuelle. Mais surtout on se doit de trouver la bonne réponse.

Un container Docker permet d'embarquer une application qui s'exécute au sein du container. Docker se sert du Noyau Hote pour faire tourner l'application dans son container.


Docker c'est quoi ?
Container Docker c'est quoi ?

Voilà je tenais à avoir un début de réponse concernant ce sujet que je vais creuser jusqu'à utiliser maintenant des "container" plutôt que des machines virtuelles (plus lourdes et plus difficiles à utiliser du fait de cette lourdeur).

Pour la suite et pour l'instant, je vous renvois vers cet article qui m'a fait découvrir ce qu'est un Container Docker l'article :

Docker : la technologie qui révolutionne le cloud

Mise à jour 29/05/2018 - Maintenant je vais un peu plus loin

C'est étonnant cette réussite de Solomon Hykes, en quelques années, quelques mois, il réussit a fédérer autour de ses "container" ou conteneurs en français toute l'industrie informatique qui se rallie au standard de Docker de facto comme ils disent certainement car il n'y a pas d'autre standard.

Voici la vision Microsoftienne de l'utilisation des conteneurs pour les microservices :

https://docs.microsoft.com/fr-fr/dotnet/standard/microservices-architecture/
https://docs.microsoft.com/fr-fr/dotnet/standard/microservices-architecture/

Microservices .NET Architecture pour les applications .NET en conteneurs
Là on est au top de la techno dans l'Azure et les Containers ... au milieu du DevOps
Azure Container Service
Azure Service Fabric
C'est l'avènement des architectures en Microservices ... Monolithique vs Microservices ... bla bla bla

On plonge dans le vif du sujet.

Le projet de référence concernant .NET Core et les microservices sur GitHub : eShopOnContainers
Grâce à NET Core 2.0 et Docker engine, requis Visual Studio 2017

On passe sur le doc : Containerized-Docker-Application-Lifecycle-with-Microsoft-Platform-and-Tools-(eBook)_v1.1.pdf

Containers c'est mieux que Virtual Machine moins gourmant en ressources.

En bas de la page le bouton est cassé pour continuer de naviguer en français, utilisez le menu de gauche :

https://docs.microsoft.com/fr-fr/dotnet/standard/microservices-architecture/container-docker-introduction/
Introduction aux conteneurs et à Docker

Le gros .PDF c'est en fait la même chose que le site en ligne ... ? Donc on déroule le site, en français.
On y parle de Docker Hub :

Docker Hub by Docker

Il s'agit d'un registre pour votre collection d'images.
L'utilisation de registres d'images privés est recommandée dans les situations suivantes :
  • confidentialité
  • limitation de la latence du réseau
On peut générer des applications Docker avec .NET Framework ou .NET Core

Choisir .NET Core dans les cas suivants :
  • projets multi-plateforme
  • architecture basée sur les microservices
  • plus faible encombrement par conteneur
.NET Core est donc le choix par défaut lorsque l'on vuet créer des applications en conteneur.

Utiliser .NET Framework lorsque les applications :
  • sont fortement dépendantes de Windows
  • utilisent les API Windows non prise en charge
  • vous utilisez des Nugets non dispo pour .NET Core
Finalement le choix n'est pas si simple :


Quel OS comme cible avec .NET conteneur ?

Le saviez-vous, il existe des Images .NET Docker officielles de Microsoft :

https://hub.docker.com/u/microsoft/
Images officielles .NET Docker

Ce qui devrait grandement nous faciliter la vie.

Mais tout ceci est très Microsoftien ...

Par la suite dans l'architecture des applications basées sur les conteneurs et les microservices, il s'agit principalement de l'orchestrations des conteneurs comment spécifier à Docker par le Docker file qu'un conteneur s'exécute dans un processus que doit faire l'orchestrateur en cas de défaut d'un conteneur.

Mise en conteneur d'applications monolithiques

En premier lieu, dans les conteneurs,  il s'agit de déployer des applications monolithiques ainsi on n'a rien à faire concernant l'architecture de l'application mais ce modèle atteint rapidement ses limites lorsque l'application grossie.

Il faut également que l'application trouve dans le conteneur tout ce dont elle a besoin pour fonctionner ... sinon ... champignon !

Vision Microsoftienne : Publication d’une application basée sur un seul conteneur sur Azure App Service. Azure App Service est un excellent moyen de fournir des services évolutifs basés sur un seul conteneur. On publie l'application directement dans le conteneur à partir de Visual Studio.

Avec Docker, la prise en charge des conteneurs dans Visual Studio 2017 permet d'inclure tout ce que l'on veut dans l'environnement de l'application.

Remarques :
Les conteneurs sont par défaut "sans état".
Les conteneurs Docker ne sont pas obligatoires pour les architectures orientées services SOA et pour les architectures de microservices plus avancées.

Architectures Orientées Services SOA

Certaines personnes affirment que « l’architecture de microservice est une architecture SOA bien conçue ».

Si vous savez créer une application basée sur des microservices, vous savez également créer une application orientée services plus simple.

Conseils pour une architecture en microservices

Une Database privée par microservice :


https://docs.microsoft.com/fr-fr/dotnet/standard/microservices-architecture/architect-microservice-container-applications/distributed-data-management
Cohérence entre microservices

Communication entre microservices

On reste un peu sur notre faim, comme souvent avec ces longs articles à la manière de Microsoft, les vraies solutions de sont pas dévoilées ...

On vous parle de l'isolation un peu comme dans les architectures multi-processus isolation des données. Tout ceci est bien théorique !

Conception en microservices

Déterminer les limites du modèle de domaine pour chaque microservice, non en fonction de la taille même s'il faut tendre à de petits services mais en fonction de la connaissance du métier.

Communication directe de client à microservice et modèle de passerelle d’API

Les microservices ont des points de terminaison (End Point) ou port TCP.

Franchement ce schéma ne casse pas des briques

Conception d'applications de grande taille Questions à considérer.

To Be Continued

Ce post est devenu trop "Microsoft dépendant", je pensais qu'en partant de Container Docker et Architecture en microservices on ne tomberait pas aussi rapidement et aussi profondément dans les griffes de l'Azure microsoftienne... C'est bon à connaître mais ce n'est pas seule utilisation des Container Docker.

Bref à compléter ...

I should not forget to go to the beach :-))

Have fun!

Aucun commentaire:

Enregistrer un commentaire