Guillermo BellmannMicrosoft Azure MVPCloud architect - Nubimetrics@gjbellmann
Introducción a Azure App ServiceMUG Buenos Aires
Tipos de nubePrivada
(On-Premise)Infrastructu
reas a Service
Platformas a Service
Storage
HW del Server
Networking
Servers
Bases de datos
Virtualización
Runtimes
Aplicaciones
Seguridad e Integración
Storage
HW del Server
Networking
Servers
Bases de datos
Virtualización
Runtimes
Aplicaciones
Seguridad e Integración
Storage
HW del Server
Networking
Servers
Bases de datos
Virtualización
Runtimes
Aplicaciones
Seguridad e Integración
Noso
tros
Proveedor
Proveedor
Noso
tros
Noso
tros
Softwareas a Service
Storage
HW del Server
Networking
Servers
Bases de datos
Virtualización
Runtimes
Aplicaciones
Seguridad e Integración
Proveedor
API APPSConstruye y consume fácilmente APIs en la
nube
WEB APPSAplicaciones Web que escalan con nuestro
negocio
LOGIC APPSAutomatiza procesos de negocio contra SaaS y
on-premises
MOBILE APPSConstruye aplicaciones móviles para cualquier
dispositivo
Azure App Service
WEB APPS
Funcionalidades disponibles:• .NET, Node.js, Java, PHP, y Python
• WebJobs para tareas de larga duración
• Publicación desde VS integrada, debug remoto
• CI con GitHub, BitBucket, VSTS
• Auto-load balance, Autoescalado, Geo DR
• Virtual networking y conexiones híbridas
• Slots para deploymentes de staging
Aplicaciones web corren como estánsin necesidad de cambios
Nuevas características para Mobile apps:
• WebJobs para tareas de larga duración
• CI con GitHub, BitBucket, VSAuto-load balance, Autoescalado, Geo DR
• Virtual networking y conexiones híbridas
• Slots para deploymentes de staging
Mobile services con mucho más
MOBILE APPS
Logic Apps para automatización simplificada
• Diseñador sin código para creación rápida
• Docenas de templates pre-armados para arrancar
• Soporte Out of the boxpara aplicaciones SaaS y on-premises populares
• Uso con API Apps custom creadas por nosotros
• Biztalk APIs para escenarios de integración expertos
Automatiza sistemas SaaS y on-premises
LOGIC APPS
Easily use cloud or custom APIs:• Dozens of built-in APIs for popular
SaaS
• An ecosystem of APIs for any need
• Create and publish custom, reusable APIs
• Visual Studio tooling with one click publish and remote debugging
• Automatic client SDK generation for many languages
Crea, consume y hosteaAPIs más fácilmente
API APPS
Planes y característicasFree Shared Basic Standard Premium
Cuando usarlo
Spikes, pruebas de concepto
dev - test con SSL
Producción con bajo tráfico y poca carga
Producción con autoescalado y manejo de tráfico avanzado
ProducciónMás avanzado – Conectores Biztalk, etc
# cores Compartidos, 60 mins CPU por día
Compartidos, 240 mins CPU por día
1-4 1-4 1-8
RAM 1GB 0,5GB 1.75-7GB 1.75-7GB 1.75-14GB
SLA 99.95% 99.95% 99.95%Dominio custom & certificados
no si si si si
Profiling remoto
no no no si si
Web Apps
Continuous Deployment para Web Apps
Web App Production
Slot
Repositorio de código
Web App Staging Slot
Commit
Agilidad a través de Continuous Deployment
Auto-Swap
de los cambios
Hooks
Git pull
Developer
Microsoft AzureLoad Balancer
Runtime Database
Application Database
API Endpoint
Frontend (IIS ARR)
Publish Endpoint Blob StorageFile Server
Metering
DeploymentServer(s)
Arquitectura de una Web App
• 3 tipos de logs:• Detailed Error Logging• Failed Request Tracing • Web Server Logging (W3C extended log format)
• Se puede hacer el log en el sistema de archivos (rolling files), table storage o • blob storage• Cuando se habilita el log de la aplicación, queda encendido por 12 horas
Log Streaming
• Open source .NET Foundation https://github.com/projectkudu/kudu• Encargado de los deployments en App Services• También puede correr fuera de Azure• Deploys desde Git• Build steps configurables• Sitio y utilidades de Kudu “secretas”
Kudu & Site Extensions
WebJobs
Tareas livianas con alto uso de CPUrun.cmd, run.bat run.exe run.ps1 run.sh run.php run.py run.js
BlobTrigger, TableTrigger, QueueTrigger, ServicebusTrigger
Escala: Singleton, Multi-instanciaTipo de
job: On-Demand, Scheduled, Continuous
Características del SDK de WebJobs:
Deployment: Portal, Visual Studio, CLI, Git
WebJobs
Web App
WebJobs
Web App
API Apps
Beneficios de las API Apps• Trae tu API como está• .NET Web API / Node.js + Express• Java / PHP y muchos más
• Control de Acceso Simple – no hay que cambiar el código para habilitar la autenticación que viene incorporada
• Integración con Visual Studio• Integración con Logic Apps• Administración central de CORS
API Apps tiene en cuenta los mayores problemas al construir y consumir APIs
Consume APIsAuthentication, built-in to mobile
and web SDKs
SSO, manejado por el
serverGeneración de
SDKsDescubrimiento de
APIsGalería – pública &
organizacional
Construye tu APIWeb Apps++: Trae tu API como está,
en tu lenguaje preferido
Control de acceso simple SSO Contrato de
metadataEstilo de
MicroserviciosExpone APIs enterprise
20
Consumiendo API Apps
• API Apps expone servicios HTTP• La Metadata se expone usando
Swagger 2.0 metadata• Archivo JSON• Ampliamente soportado
• Aplicaciones cliente
Logic Apps
Integración de SaaS
• Box• Chatter• Delay• Dropbox• Azure HD Insight• Marketo• Azure Media Services• OneDrive• SharePoint • SQL Server• Office 365• Oracle
• QuickBooks• SalesForce• Sugar CRM • SAP• Azure Service Bus• Azure Storage• Timer / Recurrence• Twilio• Twitter• IBM DB2 • Informix• Websphere MQ
• Azure Web Jobs• Yammer• Dynamics CRM• Dynamics AX• Hybrid Connectivity
• HTTP, HTTPS • File• Flat File• FTP, SFTP• POP3/IMAP• SMTP• SOAP + WCF
• Batching / Debatching
• Validate• Extract (XPath)• Transform
(+Mapper)• Convert (XML-JSON)
• Convert (XML-FF)• X12• EDIFACT• AS2• TPMOM• Rules Engine
Conectores
Protocolos BizTalk Services
Conectores a APIs Built-in
Mobile Apps
Azure Mobile ServicesStorage
Autenticación
Lógica
Push
Scheduler
Almacenamiento estructurado• Powered by SQL Database• Soporta queries ricas• Esquema dinámico• Administración de los datos en:• Azure Portal• SQL Portal (Silverlight)• SQL Management Studio• REST API• Azure CLI Tools• SQL CLI
Scripts en Tablas del lado del servidor
Scripts Node.js
Intercepta requests CRUD a las tablas
Pasa a SQL por default
Totalmente customizable
Backend .NET Web API
en Visual Studio
MongoDB, Table Storage, SQL out of
the box
Custom API• Endpoints no basados en tablas• Accesibles desde• GET• POST• PUT• PATCH• DELETE
• Para lógica node.js en scripts como los endpoints de tablas
• Para .NET entregado a través de una WebAPI • Expone cualquier funcionalidad que quieras
Azure Functions
Azure Functions• Ejecución de código basado en eventos• Serverless• C#, JavaScript, F#, Python, PHP, Java, Bash,
Batch, PS• Basado en el SDK de WebJobs
Triggers y bindings
Librerías ya incluidas• mscorlib• System• System.Core• System.Xml• System.Net.Http• Microsoft.Azure.WebJobs• Microsoft.Azure.WebJobs.Host• Microsoft.Azure.WebJobs.Extensions• System.Web.Http• System.Net.Http.Formatting
Librerías ya incluidas• Newtonsoft.Json• Microsoft.WindowsAzure.Storage• Microsoft.ServiceBus• Microsoft.AspNet.WebHooks.Receivers• Microsoft.AspNet.WebHooks.Common
Estructura de carpetas
Nuestra función: run.csxusing System;
public static void Run(TimerInfo myTimer, TraceWriter log){ log.Info($"Función con trigger por timer ejecutada el {DateTime.Now}");}
Application Insights
Application Insights
Mejores Prácticas
Mejores prácticas• Autoescalado encendido & Sticky sessions apagado• Hacer back up de la base de datos• Hacer test de carga antes de poner en producción• Configurar el failover automático con Azure Global Traffic
Manager• Automatizar los deploys usando los slots• Testear el site recovery• Usar Azure Rersource Groups• Setear alertas de billing• Bundling & minificación de recursos web• Usar Azure CDN para los archivos estáticos• Implementar las políticas de retry adecuadas para la BD
¿Preguntas?
Guillermo BellmannMicrosoft Azure MVPCloud architect - Nubimetrics@gjbellmann
¡Gracias!