Post on 13-Apr-2017
@xebiconfr #xebiconfr
Architecture MicroServices avec
AzureMichel HUBERT Matthieu Klotz
@xebiconfr #xebiconfr
Speakers
Michel Hubert
http://www.cellenza.com @michelhubert
michel.hubert@cellenza.com
Matthieu Klotz
http://www.cellenza.com @matthieuklotz
Matthieu.klotz@cellenza.com
@xebiconfr #xebiconfr
Cellenza1
@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éveloppementPatterns
d’architectureBest Practices (TDD,
BDD, …)Craftmanship
Méthodes agiles (SCRUM, SafE)
ALMIntégration Continue
Mesure d’impact
Processus, Organisation,
DevOps
Communication, Formation, Coaching
1
@xebiconfr #xebiconfr
Des experts reconnus
10 AzureC#ALMSQL ServerWindows 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
Introduction2
@xebiconfr #xebiconfr
Applications monolithiques2
Toutes les fonctionnalités dans un seul process….
Le scalling se fait en répliquant l’application complètesur 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 Projet3
@xebiconfr #xebiconfr
Device
Dashboard
Hub
Store
User
3 Architecture
@xebiconfr #xebiconfr
Hosting : IaaS
Device IoT Hub
Virtual Network
Store
Load-Balancer
DashboardLoad-Balancer
User3
@xebiconfr #xebiconfr
Docker dans Azure4
@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 containersShared host OS: Processes in containers are isolated from other containers in user space, but share the kernel with the host and other containersFlexible: Differences in underlying OS and infrastructure are abstracted away, streamlining “deploy anywhere” approachFast: Containers can be created almost instantly, enabling rapid scale-up and scale-down in response to changes in demand
4
Container
1Container
2Container
3
Unassigned
Host and VM OS files and librariesHost
@xebiconfr #xebiconfr
Docker Integration
Docker
Dockerized app
Windows Server
ContainerLinux
Container
CustomerDatacenter
ServiceProvider
MicrosoftAzure
Run anywhere
4
@xebiconfr #xebiconfr
DevOps
Developers build and test apps in containers, using development environment
Containers pushed tocentral repository
Operations automates deployment and monitors deployed apps from central repository
Physical/Virtual Servers
1 2
2
3Operations collaborates with developers to provide app metrics and insights
Developers update, iterate, and deploy updated containers
4
@xebiconfr #xebiconfr
Docker Datacenter4
@xebiconfr #xebiconfr
DémoDocker 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.11Ajout / 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
VMs and VM Scale Sets
ARM Template
Container Services (1st party, 3rd party)
Windows Server Linux
Azure Stack Azure
Container Tooling
Service Tooling
@xebiconfr #xebiconfr
Notre projet
Device IoT Hub
Virtual Network
ContainersLoad-Balancer
User
Azure Document DB
Swarm Managers
Load-Balancer
Ops
5
@xebiconfr #xebiconfr
DémoAzure 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 Fabric6
@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 FabricHigh Availability
Hyper-Scale
Hybrid Operations
High Density
Rolling Upgrades Stateful
services
Low Latency Fast startup & shutdown
Container Orchestration & lifecycle management Replication &
Failover
Simple programmin
g models Resource balancing
Self-healingData Partitioning
Automated Rollback
Health Monitoring
Placement Constraints
Azure Private cloud Other clouds
6
@xebiconfr #xebiconfr
DémoService 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
AppService7
@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émoAzure 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
Conclusion
IaaS• VM
CaaS• Docker
CaaS• Service
Fabric
PaaS• AppServic
e
@xebiconfr #xebiconfr
Questions ?