Azure Functions

0
5 1 voto
Valora la Publicación

Azure Functions es una opción de proceso sin servidor controlada por eventos que no necesita el mantenimiento de máquinas virtuales ni contenedores. Si compilas una aplicación mediante máquinas virtuales o contenedores, esos recursos deben “ejecutarse” para que la aplicación funcione. Con Azure Functions, un evento activa la función, lo que reduce la necesidad de mantener los recursos aprovisionados cuando no hay ningún evento.

Conceptos de “Serverless”

Informática “sin servidor”, conocido como “Serverless”, es un modelo de ejecución de informática en la nube en el que el proveedor de los servicios en la nube destina a demanda recursos de hardware (ya sea físico o virtual), cuidando de los servidores por sus clientes.

Si bien el nombre puede hacer pensar que “no hay servidores”, en realidad si los hay, aunque es el proveedor de servicios quien se encarga de mantenerlos y escalarlos en el caso que se necesite.

Características de Serverless

Algunas características de Serverless:

  • Es una solución donde no tienes costo si nadie ejecuta tu código.
  • Son servicios gestionados que pueden escalar a cero.
  • Es un entorno de ejecución de código sin estado, basado en utilidades, impulsado por eventos en el que se escribe código (a veces) y se consumen servicios.

¿Qué deberías hacer en Serverless?

Estos son los puntos claves que deberías hacer en Serverless:

  • Escribir poco o casi nulo código.
  • Definir disparadores que generarán eventos desesncadenados.
  • Conectar servicios administrados para aprovechar al máximo este paradigma.
  • Pagar por el consumo de cada elemento, y no por su pre-alocación.

¿Qué no deberías hacer en Serverless?

Debemos tener en claro que hay cosas que NO deberías hacer con serverless:

  • Pre-aprovisionar infraestructura, que luego no se utilice.
  • Parchear la infraestructura: esto es responsabilidad del proveedor de servicios.
  • Definir políticas de escalamiento: dado que de eso se encarga el proveedor.
  • Almacenar estado en el cómputo: las aplicaciones serverless son stateless.

¿Qué es Azure Functions?

Azure Functions permite ejecutar pequeños fragmentos de código (denominados “funciones”) sin preocuparse por el resto de la infraestructura de la aplicación.

Es ideal para tareas específicas, dado que simplifica la necesidad de generar código reduciéndolo sólo a la parte “lógica” que necesitamos.

Azure Functions forma parte del paradigma “Funciones como Servicio” o FaaS (Functions as a Service).

Ejemplo con Azure Functions

Para entender mejor esto, vamos a poner un ejemplo. Imaginemos que necesitamos generar una tarea donde, cada vez que se escribe un nuevo archivo en un Storage Account de Azure, se dispare una función que guarde en una base de datos registro de dicho archivo. Si pensamos en hacer esto desde cero, probablemente nos requiera:

  • Generar un proyecto con un IDE y un Framework / Lenguaje específico.
  • Construir un servicio y alojarlo en algún lugar.
  • Resolver otros aspectos propios del proyecto, donde alojarlo, cómo hacer que se dispare cuando se graba un archivo nuevo en el Storage Account, etc.

Azure Functions es ideal para resolverlo, dado que:

  • Tenemos desencadenadores, que son eventos que sirven para disparar una acción.
  • Sólo debemos construir las piezas de código, en nuestro lenguaje favorito, que hagan la acción lógica que estamos buscando (en este caso, tomar el nombre del archivo y grabar esos datos en una base de datos).
  • Contamos con enlaces, que facilitan conectarnos con / hacia diversos servicios sin tener que codificar dicha conexión.
  • No nos tenemos que preocupar por dónde alojarlo ni cómo escalarlo: de esto se ocupa Functions.

Características de Azure Functions

Algunas características clave de Azure Functions son las siguientes:

  • Severless: Functions permite desarrollar aplicaciones sin preocuparnos por cuánto hardware debemos incluir en la misma. Si necesitamos ejecutar más cantidad de veces nuestras funciones, simplemente lo hacemos.
  • Soporte a múltiples lenguajes de programación: podemos escribir funciones en C#, Java, JavaScript, Python y PowerShell.
  • Nuestras propias dependencias: Si bien no tenemos que dar de alta toda la infraestructura de un proyecto (por ejemplo .NET), con Functions y VStudio podemos utilizar NuGet y NPM para tener acceso a nuestras bibliotecas favoritas.
  • Seguridad integrada: Podemos proteger nuestras funciones con los proveedores de OAuth de preferencia.
  • Integración simplificada: integración sencilla con los servicios de Azure y ofertas de software como servicio (SaaS) varias.
  • Integración Continua: Para implementar el código mediante GitHub, Azure DevOps Services y otras herramientas de desarrollo compatibles.
  • Serverless con mantenimiento de estado: posibilidad de utilizar Durable Functions.
  • Open Source: El entorno de ejecución de Functions es de código abierto y está disponible en GitHub.

Desencadenadores y Enlaces en Azure Functions

Desencadenadores (Triggers)

Los desencadenadores son lo que provocan que una función se ejecute. Un desencadenador define cómo se invoca una función y cada función debe tener exactamente un desencadenador. Los desencadenadores tienen datos asociados, que a menudo son la carga de la función.

Microsoft mantiene actualizados desencadenadores que podrán ser utilizados en nuestras funciones. Para ver una lista actualizada, podrás visitar la siguiente página.

Enlaces (Bindings)

El enlace a una función es una manera de conectar otro recurso a la función mediante declaración. Los enlaces pueden estar conectados como enlaces de entrada, enlaces de salida o ambos. Los datos de los enlaces se proporcionan a la función como parámetros.

Microsoft mantiene actualizados enlace sque podrán ser utilizados en nuestras funciones. Para ver una lista actualizada, podrás visitar la siguiente página.

Ventajas de Azure Functions

El uso de Azure Functions es idóneo si solo le interesa el código que ejecuta el servicio y no la infraestructura o la plataforma subyacente. Las funciones se usan normalmente cuando se debe realizar un trabajo en respuesta a un evento (a menudo a través de una solicitud REST), un temporizador o un mensaje de otro servicio de Azure, y cuando ese trabajo puede completarse rápidamente, en segundos o en menos tiempo.

Vamos a explorar 3 casos de uso donde explicaremos cuáles son los desencadenadores, cuál es el enlace de entrada y cuál es el enlace de salida:

Es importante resaltar que los desencadenadores y enlaces evitan codificar el acceso a otros servicios.

Conclusiones

  • Serverless es un modelo de ejecución de computación en la nube en el que el proveedor de los servicios en la nube destina a demanda recursos de hardware (ya sea físico o virtual), cuidando de los servidores por sus clientes.
  • Azure Functions forma parte del paradigma “Funciones como Servicio” (FaaS) dentro de la oferta Serverless de Azure:
    • Permite focalizarnos en el código y la lógica de negocios necesaria, y no en crear toda una aplicación y su entorno.
    • Ejecuta el código cuando se desencadena y desasigna recursos automáticamente cuando la función finaliza.
    • Escala automáticamente según la demanda, por lo que es una opción correcta cuando la demanda es variable.
    • En este modelo, solo se le cobrará por el tiempo de CPU usado mientras se ejecuta la función.
  • Las funciones son un componente clave de la informática sin servidor. También son una plataforma de proceso general para ejecutar cualquier tipo de código. Si cambian las necesidades de la aplicación del desarrollador, se puede implementar el proyecto en un entorno que no sea sin servidor.

Próximos pasos

Vamos a ejercitar un poco los conceptos vistos creando una aplicación muy simple con Azure Functions.

5 1 voto
Valora la Publicación
Suscribirse
Notificarme de
guest
4 Comentarios
Viejos
Nuevos Más votados
Feedback entre líneas
Ver todos los Comentarios

morenoubeda
morenoubeda(@morenoubeda)
Miembro
Miembro
1 año atrás

Buenas noches, una sugerencia, corregir “Soporte a múltiples idiomas” con soporte a multiples lenguages, ya que se hace referencia a lenguajes de programación no lenguas como tal.

marozzir
marozzir(@marozzir)
Miembro
Miembro
11 meses atrás

Buenas, los servicios tanto como App functions o App services, estarían enmarcados dentro de PaaS?

  • Programa del Curso

  • Uso de IA

    Este es el uso semanal que le has dado al copiloto con IA de este curso:

    0%
  • 4
    0
    Nos encantaría conocer tu opinión: ¡comenta!x
    Ir a la barra de herramientas