No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Introducción a la Nube

Curso de Introducción a la Nube

Carlos Andrés Zambrano Barrera

Carlos Andrés Zambrano Barrera

Arquitectura con funciones

26/27
Recursos

Aportes 10

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Cómo sería tener muchos de los servicios en funciones:
DIFERENCIAS:

  • CDN: hay servicios de cdn que pueden tener funciones. Por ejemplo: para cuando venga un requests transformarlo, para hacer un redireccionamiento 301 o 302 (redireccionamiento de dominio temporal o permanente).

  • FUNCIONES del BACKEND: El API recibe el requests y se lo manda alguna FUNCIÓN. Las reglas del API para la designación de los requests a las funciones sería, por ejemplo: Si la API recibe el request con el pass “/saldos”, le va a mandar ese request a la FUNCIÓN saldos. Entonces para el caso de PlatziWallet tendríamos la funciones de: Saldos, Cash-in, Pagos, entre otras.

  • BASE de DATOS: 1) No Relacional: La DB será llave-valor y cada FUNCIÓN actualizará determinada tabla en la DB. 2) Relacional: No todas las BD relacionales son serverless. Cuando tenemos múltiples funciones consumiendo una BD relacional puede ser que la cantidad de conexiones se caiga. Entonces para la DB relacional los CP están sacando un PROXY de BD. Estos servicios se encargan de todas las conexiones entre cada FUNCIÓN y la DB. Van a manejar el borrowing (pedir prestado canales de conexión). También, garantizan que si se cae el DB Master, solo se pierda un paquete para cuando empiece a funcionar la DB Standby.
    Entonces, las ventajas del PROXY son: 1) seguridad: garantiza que la comunicación siempre sea en TLS. 2) gestión de conexiones 3) mejorar el tiempo de un failover ante una caída de una zona, por ejemplo.

  • ORQUESTADOR DE FUNCIONES: se encarga de las relaciones entre funciones. Ejemplo de orquestador: en AWS (step Functions), Apache Airflow se usa como orquestador.

  • ESCALABILIDAD: va a estar dada por los límites de CP. También podemos reservar concurrencia. Por ejemplo: en AWS para todas las funciones la concurrencia es de 1000 ejecuciones por segundo. Entonces en PlatziWallet se puede reservar 200 concurrencias por segundo para las funciones de Pagos y Consulta de Saldo. Es decir 400 concurrencias por segundo para mis funciones más demandadas. Los otros 600 se van a distribuir a medida de que cada uno de los servicios los vaya utilizando.
    Por otro lado también se puede hacer un ticket al CP para subir la concurrencia de 1000 a 2000 por ejemplo.

  • REPO y CICD: hay que ver cómo vamos a desplegar del CICD a la función.

  • VPC: ¿La función va a correr en una VPC o no? Si es en una VPC hay que tener en cuenta la cantidad de direcciones IP disponibles versus la cantidad de ejecuciones que va a tener esa función para garantizar que tenga IP disponibles.

  • COLD START: Si la APP no soporta esos segundos iniciales de las funciones podemos pensar en una arquitectura dividida donde tengamos unos servicios en funciones y otros en contenedores. Pues Kubernetes, por ejemplo, no tiene esos segundos iniciales de demora.

/Cash-in

**Complementando el conocimiento impartirdo por el Carlos Zambrano.** ***Microsoft AZURE:*** ***Orquestadores de Functions:*** **Durable Functions**. Es una extensión de Azure Functions que permite escribir funciones con estado en un entorno sin servidor. se pueden definir WorksFlow complejos que coordinan la ejecución de funciones y otras tareas en una manera confiable y escalable. ### Características: 1. **Orquestación de WorksFlow**: * Permite definir orquestadores que controlan el flujo de trabajo de otras funciones (llamadas "activity functions"). * Define el flujo de trabajo usando una función especial de tipo `orchestrator`. * Usa un lenguaje de programación (como C# o JavaScript) para definir las secuencias y las llamadas a las actividades. * Los orquestadores pueden ejecutar tareas en serie, en paralelo, esperar por eventos externos y más. 2. **Gestión del Estado**: * Las Durable Functions manejan automáticamente la persistencia del estado, lo que permite a las orquestaciones reanudarse desde donde se quedaron en caso de reinicios o fallos. 3. **Patrones de Diseño**: * **Function Chaining**: Ejecuta funciones en una secuencia específica. * **Fan-out/Fan-in**: Ejecuta múltiples funciones en paralelo y luego agrega los resultados. * **Async HTTP APIs**: Usa Durable Functions para gestionar operaciones largas y proporcionar actualizaciones de estado a través de HTTP. * **Monitor**: Implementa una función que monitorea el estado de un recurso y ejecuta una acción cuando se detecta un cambio. * **Human Interaction**: Pausa la ejecución hasta que se recibe una respuesta humana. 4. **Activity Functions**: Realizan tareas específicas y se invocan desde el orquestador. Son funciones sin estado que pueden ser ejecutadas y re-ejecutadas de forma independiente **5. ient Function**: Inicia las orquestaciones y puede interactuar con ellas. Puede ser desencadenada por HTTP, colas, timers, etc.
### Descripción General de la Arquitectura Serverless Basada en Funciones En una arquitectura serverless, el código se ejecuta en respuesta a eventos y cada unidad de ejecución es una función autónoma. No hay necesidad de gestionar servidores o infraestructura. Las funciones son desplegadas y ejecutadas por un proveedor de nube, y se escalan automáticamente en función de la demanda.

ojo que ya no se usa SLAVE jajaja :v

De acuerdo a los modelos de responsabilidad compartida de los proveedores de servicios de Cloud al utilizar funciones, ¿qué es responsabilidad del usuario? Proveer el código de la función para ejecutarse y configurar las características de la función
**Complementando el conocimiento impartirdo por el Carlos Zambrano.** ***Microsoft AZURE:*** ***Proxy de Bases de datos:*** **Azure SQL Database Managed Instance** Es un servicio que proporciona compatibilidad casi total con SQL Server y ofrece las ventajas de una plataforma como servicio (PaaS), como administración automática, escalabilidad y alta disponibilidad. Managed Instance es ideal para migrar aplicaciones existentes que requieren características específicas de SQL Server. 1. **Azure SQL Database Gateway**: * **Connection Routing**: El gateway actúa como un proxy que enruta las conexiones entrantes a las bases de datos correctas. Esto permite que las conexiones a las bases de datos sean gestionadas eficientemente y proporciona balanceo de carga. * **High Availability**: Asegura que las conexiones se redirigen automáticamente a las réplicas secundarias en caso de fallas, proporcionando alta disponibilidad y recuperación ante desastres. 2. **Azure SQL Database Elastic Pool**: * Permite que varias bases de datos compartan recursos como CPU y memoria, mejorando la utilización y reduciendo los costos. Elastic Pools son ideales para aplicaciones con patrones de uso variables. 3. **Serverless and Hyperscale Tiers**: * **Serverless**: Elimina la necesidad de gestionar la infraestructura, ajustando automáticamente los recursos según la demanda. * **Hyperscale**: Permite escalar de manera masiva tanto el almacenamiento como el rendimiento, adecuado para aplicaciones con grandes volúmenes de datos. 4. **SQL Database Connectivity Features**: * **Proxy vs. Redirect Mode**: En el modo proxy, todo el tráfico pasa a través del gateway, mientras que en el modo redirect, el tráfico se redirige directamente al nodo de base de datos correcto después de la autenticación inicial, reduciendo la latencia. ### **VENTAJAS**: * **Escalabilidad Automática**: Ajusta automáticamente los recursos según la demanda. * **Alta Disponibilidad**: Redirige automáticamente las conexiones a réplicas secundarias en caso de fallos. * **Seguridad**: Ofrece autenticación segura y capacidades de cifrado para proteger los datos. * **Gestión Simplificada**: Elimina la necesidad de administrar la infraestructura subyacente, permitiendo a los desarrolladores centrarse en la lógica de la aplicación
Buena explicación
![](https://static.platzi.com/media/user_upload/image-8b486c62-4e64-456c-88c6-be6ec4f52205.jpg) Aplicación web de comercio electrónico que se despliega utilizando contenedores y Kubernetes. Los componentes de la aplicación incluyen: * **Front-end** : Desarrollado con React y empaquetado en un contenedor Docker. * **Back-end** : Desarrollado con Node.js, también empaquetado en un contenedor Docker. * **Base de datos** : MySQL, ejecutándose en un contenedor Docker y utilizando volúmenes persistentes para almacenamiento de datos. * **Redis** : Utilizado para almacenamiento en caché, ejecutándose en un contenedor Docker. La orquestación con Kubernetes incluye: * **Espacio de nombres** : comercio electrónico. * **Implementaciones** : implementación frontend, implementación backend, implementación mysql, implementación redis. * **Servicios** : servicio frontend, servicio backend, servicio mysql, servicio redis. El pipeline de CI/CD incluye: * **Build** : Construcción de imágenes Docker para front-end y back-end usando Jenkins. * **Test** : Ejecución de pruebas unitarias y de integración. * **Deploy** : Despliegue de nuevas imágenes en el clúster de Kubernetes. #### Beneficios de la Arquitectura Basada en Contenedores * **Portabilidad** : Los contenedores aseguran que la aplicación funcionará de manera consistente en diferentes entornos. * **Escalabilidad** : Kubernetes permite escalar aplicaciones automáticamente aumentando en la demanda. * **Resiliencia** : Kubernetes gestiona la alta disponibilidad y tolerancia a fallos, reiniciando contenedores caídos y distribuyendo la carga. * **Despliegue Continuo** : Integración y despliegue continuo facilitan la entrega rápida y segura de nuevas características y correcciones de errores. * **Eficiencia** : Los contenedores son ligeros y usan menos recursos en comparación con máquinas virtuales tradicionales.