La plateforme Microsoft Azure offre différentes possibilités pour l’hébergement d’applications modernes. Dans cette session, nous passerons en revue les différents choix d’architectures possibles pour ces applications : machines virtuelles, services de plateformes comme Azure Service Fabric et Azure App Services, solutions d’hébergement de conteneurs Docker sont autant de possibilités qui s’offrent à vous dès aujourd’hui !
Use In IoT : l’objet connecté de la board au dashboard
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça PaaS ou ça CaaS ?
1. Quelles options pour vos applications
Cloud ?
De la VM au conteneur : ça PaaS ou ça CaaS.
2. ²
Julien Corioland
Evangéliste Technique
Microsoft France
@jcorioland
Nicolas Clerc
Architecte Cloud
Microsoft France
@nclerc
David Gageot
Core Engineer
Docker, Inc.
@dgageot
Quelles options pour vous applications Cloud ?
De la VM au conteneur, ça PaaS ou ça CaaS.
3. • Avoir une vue d’ensemble de la plateforme applicative
Microsoft Azure
• Comprendre le positionnement des différents services qui
composent cette plateforme
• Connaître les options à votre disposition sur la plateforme
Microsoft Azure pour héberger vos applications Cloud
Objectifs de cette session
N° 3
5. La plateforme applicative Microsoft Azure
N° 5
Services orientés plateforme
App
Service
Cloud
Services
Service
Fabric
Services d’infrastructure
Batch
Services applicatifs
SQL
Database
Redis
Cache
DocumentDB
Search
HDInsight
Stream
Analytics
Machine
Learning
Event
Hubs
Mobile
Engagement
Marketplace
Active
Directory
...
Application
6. Une « application Cloud », c’est quoi ?
Une collection de services qui communiquent entre eux
N° 6
Web
Front
Products
API
Recommendations
API
Ratings
API
7. Niveaux d’isolation VS densité
N° 7
Plus isolé Plus dense
PC / Machine Virtual Machine Container Process
Matériel Non partagé Partagé Partagé Partagé
Kernel Non partagé Non partagé Partagé * Partagé
Ressources
Système
Non partagé Non partagé Non partagé Partagé
* Sauf Hyper-V Containers
~10 min ~ 10 sec
Vélocité de mise à l’échelle
~ 1 sec~ 10 jrs ouvrés
8. Contrôle VS Simplicité
IaaS (managé?), CaaS, PaaS…
N° 8
Contrôle
Simplicité
Machines Virtuelles
VM Scale Sets
Container Service
Service Fabric
App Services
10. Azure App Services
N° 10
• Langages & Framework
• DevOps
• Self service
Apps
Web Apps Mobile Apps API Apps Functions
eCommerce Digital Global Presence LOB API / Services / ISVCustom Apps
• Auto Scaling
• OS & Framework
• Load balancers / Infra
• Enterprise Grade SLA
• Sécurité
• Connectivité On-Premise
11. N° 11
Products API
App Services API App
Recommendations API
App Services API App
Ratings API
App Services API App
Web Front
App Services Web App
APP PLAN #1APP PLAN #1
APP PLAN #2
APP PLAN #3
13. • Ne pas se préoccuper de l’infrastructure sous jacente
• Possibilité d’héberger plusieurs applications dans un même plan (densité
/ coûts)
• Simplicité :
• Auto-Scaling
• DevOps : déploiement continue, slot de déploiement, tests en production…
• Totalement managé
Azure App Services
Quelques avantages…
N° 13
15. Service Fabric
Une plateforme pour des services distribués, évolutifs et hautement
disponibles
N° 15
• Une plateforme distribuée pour déployer vos applications et
services
• Modèle applicatif , API native et managée
• Services techniques : nommage, localisation, …
• Communication sécurisés, Messaging applicatif
• Haute disponibilité et forte montée en charge
• Partitionnement, Réplication et Failover des services
• Gestion des ressources, placement par contraintes
• Mutualisation, optimisation des ressources
et haute densité de services
• plusieurs applications sur un même cluster
(un cluster = plusieurs nœuds)
• Multiple versions d’une même application, rolling upgrade,
rollback
16. Service Fabric
N° 16
Plateforme ServiceFabric
Node 1 Node 2 Node 3
Node
XYZ
• VM Windows (GA)
• VM Linux (Preview)
• Azure VMScaleSet
17. Service Fabric
Un framework pour construire vos services
N° 17
• Un framework pour développer vos micro-services
MicroService ??
• Service ou une application autonome à périmètre fonctionnel limité et clairement
identifié
• Cycle de développement indépendant
• Continuous Delivery ‘by design’
• Versionning multiple
• ReliableCollection
• Socle technologique ouvert
• Multi technologies de développement
– 1st class : Java/Linux & .Net-.NetCore/Windows
– Guest executable, Container
• Service Fabric pour Windows Server (GA)
• Service Fabric pour Linux (Preview)
• Microsoft Azure Service Fabric (GA)
• Et donc tout cloud !!
18. Service Fabric
Modèles applicatifs
N° 18
Plateforme ServiceFabric
Modèle applicatif “ReliableService” : SDK & API
“Reliable storage”
Actor model
framework
“Guest executable”
- N’importe quel exécutable
- ServiceFabric gère le cycle
de vie de l’exécutable
- Intégration limitée avec la
plateforme
“container”
- Déploiement de container
- ServiceFabric gère le cycle
de vie de du container
- Intégration limitée avec la
plateforme
Stateless service
- Modèle applicatif simple
- Forte intégration
(monitoring, health, load
balancing, communication,
localisation, …)
- Multi technologies
Statefull
service
- Proximité des ‘données’
avec le service
- Replication
automatique des
données
Actor service
- Pattern « virtual Actor
Model »
Node 1 Node 2 Node 3
Node
XYZ
• VM Windows
• VM Linux
• Azure VMScaleSet
19. N° 19
Products API
Recommendations API
Ratings API
Web Front
ApplicationType: ServiceFabricShopType
ServiceType: ShopFrontType
ServiceType: ProductApiType
ServiceType: RecommandationsApiType
ServiceType: RatingsApiType
26. • Infrastructure as a Service
• Simple VM avec Docker installé
• Azure Container Service
• Cluster Swarm “as a service”
• Azure Service Fabric
• Support annoncé des images
Docker (Windows & Linux)
Docker & Microsoft Azure
Quelles options pour héberger des conteneurs ?
N° 26
• Docker for Azure
• Docker Datacenter
• Toute l’offre Docker “as a
service”
• Marketplace Azure
28. La plateforme applicative Microsoft Azure
N° 28
Services orientés plateforme
App
Service
Cloud
Services
Service
Fabric
Services d’infrastructure
Batch
Services applicatifs
SQL
Database
Redis
Cache
DocumentDB
Search
HDInsight
Stream
Analytics
Machine
Learning
Event
Hubs
Mobile
Engagement
Marketplace
Active
Directory
...
Application
29. Quelques sessions…
N° 29
• Applications Cloud : et si le futur était « serverless » ?
• 17h en salle 241
• Développement et déploiement d’applications conteneurisées avec
Docker
• 17h en salle 352B
• Azure Service Fabric pour les développeurs
• 15h45 en salle 342B
• Rencontre avec les experts & speakers
• DevOps -> 15h45, Village Cloud
• Architectes & Développeurs Cloud -> 15h45, Village Cloud
32. Notez cette session
Et tentez de gagner un Surface Book
Doublez votre chance en répondant aussi
au questionnaire de satisfaction globale
* Le règlement est disponible sur demande au commissariat général de l’exposition. Image non-contractuelle
Notes de l'éditeur
Les objectifs de cette session sont :
Avoir une vue d’ensemble de la plateforme applicative Microsoft Azure
Comprendre le positionnement des différents services qui composent cette plateforme
Connaître les options à votre disposition sur la plateforme Microsoft Azure pour héberger vos applications Cloud
Concrètement, Microsoft Azure c’est avant tout des data-centers répartis dans plus de 30 régions dans le monde…
Et la bonne nouvelle du début de semaine, c’est que le Cloud Microsoft arrivera en France en 2017 !
Un data-center Azure, qu’est-ce que c’est ?
Tout en bas, on a des serveurs physiques, sur lesquels on a bâti une couche d’Infrastructure-as-a-service (IaaS). Elle permet notamment de déployer des machines virtuelles, de virtualiser le réseau, le stockage et de déployer un certain nombre de services qui reposent sur ce IaaS.
Par-dessus, on a une couche de Platform-as-a-Service (PaaS), avec historiquement les Cloud Services, et depuis Azure App Services, pour l’hébergement d’applications web, d’API web, de back-end d’applications mobiles… Et aussi Azure Service Fabric, notre orchestrateur de micro-services.
Enfin, on retrouve un catalogue de plus de 500 services applicatifs disponibles sur Azure, allant de la base de données SQL as-a-service, en passant par des services de recherches, de cache ou encore liés au Big Data et à l’IOT.
Et au final, votre application Cloud, quelle qu’elle soit, va pouvoir venir exploiter toute ces couches pour tirer pleinement partie de la plateforme, que ce soit sous Linux ou sous Windows, avec les langages et Frameworks de votre choix, que vous avez l’habitude d’utiliser dans vos équipes.
Concrètement, une application Cloud, ce n’est rien d’autres qu’une collection de services / API qui interagissent entre eux et avec des services de stockage, de cache, …
Et dans cette session, on a choisi de prendre un cas très simple pour illustrer toutes les démonstrations que l’on va faire, avec une application web front développée en ASP.NET Core, qui fait appel à trois API web, elle aussi développée en ASP.NET Core.
Une fois que l’on a défini nos différents services, une des premières questions que l’on peut se poser, c’est le niveau d’isolation que l’on souhaite avoir pour nos services, versus la densité que l’on souhaite qu’ils occupent. Ainsi, si on fait le choix d’une machine virtuelle par service, on sera beaucoup plus isolé qu’un process par service, mais on sera également moins dense ; et implicitement, la vélocité de mise à l’échelle de l’application sera plus faible pour le modèle VM que processus ou conteneur.
La deuxième question que l’on peut se poser, est le choix du contrôle, versus celui de la simplicité. Si vous choisissez d’utiliser les couches d’Infrastructure-as-a-Service, vous aurez en charge la gestion de l’OS, des mises à jour, l’installation des Framework applicatifs, configuration des fermes de serveurs, réseaux, load balancers… etc… avec la possibilité de simplifier un peu les choses avec les VM Scale Sets qui permettent gérer et déployer un groupe de machines identiques et passer à l’échelle plus rapidement…
A l’inverse, vous pouvez choisir de perdre un peu de contrôle, mais de gagner en simplicité, avec des plateformes comme Azure Service Fabric, pour orchestrer vos micro-services ou Azure App Services pour vos applications web.
Entre les deux, les conteneurs sont une nouvelle option : des services comme Azure Container Service ou Docker Datacenter permettent d’orchestrer des applications déployées sous la forme de conteneur en faisant abstraction de la plateforme… On parle parfois de PaaS over IaaS, ou de Container-as-a-Service.
Et donc du coup, la première option que l’on va démontrer aujourd’hui, c’est Azure App Services
Azure App Services est un service de plateforme destiné à héberger tout type d’applications / API web et back end d’applications mobiles. C’est une plateforme totalement managée, vous n’avez pas d’OS ou d’infrastructure à gérer, il suffit de pousser votre code – Node.js, PHP, Java, .NET… - et cela fonctionne.
La plateforme fournit également des services de haut niveau, comme l’auto scaling pour augmenter ou diminuer le nombre de machines qui exécutent l’application, ou encore les slots de déploiement pour gérer vos environnements de développements, tests, recette… faire du test en production ou encore déployer en continu vos applications depuis votre contrôle de code source.
Montrer le code dans Visual Studio Code + expliquer qu’on est dans un repository GitHub
Se connecter au portail Azure et montrer le ressource group avec la web app et les 3 api app
Montrer le site web en exécution dans Edge
Faire une modification de la version de Ratings API + commit + push
Montrer que le déploiement est en cours et que ça change tout seul sur le front
Montrer les différents App Plan et passer celui des produits à 3 instances
Valider, puis expliquer ce qu’il se passe + montrer aussi qu’on peut faire en mode charge CPU ou en fonction de la queue http, par exemple…
L’infra doit être déployé, montrer le site et le round robin sur chaque API
Comme nous l’avons vu au travers des différentes démonstrations dans cette session, la plateforme applicative Microsoft Azure propose plusieurs options pour l’hébergergement des services qui composent une “application cloud”
Que ce soit les machines virtuelles & VM Scale Set proposes par la couche IaaS
Que ce soit à l’aide de conteneurs et de solutions comme Azure Container Service ou Docker Data Center qui vous permettent de déployer des orchestrateurs applicative par-dessus la couche d’infrastructure
Ou que ce soit avec des services de plateforme comme Azure Service Fabric & Azure App Services
Vos applications pourront exploiter ces différents services, vous n’êtes pas obligés de n’utiliser qu’une seule brique, mais il est tout à fait possible de les mixer
Enfin, on constate qu’au finale, le facteur déterminant sera très certainement le choix du contrôle VS celui de la simplicité, qui vous fera passer de la machine virtuelle traditionnelle au service de plateforme
Et bien entendu, dans cette session nous nous sommes focusé sur les services de « compute » mais il ne faut pas oublier les centaines de services applicatifs « prêts à l’emploi » qui sont disponibles sur la plateforme Microsoft Azure et dans sa Marketplace.