meetup - construire des applications serverless avec azure
TRANSCRIPT
Responsable technique - MVP Azure
Construire des
applications Serverless
avec Azure Samir AREZKI
@itfana
Meetup .NET Toulouse#DotnetTlse
SPEAKER
Samir AREZKIResponsable technique chez Groupe HBF
Microsoft MVP Azure
@itfana
AGENDA
1. Serverless
2. La plateforme Serverlessd’Azure
3. Étude de cas
4. Mise en place
5. Pour aller plus loin
6. Questions / Réponses
L’ÉVOLUTION DES ARCHITECTURES APPLICATIVES
MONOLITHE
1 2 3 4
MICROSERVICES
SOA SERVERLESS
1 application = 1 système
Découpage en services
Découpage en plus petits services
Découpage en fonctions
SERVERLESS
• Function as a Service (FaaS) – Exécution du code de votre fonction à la demande
– Paiement seulement pour le temps d’exécution de votre fonction
• Serverless = Compute + Patterns
• Les caractéristiques d’une application Serverless : – Pas de serveurs à gérer
– Continuous scaling
– Ne jamais payer pour les serveurs inactifs (Never pay for idle)
– Utilisation de services tiers (Third party services)
LES PROMESSES D’UNE APPLICATION SERVERLESS
Scalingautomatique
Paiement à l’utilisation
Abstraction des serveurs
AZURE FUNCTIONS
• Azure Functions est un service de calcul qui permet d’exécuter du code à la
demande sans explicitement configurer ou gérer l’infrastructure.
– Calcul à la demande déclenché par des évènements
• Les langages de développement supportés :
– C#, F#, Node.js, Java, Python, TypeScript, PHP, Batch (.cmd, .bat), PowerShell
=
AZURE FUNCTIONS
• Deux plans d’hébergement:– Plan App Service :
• Function App exécutées sur App Service plan tout comme les Web App (Basic, Standard ou Premium)
• Gestion mise à l’échelle (horizontale, verticale)
• Paiement à la machine
• Modèle PaaS
– Plan dynamique de consommation (Dynamic) :• Les Functions sont exécutées sur des serveurs mutualisés
• Mise à l’échelle dynamique
• Paiement à l’exécution (temps, mémoire)
• Modèle Serverless
AZURE FUNCTIONS - DEVELOPER EXPERIENCE & TOOLS
• Visual Studio Tools for Azure Functions :– Projet Visual Studio
– Debug en local
– Versionning
– Source Control (Git) & CI/CD
• Azure Functions Tools -Extensions for VS Code– https://github.com/johnpapa/v
scode-azure-functions-tools
AZURE FUNCTIONS WORKFLOW
1) Trigger
7) Develop Locally
3) Develop 4) Execute
6) Monitor and Improve
2) Input Binding 5) Output Binding
Web Hooks
Azure Services Azure Services
App ServicesHosting Plans
Azure Services
Source : Microsoft
Azure Functions - Monitoring
• Intégration native avec Application Insights
– https://blogs.msdn.microsoft.com/appserviceteam/2017/04/06/azure-
functions-application-insights/
AZURE LOGIC APPS
• Service d’intégration
– Connecter les applications : on-premises, hybrid et cloud
– Exécuter des scénarios d'intégration complexes avec facilité
• Orchestration de workflow
• Notions de déclencheurs et d’actions
• Passage des paramètres d’actions en actions
• Monitoring de l’exécution de chaque étape
• Plusieurs dizaines de modèles existants
AZURE LOGIC APPS CONNECTORS
• Connecteurs prêts à
l’emploi
– Connecteurs mangés
par la plateforme
• API connections
– Réutilisation
– Gestion depuis le
portal
Protocols/Native
XML & EDI
Hybrid
SaaS
AZURE LOGIC APPS : OUTILLAGE
• Logic Apps tools for Visual
Studio
– Logic Apps designer
– Deployment templates
– Source Control & CI/CD
AZURE LOGIC APPS : MONITORING
• Debugging and History
• Trigger history
• Run history
• Tracking– Azure Monitoring
– Emit core tracking events
– Send to storage or event hub
– Use TrackedProperties for your own tracking data
• Monitoring view
• Diagnostics & Alerts
Azure
LE CONTEXTE
• Client : mySmartHome– Métier de l’entreprise : Domotique & maison connectée
– Production, distribution et commercialisation de produits domotiques
• Canaux de vente :– De la vente directe : un site web (e-commerce)
– De la vente indirecte : marketplaces (Amazon, Cdiscount,
Manomano….)
LE BESOIN
• Lancement d’une nouvelle offre domotique
• Les services à développer pour lancer la nouvelle offre :
– Une plateforme IoT (backend)
– Des APIs pour faciliter le développement d’applications
(web et mobile)
– Des dashboards pour le département marketing pour
suivre les ventes et la satisfaction (ou non) des clients
– ….
LES EXIGENCES
• Lancer la nouvelle offre rapidement
• Réduire les coûts de développement, de maintenance et
d’exploitation
• Garantir un niveau de service (SLA)
• Garantir les performances
• Faciliter la surveillance et la supervision
• Sécurité
MYSMARTHOME - ARCHITECTURE TECHNIQUE SERVERLESS
DocumentDB
IoT Hub
Functions
Capteurs
Functions
Application
Mobile
Logic App
Cognitives
Services
PowerBI
Marketplaces Webhook
FunctionsApp Service
DEMO 1 : IoT
DocumentDB
IoT Hub
Functions
Capteurs
IoT : Ingestion, traitement et stockage des trames
{"deviceId": "device_1","ip": "192.168.104.80","mac": "34:ea:34:e4:97:30","temperature":23 ,"humidity": 51,"airQuality": 0,"lightLevel": 2,"noiseLevel" : 1
},
Une trame :
DEMO 2 : API
DocumentDB
IoT Hub
Functions
Functions
Capteurs
Application
Mobile
API : Restitution des trames pour les applications
https://mysmarthome-functionapp.azurewebsites.net/frames/device_3
API :
DEMO 3 : E-commerce E-commerce : analyse des commentaires clients sur les produits
DocumentDBLogic App
Cognitives
Services
PowerBI
Marketplaces Webhook
STATIC WEBSITES WITH BLOB STORAGE AND FUNCTIONS
PROXIES
• https://markheath.net/post/static-websites-
azure-blob-storage-functions-proxies
AZURE FUNCTIONS – FONCTIONNALITÉS AVANCÉES
• Durable Functions :
– Fonctions durables
– Une extension d’Azure Functions permettant de gérer les workflows Stateful• Exemple : chainage de fonctions
– https://docs.microsoft.com/fr-fr/azure/azure-functions/durable-functions-overview
AZURE FUNCTIONS – FONCTIONNALITÉS AVANCÉES
• Functions Runtime 2.0 (preview) – https://blogs.msdn.microsoft.com/appserviceteam/2017/09/25/develop
-azure-functions-on-any-platform/
• Functions on Linux (preview) – https://blogs.msdn.microsoft.com/appserviceteam/2017/11/15/functions
-on-linux-preview/
• Functions in IoT Edge (preview) : – https://blogs.msdn.microsoft.com/appserviceteam/2017/11/15/azure-
functions-on-iot-edge/
Azure LOGIC APPS - FONCTIONNALITÉS AVANCÉES
• On-premises Data Gateway avec logic apps (hybrid) – Pour accéder aux données locales, vous pouvez configurer une Data
Gateway pour les connecteurs Azure Logic Apps compatibles :
• BizTalk Server
• DB2
• File System
• Informix
• MQ
• MySQL
• Oracle Database
• SAP Application Server
• SAP Message Server
• SharePoint for HTTP only, not HTTPS
• SQL Server
• Teradata
– https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-gateway-connection
AVANTAGES / INCONVÉNIENTS
Pros- Pas de serveurs à gérer- Évolutivité et flexibilité- Coût plus bas*
- Moins de code
Cons- Pas pour toutes les
applications- Vendor lock-in*- Décentralisation