Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Serverless with Azure Functions and CosmosDb

62 views

Published on

Slides of my Talk in the "Global Azure Bootcamp" (Barcelona 2018) about Serverless, Azure functions, CosmosDb and ACI

Published in: Software
  • Login to see the comments

  • Be the first to like this

Serverless with Azure Functions and CosmosDb

  1. 1. #GlobalAzure @CAT_zure Serverless con CosmosDb y AF Eduard Tomàs
  2. 2. Local Sponsors #GlobalAzure
  3. 3. Global sponsors #GlobalAzure
  4. 4. #GlobalAzure
  5. 5. #GlobalAzure
  6. 6. #GlobalAzure El reto
  7. 7. #GlobalAzure El equipo
  8. 8. #GlobalAzure ■ John “CosmosDb” Smith ■ AF Baracus ■ Templeton Peck BusMan ■ Howling ACI Murdock El equipo “A”
  9. 9. #GlobalAzure
  10. 10. #GlobalAzure ■ Recojer datos de las cervecerías asociadas ■ Importación de ficheros CSV ■Ejemplo: OpenBeerDb Objetivo
  11. 11. #GlobalAzure Arquitectura
  12. 12. #GlobalAzure ■ Modelo Serverless para código ■ Despliegas código, nada de infraestructura ■ Soporte para varios lenguajes Azure Functions
  13. 13. #GlobalAzure ■ Escala según demanda ■ Pagamos por uso (invocación) ■ Integración con recursos de Azure ■ Triggers ■ Entradas ■ Salidas Azure Functions
  14. 14. #GlobalAzure ■ Triggers: Disparadores que causan la ejecución ■ Petición http, tiempo, nuevo mensaje en ServiceBus, nuevo blob, … ■ Entradas: Parámetros de la función rellenados a partir de recursos de Azure ■ Documento en CosmosDb, blob en Storage, … ■ Salidas: Elementos que la función envía a recursos de Azure ■ Guardar documento en CosmosDb, crear blob, … Azure Functions
  15. 15. #GlobalAzure ■ V1 está actualmente en GA ■ V2 está en preview ■ C#, JavaScript, F# soportados en ambas ■ V2 soporta Java ■ V1 soporta (de forma “experimental”) muchos otros lenguajes ■ Pyhton, PHP, bash, PS V1 vs v2
  16. 16. #GlobalAzure ■ Base de datos serverless distribuída ■Multimodelo y multi-api ■ Grafos, clave-valor, column family y documental ■ SQL, Gremlin, MongoDb, Cassandra, Table Storage CosmosDb
  17. 17. #GlobalAzure
  18. 18. #GlobalAzure ■ Usuarios pueden hacer check-ins de cervezas ■ Usuarios pueden hacer brindis de otros check-ins ■ Queremos consultas avanzadas tipo: ■ ¿Cuales son los estilos de los check-ins con más brindis de los amigos de mis amigos? ■ ¿Qué estilos de cerveza, que yo me haya bebido, tienen check-ins son puntuados más alto por mis amigos? Objetivo
  19. 19. #GlobalAzure Arquitectura http
  20. 20. #GlobalAzure ■ Uso de grafos para consultas avanzadas ■ Requiere guardar la información en un formato específico ■ Uso de gremlin API para consultar los datos CosmosDb - Grafos
  21. 21. #GlobalAzure Grafo User User Brindis Beer drink Check-ins
  22. 22. #GlobalAzure ■ Solo usuarios y relaciones friends_of Ejemplo de grafo inicial
  23. 23. #GlobalAzure ■ Un usuario puede hacer un check-in para indicar que se ha bebido una cerveza ■ Una AF procesa la petición (id usuario, id cerveza) ■ Recoje datos de la cerveza de CosmosDB ■ Crea objeto checkin con datos cerveza ■ Envía petición “crear check-in” por Service Bus ■ Una AF recoje la petición “crear check-in” ■ Añade el check-in al grafo Check-in
  24. 24. #GlobalAzure ■ Un usuario puede hacer un toast sobre un check-in para indicar que “brinda“ con el usuario ■ Una AF procesa la petición y añade directamente el objeto al grafo: ■ Objeto brindis ■ Relaciones entre este y los objetos usuario y checkin Toast
  25. 25. #GlobalAzure ■Centrado en el usuario alice Ejemplo de grafo final ■ Contiene check-ins ■ Contiene toasts
  26. 26. #GlobalAzure ■ Usuario alice ■ g.V().hasLabel(‘user’).has(‘name’, ‘alice’) ■ Checkins de alice ■ g.V().hasLabel(‘user’).has(‘name’,’alice’).outE(‘checkins’).inV() ■ Checkins a los que alice ha hecho toast ■g.V().hasLabel('user').has('name','alice').outE('toasts').inV().outE('with').inV() Ejemplos de consultar el grafo
  27. 27. #GlobalAzure
  28. 28. #GlobalAzure ■Modelo serverless para contenedores ■Despliegas contenedores ■ Útil para mezclar contenedores en escenarios FaaS ■Posible integración con k8s usando virtual kubelet ACI – Azure Container Instances
  29. 29. Local Sponsors #GlobalAzure
  30. 30. Thanks! #GlobalAzure

×