XebiCon'16 : Architecture MicroServices avec Azure par Michel Hubert, CTO de Cellenza et...

Preview:

Citation preview

@xebiconfr #xebiconfr

Architecture MicroServices avec

Azure Michel 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

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 ?

Recommended