@xebiconfr #xebiconfr
Architecture MicroServices avec
Azure Michel HUBERT Matthieu Klotz
@xebiconfr #xebiconfr
Speakers
Michel Hubert
http://www.cellenza.com @michelhubert
Matthieu Klotz
http://www.cellenza.com @matthieuklotz
@xebiconfr #xebiconfr
Cellenza
1
@xebiconfr #xebiconfr
Cellenza ?
“Nous croyons qu’il est possible de réaliser du développement logiciel de haute qualité”
WHY ?
Technologie Méthodologie Gouvernance
Conduite du changement
Développement Patterns d’architecture Best Practices (TDD,
BDD, …) Craftmanship
Méthodes agiles (SCRUM, SafE)
ALM Intégration Continue
Mesure d’impact
Processus, Organisation, DevOps
Communication, Formation, Coaching
1
@xebiconfr #xebiconfr
Des experts reconnus
10 Azure C# ALM SQL Server Windows Client
1 4
Des publications : • Livres blancs (Cell’Insights)
• http://www.cellenza.com/cellinsights • Articles dans Programmez! • Blog Cellenza
• http://blog.cellenza.com • Organisation de TechEvent • Speakers lors de conférences Microsoft
• TechDays, Azure Camp, …
1
@xebiconfr #xebiconfr
Introduction
2
@xebiconfr #xebiconfr
Applications monolithiques 2
Toutes les fonctionnalités dans un seul process….
Le scalling se fait en répliquant l’application complète sur plusieurs serveurs.
@xebiconfr #xebiconfr
Applications monolithiques
Toutes les fonctionnalités dans un seul process….
Chaque fonctionnalité de l’application se traduit par un service
Les services sont répliqués sur différents serveurs En fonction des besoins.
2
@xebiconfr #xebiconfr
Le Projet
3
@xebiconfr #xebiconfr
Device
Dashboard
Hub
Store
User
3 Architecture
@xebiconfr #xebiconfr
Hosting
Device IoT Hub
Virtual Network
Store
Load-Balancer
Dashboard Load-Balancer
User 3
@xebiconfr #xebiconfr
Docker dans Azure
4
@xebiconfr #xebiconfr
Docker Datacenter
Qu’est-ce qu’un container ? Dependencies: Every application has it’s own dependencies which includes both software (services, libraries) and hardware (CPU, memory, storage)
Virtualization: Container engine is a light weight virtualization mechanism which isolates these dependencies per each application by packaging them into virtual containers
Shared host OS Processes in containers are isolated from other containers in user space, but share the kernel with the host and other containers
Differences in underlying OS and infrastructure are abstracted away, streamlining “deploy anywhere” approach
Containers can be created almost instantly, enabling rapid scale-up and scale-down in response to changes in demand
4
@xebiconfr #xebiconfr
Docker Integration 4
@xebiconfr #xebiconfr
DevOps 4
@xebiconfr #xebiconfr
Docker Datacenter 4
@xebiconfr #xebiconfr
Démo Docker Datacenter Azure
@xebiconfr #xebiconfr
Docker Datacenter
Avantages
• Mutualisation des ressources • Tool chain connue et documentée • Plateforme complète
Inconvénients
• Gestion des machines virtuelles (mise à jour, etc.) • Gestion du réseau virtuel (politiques de sécurité, load-balancing, etc.) • Gestion des ressources : ajout / suppression de machines manuel • Coût : licence (150€ par VM) + nombre de machines (minimum 6)
4
@xebiconfr #xebiconfr
Azure Container Service
5
@xebiconfr #xebiconfr
Azure Container Service
Objectif : ne plus s’occuper de la quantité de resources virtuelles • Usage de Virtual Machine Scaleset Container Service est une offre de cluster Docker, basée sur Swarm 1.11 Ajout / Suppression de VMs en fonction de la charge CPU, mémoire, etc. Premier pas vers le PaaS : suppression de MongoDB, passage à DocumentDB • Drivers Compatible • Plus de gestion des volumes
5
Containers
Container Tooling Service Tooling
@xebiconfr #xebiconfr
Notre projet
Device IoT Hub
Virtual Network
Containers Load-Balancer
User
Azure Document DB
Swarm Managers
Load-Balancer
Ops
5
@xebiconfr #xebiconfr
Démo Azure Container Service
@xebiconfr #xebiconfr
Azure Container Service
Avantages
• Mutualisation des ressources • Même tooling que Docker Datacenter • Gestion automatique de la quantité de resources virtuelles • Gain financier face à Docker Datacenter (plus de licence), moins de machines
Inconvénients
• Gestion des machines virtuelles (mise à jour, etc.) • Monitoring : intégration de solutions tiers telles que OMS • Pas de Swarm Mode (Swarm 1.12) • Nombre de machines virtuelles : minimum 5
5
@xebiconfr #xebiconfr
Service Fabric
6
@xebiconfr #xebiconfr
Service Fabric
Objectif : ne plus s’occuper du Framework Service Fabric est une plateforme pour : • Créer et déployer des micro-services stateless ou statefull • Hébergement d’applicatif externes (ex : redis) • Gérer ses containers docker (windows ou linux) Service Fabric est la base de nombreux composants Azure : DocumentDB, Azure SQL Database, Event Hub, Cortana, etc.
6
@xebiconfr #xebiconfr
Service Fabric
Microservices
Service Fabric High Availability
Hyper-Scale
Hybrid Operations
High Density Rolling Upgrades Stateful services
Low Latency Fast startup & shutdown
Container Orchestration & lifecycle management
Replication & Failover
Simple programming
models Resource balancing
Self-healing Data Partitioning
Automated Rollback
Health Monitoring
Placement Constraints
Azure Private cloud Other clouds
6
@xebiconfr #xebiconfr
Démo Service Fabric
@xebiconfr #xebiconfr
Service Fabric
Avantages
• Mutualisation des ressources • Mise à jour automatique du framework • Monitoring inclus • Linux & Windows • Modèle Acteur natif • Service Stateless & Statefull
Inconvénients
• Apprentissage de la plateforme • Mise à jour de l’Operating System à gérer • Nombre de machines virtuelles : minimum 5
6
@xebiconfr #xebiconfr
AppService
7
@xebiconfr #xebiconfr
Azure AppService
Objectif : full PaaS. Plus de gestion de VMs App Service est une plateforme d’hébergement : • Différents languages : C#, Java, Php, Node.js, Python • Auto-scaling & Load-Balancing automatique • Auto-Patching • Intégration continue avec les outils habituels : Git, TFS, etc. Azure Function est une solution de traitement de données • Server-Less • Intégré à App Service
7
@xebiconfr #xebiconfr
Azure AppService
App Service
Device IoT Hub Azure Function Azure Document DB
User
Azure Web App
Azure API App
7
@xebiconfr #xebiconfr
Démo Azure AppService
@xebiconfr #xebiconfr
Azure App Service
Avantages
• Mutualisation des ressources • Intégration aux gestionnaires de sources • Monitoring (via Application Insights) • Haute Scalabilité • Plus de IaaS
Inconvénients
• Support limité en nombre de langages
7
@xebiconfr #xebiconfr
Conclusion
@xebiconfr #xebiconfr
Questions ?