Azure functions

34
Microsoft Summit 5 y 6 de octubre, 2016 #TechSum

Transcript of Azure functions

Page 1: Azure functions

Microsoft Summit5 y 6 de octubre, 2016

#TechSum

Page 2: Azure functions

#TechSum

Serverless Backend(No, no es un oxímoron)Eduard Tomàs@eiximenisCoding for beers @ Plain Concepts

Page 3: Azure functions

#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

Page 4: Azure functions

#TechSum

http://promos.campusmvp.com/netcore/

Page 5: Azure functions

#TechSum

Serverless Backends

Page 6: Azure functions

#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,…)

Page 7: Azure functions

#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.

Page 8: Azure functions

#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.

Page 9: Azure functions

#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.

Page 10: Azure functions

#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.

Page 11: Azure functions

#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

Page 12: Azure functions

#TechSum

Azure Functions

Page 13: 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.

Page 14: Azure functions

#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

Page 15: Azure functions

#TechSum

Demo: Cocinando una

Azure Function

Crear la Function App

Elegir la plantilla

Codificar y… ¡ejecutar!

Page 16: Azure functions

#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

Page 17: Azure functions

#TechSum

EntradasLos siguientes elementos de Azure son posibles entradas

(adicionales a los triggers)

Blob storageTablas de storage o Mobile AppsDocumentDB

Page 18: Azure functions

#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

Page 19: Azure functions

#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

Page 20: Azure functions

#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

Page 21: Azure functions

#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

Page 22: Azure functions

#TechSum

Demo: Usando FunctionApps

Crear function apps

Integrar entradas, salidas y triggers

Page 23: Azure functions

#TechSum

Desarrollo y despliegue

Page 24: Azure functions

#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

Page 25: Azure functions

#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”

Page 26: Azure functions

#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

Page 27: Azure functions

#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

Page 28: Azure functions

#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

Page 29: Azure functions

#TechSum

DespliegueAzure portalKudu

https://<funcapp>.scm.azurewebsites.netFTP (WebApp)CD a través de varios orígenes

Github, BitBucket, VSTSGitDropbox, OneDrive

Page 30: Azure functions

#TechSum

¿Y los Webjobs?

Page 31: Azure functions

#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

Page 32: Azure functions

#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

Page 33: Azure functions

#TechSum

Gracias!

http://aka.ms/MTS31 

Page 34: Azure functions

© 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.