azure functions
TRANSCRIPT
Microsoft Summit5 y 6 de octubre, 2016
#TechSum
#TechSum
Serverless Backend(No, no es un oxímoron)Eduard Tomàs@eiximenisCoding for beers @ Plain Concepts
#TechSum
1 Juego Deus EX
Cazando a 5 Speakers
1 Curso desarrollo
apps
Cazando a Javier SuárezSO
RTEA
MO
S S
ORT
EAM
OS
SO
RTEA
MO
S SO
RTEA
MO
S
http://bit.ly/plain-go
#TechSum
Serverless Backends
#TechSum
Beer as a Service – on premisePlantar y cosechar grano y lúpulo
Maltear el grano
Macerar el grano en agua caliente
Hervir el mosto
Añadir lúpulos varios
Enfríar el mosto lo más rápido posible
Dry hopping, fermentación y lagering
Priming y enbotellado
Amigos, Diversión y… ¡Cerveza!
Lo haces tu todo. Son tus campos, tus cereales y tu cerveza.
Necesitas multitud de recursos (campos, agua, granjeros,…)
#TechSum
Beer as a Service - IaaSPlantar y cosechar grano y lúpulo
Maltear el grano
Macerar el grano en agua caliente
Hervir el mosto
Añadir lúpulos varios
Enfríar el mosto lo más rápido posible
Dry hopping, fermentación y lagering
Priming y enbotellado
Amigos, Diversión y… ¡Cerveza!
Lo haces todo, except plantar y cosechar el grano.Te ahorras el coste de tener todos los campos y granjeros, pero todo el proceso sigue corriendo de tu parte.
#TechSum
Beer as a Service - SaaSPlantar y cosechar grano y lúpulo
Maltear el grano
Macerar el grano en agua caliente
Hervir el mosto
Añadir lúpulos varios
Enfríar el mosto lo más rápido posible
Dry hopping, fermentación y lagering
Priming y enbotellado
Amigos, Diversión y… ¡Cerveza!
¿Para qué molestarse en hacerlo todo cuando lo único que quieres es… una cerveza?¡Vé al super o a la tienda más cercana, compra cervezas y a disfrutar!
Compras las que quieres y te las tomas cuando quieres.
#TechSum
Beer as a Service – PaaS (aka todo grano) Plantar y cosechar grano y lúpulo
Maltear el grano
Macerar el grano en agua caliente
Hervir el mosto
Añadir lúpulos varios
Enfríar el mosto lo más rápido posible
Dry hopping, fermentación y lagering
Priming y enbotellado
Amigos, Diversión y… ¡Cerveza!
Te encargas de todo el proceso principal del desarrollo de cerveza.Compras los ingredients principales y el grano malteado y ¡a por ello!Puedes comprar las cantidades necesarias, ya fabriques 20L o 5000. Sin problemas.
Eso sí, te tienes que seguir preocupando de todos los detalles técnicos del proceso de elaboración.
#TechSum
Beer as a Service – Starter Kit Plantar y cosechar grano y lúpulo
Maltear el grano
Macerar el grano en agua caliente
Hervir el mosto
Añadir lúpulos varios
Enfríar el mosto lo más rápido posible
Dry hopping, fermentación y lagering
Priming y enbotellado
Amigos, Diversión y… ¡Cerveza!
“Todo grano” te da una gran libertad, pero hay muchos aspectos a controlar.
Es mucho más sencillo pillar un starter kit, rehidratarlo y echarlo a fermentar.
Sigue siendo tu cerveza, pero te despreocupas de aspectos más técnicos como la receta exacta a usar.
#TechSum
Serverless BackendsServerless no significa que no haya servidor
Significa que no debes preocuparte por él.
Un paso más allá de PaaSEl starter kit del backend
#TechSum
Azure Functions
#TechSum
Azure FunctionsAzure Functions es la implementación de Azure del paradigma de serverless backend.
Básicamente: desplegar código y que se ejecute.
Ni más, ni menos.
#TechSum
Azure FunctionsUna Azure Function es un pedazo de código que…
Se ejecuta cuando ocurre un desencadenador (trigger)Tiene unas determinadas entradasGenera unas determinadas salidas
#TechSum
Demo: Cocinando una
Azure Function
Crear la Function App
Elegir la plantilla
Codificar y… ¡ejecutar!
#TechSum
DesencadenadoresLos siguientes son posibles desencadenadores de una Azure Function
Temporizador (cada 5 min, cada Lunes, cada primero de mes, cada martes a las 07:30)Una llamada HTTPUn blob almacenadoUn evento de event hubUn elemento en una cola
#TechSum
EntradasLos siguientes elementos de Azure son posibles entradas
(adicionales a los triggers)
Blob storageTablas de storage o Mobile AppsDocumentDB
#TechSum
SalidasLos siguientes elementos son posibles salidas de Azure Functions
HTTP (solo con desencadenador HTTP)BlobsEventos de Event HubColas y tablas de storage o Mobile AppsDocumentDB
#TechSum
Triggers temporizadoresPermiten ejecutar una función cada cierto tiempoEl tiempo se especifica mediante una expresión cron
La función recibe un parámetro TimerInfo
#TechSum
Triggers HTTPEsto permite ejecutar una función cuando se reciba una petición HTTP
La función recibe una URL y al invocar dicha URL se invoca la funciónAcepta un parámetro HttpResponseMessage
#TechSum
Salidas HTTPSolo está disponible si el trigger es HTTP
Esta salida es un valor de retorno:Task<HttpResponseMessage>
A diferencia del resto de salidas que son parámetros out
#TechSum
Demo: Usando FunctionApps
Crear function apps
Integrar entradas, salidas y triggers
#TechSum
Desarrollo y despliegue
#TechSum
Ubicación Azure FunctionsUna Azure Function se ubica dentro de una WebApp
Dentro del directorio wwwroot/<FunctionName>
Fichero .csxFichero json con la configuración de los
bindings
#TechSum
Ficheros .csxContiene la función Run que es el entry point
Podemos definir clases dentro del propio fichero csxPueden cargarse ficheros .csx adicionales con #load
#load “otroFichero.csx”#load “path\otroFichero.csx”#load “..\shared\otroFichero.csx”
#TechSum
ReferenciasLos siguientes ensamblados están referenciados automáticamente
mscorlib, System, System.CoreSystem.XmlSystem.Net.Http,
System.Net.Http.FormattingSystem.Web.HttpMicrosoft.Azure.WebJobsMicrosoft.Azure.WebJobs.HostMicrosoft.Azure.WebJobs.Extensions
#TechSum
ReferenciasLos siguientes ensamblados son tratados de forma especial y se pueden referenciar directamente usando #r “nombre”
Newtonsoft.JsonMicrosoft.WindowsAzure.StorageMicrosoft.ServiceBusMicrosoft.AspNet.Webhooks.CommonMicrosoft.AspNet.Webhooks.Receivers
#TechSum
ReferenciasPara agregar paquetes NuGet debe subirse un project.json en la carpeta de la función
Usar #r para referenciar los paquetes por su nombre
#TechSum
DespliegueAzure portalKudu
https://<funcapp>.scm.azurewebsites.netFTP (WebApp)CD a través de varios orígenes
Github, BitBucket, VSTSGitDropbox, OneDrive
#TechSum
¿Y los Webjobs?
#TechSum
Azure functions vs WebJobsAzure functions es una evolución de los WebJobs
Comparten muchas cosas en común
De hecho las Azure Functions se ejecutan dentro del contexto de una web app
Aunque eso nos importa (relativamente) pocoLas Azure Functions se ejecutan bajo el Webjob SDK2
#TechSum
Azure functions vs WebJobsAmbos tienen casi las mismas capacidadesExcepto que las Azure Functions pueden ser invocada via HTTPA nivel de triggers, entradas y salidas son muy parecidos
Las Azure Functions proporcionan un nivel de abstracción superior
#TechSum
Gracias!
http://aka.ms/MTS31
© 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.