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

Ejemplo de una arquitectura serverless

16/27
Recursos

Aportes 8

Preguntas 0

Ordenar por:

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

Resumen del libro:
El libro “Aprendizaje sin servidor: diseño, desarrollo e implementación con confianza” de Jason Katzer es una guía práctica para crear aplicaciones sin servidor. El libro cubre los conceptos básicos de la computación sin servidor, así como temas más avanzados como la seguridad, la supervisión y el registro.

El libro se divide en tres partes:

  1. El camino a la producción cubre los conceptos básicos de la computación sin servidor, incluidos los diferentes tipos de servicios sin servidor, cómo elegir el servicio adecuado para sus necesidades y cómo diseñar y desarrollar aplicaciones sin servidor.
  2. Las herramientas cubre las herramientas que necesita para crear y implementar aplicaciones sin servidor, como proveedores de nube, lenguajes de programación y marcos.
  3. Conceptos cubre temas más avanzados relacionados con la computación sin servidor, como la seguridad, la supervisión y el registro.

El libro también incluye una serie de ejercicios prácticos que puede usar para aprender los conceptos y crear sus propias aplicaciones sin servidor.

Aquí hay algunas de las conclusiones clave del libro:

  • La computación sin servidor es un modelo de computación en la nube en el que el proveedor de nube se ocupa de la infraestructura, por lo que no tiene que preocuparse por aprovisionar, administrar o escalar servidores.

  • Hay muchos tipos diferentes de servicios sin servidor disponibles, cada uno con sus propias fortalezas y debilidades.

  • Al elegir un servicio sin servidor, debe considerar sus necesidades específicas, como el tipo de aplicación que está creando, la cantidad de tráfico que espera y su presupuesto.

  • Las aplicaciones sin servidor se pueden desarrollar utilizando una variedad de lenguajes de programación y marcos.

  • Hay una serie de herramientas disponibles para ayudar a crear y implementar aplicaciones sin servidor.

  • La seguridad es una consideración importante al crear aplicaciones sin servidor.

  • Es importante supervisar sus aplicaciones sin servidor para garantizar que estén funcionando según lo esperado.

  • El registro es importante para solucionar problemas y comprender cómo se utilizan sus aplicaciones sin servidor.

Si está interesado en aprender más sobre la computación sin servidor, recomiendo encarecidamente leer este libro. Es una guía completa y práctica que lo ayudará a comenzar con la computación sin servidor y crear sus propias aplicaciones sin servidor.

En este ejemplo, tenemos una billetera virtual. Un usuario conectado a Internet accede a su cuenta, se loguea y consulta la información de su saldo. Esta petición llega al API Gateway, el cual la procesa y se la pasa a la función serverless. Esta función va a recibir el ID del usuario y, en base a eso, buscará la información de la cuenta asociada a ese ID en el datastore. Luego, le devolverá la respuesta al usuario. En este ejemplo, todo se hace de forma síncrona.
También, en este ejemplo, se pueden mencionar algunas tecnologías serverless que se podrían usar. Para el API Gateway, se podría usar AWS API Gateway. Para ejecutar la función con toda su lógica, se podría usar AWS Lambda o AWS Fargate. Y para el datastore, se podría usar Amazon DynamoDB.

Libro : (Learning Serverless). Aprendizaje sin servidor: diseño, desarrollo e implementación con confianza.

Ya sea que su empresa esté considerando la computación sin servidor o ya haya tomado la decisión de adoptar este modelo, este libro práctico es para usted. El autor Jason Katzer muestra a los desarrolladores principiantes y de mitad de carrera lo que se requiere para crear y enviar servicios escalables y mantenibles utilizando este modelo.

Con este libro, aprenderá cómo construir un sistema de producción moderno en la nube, visto a través de la lente de la computación sin servidor. Descubrirá cómo la tecnología sin servidor puede liberarlo de la tediosa tarea de configurar y mantener sistemas en producción. También explorará nuevas formas de subir de nivel en su carrera y diseñar, desarrollar e implementar con confianza.

En tres partes, este libro incluye:

El camino hacia la producción: examine los entresijos de los sistemas distribuidos, los microservicios, las interfaces y la arquitectura y los patrones sin servidor
Las herramientas: sumérjase en el monitoreo, la observabilidad y las alertas, el registro, las canalizaciones, la automatización y la implementación
Conceptos: aprenda a diseñar la seguridad y la privacidad, cómo administrar la calidad a través de pruebas y etapas, y cómo planificar para fallas

Como que se congela al iniciar el video por pocos segundos la imagen (no es mi servicio de internet)

Aplicación de Procesamiento de Formularios Imagina que desarrollamos una aplicación serverless para procesar formularios enviados por los usuarios. La arquitectura incluye los siguientes componentes: 1\. \*\*API Gateway\*\*: Los usuarios envían datos a través de un formulario en una página web. El formulario se envía como una solicitud HTTP a una API RESTful gestionada por \*\*Amazon API Gateway\*\*. Esta pasarela actúa como el punto de entrada y desencadena una función serverless. 2\. \*\*AWS Lambda (FaaS)\*\*: Una función \*\*AWS Lambda\*\* es invocada automáticamente por el API Gateway. Esta función valida los datos del formulario, realiza transformaciones necesarias (como convertir texto a mayúsculas o calcular valores) y luego guarda los resultados en una base de datos. 3\. \*\*Base de Datos Serverless\*\*: Los datos procesados se almacenan en \*\*Amazon DynamoDB\*\*, una base de datos NoSQL serverless que escala automáticamente según la carga. Esto elimina la necesidad de administrar servidores de bases de datos. 4\. \*\*Eventos y Notificaciones\*\*: Cuando se guarda un nuevo registro en DynamoDB, este evento dispara otra función Lambda que envía una notificación al usuario vía correo electrónico utilizando \*\*Amazon Simple Email Service (SES)\*\*. 5\. \*\*Almacenamiento de Archivos (Opcional)\*\*: Si el formulario incluye archivos adjuntos (como imágenes o documentos), estos se cargan directamente en \*\*Amazon S3\*\*. Una función Lambda puede procesar estos archivos (por ejemplo, redimensionar imágenes) y almacenar los resultados en otro bucket de S3. 6\. \*\*Monitoreo y Logs\*\*: Toda la actividad de la aplicación se monitorea con \*\*AWS CloudWatch\*\*, que recopila logs y métricas para detectar errores o problemas de rendimiento. \--- \### \*\*Flujo de Trabajo\*\* 1\. Un usuario envía un formulario desde una página web. 2\. El API Gateway recibe la solicitud y activa una función Lambda. 3\. La función Lambda procesa los datos y los guarda en DynamoDB. 4\. Si hay archivos adjuntos, se almacenan en S3 y se procesan con otra función Lambda. 5\. Una vez completado el procesamiento, se envía una notificación al usuario mediante SES.
los patrones y arquitecturas más comunes que utilizan componentes serverless: 1\. Patrón de Backend para Frontend (BFF) Descripción: Diseña APIs específicas para cada frontend (web, móvil, IoT, etc.). Componentes serverless: AWS Lambda o Google Cloud Functions para ejecutar lógica backend específica. API Gateway o Firebase Hosting para exponer las APIs al cliente. Caso de uso: Aplicaciones con múltiples interfaces de usuario con necesidades específicas. 2\. Patrón EventDriven Descripción: Diseñado alrededor de eventos; las funciones serverless reaccionan ante eventos desencadenados por otros servicios. Componentes serverless: AWS EventBridge o Google Pub/Sub para gestionar eventos. AWS Lambda, Azure Functions o Cloud Functions para manejar los eventos. S3, Blob Storage para el almacenamiento de los datos procesados. Caso de uso: Procesamiento en tiempo real, ETL, pipelines de datos. 3\. Patrón de Procesamiento por Lotes Descripción: Automatiza el procesamiento de grandes cantidades de datos en intervalos regulares. Componentes serverless: Step Functions (AWS) o Workflows (GCP) para orquestar procesos. Cloud Functions para procesar los datos. S3, BigQuery o Dataflow para almacenar y analizar datos. Caso de uso: Procesamiento diario de logs, transformaciones de datos en almacenes. 4\. Patrón CQRS (Command Query Responsibility Segregation) Descripción: Divide las responsabilidades de comando (escribir datos) y consulta (leer datos). Componentes serverless: Lambda Functions para manejar las operaciones de escritura. DynamoDB o Firestore para bases de datos optimizadas para lectura. API Gateway para exponer la API de consulta. Caso de uso: Aplicaciones con alta concurrencia de lectura/escritura. 5\. Patrón de Orquestación Descripción: Las funciones trabajan juntas para completar un flujo de trabajo complejo. Componentes serverless: Step Functions o Google Cloud Workflows para orquestar tareas. Lambda Functions o Cloud Functions para ejecutar pasos individuales. SNS o Pub/Sub para enviar notificaciones. Caso de uso: Automatización de tareas como el aprovisionamiento de recursos o el procesamiento de imágenes. 6\. Patrón de FanOut/FanIn Descripción: Divide una tarea en subtareas paralelas (fanout) y luego consolida los resultados (fanin). Componentes serverless: SQS o Pub/Sub para gestionar colas de tareas. AWS Lambda o Cloud Functions para procesar tareas en paralelo. Step Functions para consolidar resultados. Caso de uso: Procesamiento paralelo de imágenes, videos o datos en lotes. 7\. Patrón de Edge Computing Descripción: Lleva el procesamiento al límite de la red para minimizar la latencia. Componentes serverless: AWS Lambda@Edge o Cloudflare Workers para procesamiento en los bordes. CDN (CloudFront, Fastly) para distribución de contenido. Caso de uso: Optimización de tiempos de respuesta para usuarios globales. 8\. Patrón IoT Descripción: Manejo de datos de dispositivos IoT con procesamiento en tiempo real. Componentes serverless: AWS IoT Core o Google IoT Core para comunicación entre dispositivos. Lambda Functions o Cloud Functions para procesar eventos IoT. DynamoDB, Bigtable o TimescaleDB para almacenar datos. Caso de uso: Monitoreo de sensores, gestión de dispositivos inteligentes. 9\. Patrón Webhook Descripción: Responde dinámicamente a eventos externos mediante HTTP callbacks. Componentes serverless: AWS Lambda o Azure Functions como endpoint del webhook. API Gateway para enrutar solicitudes entrantes. SNS para notificaciones basadas en los eventos del webhook. Caso de uso: Integraciones con plataformas de terceros (como Stripe o Slack). 10\. Patrón de Microservicios Descripción: Cada microservicio maneja una parte de la lógica de negocio y se comunica mediante APIs. Componentes serverless: Lambda Functions o Cloud Functions para la lógica de cada microservicio. API Gateway para la comunicación entre microservicios. DynamoDB, Firestore o RDS Proxy para almacenamiento por microservicio. Caso de uso: Escalabilidad y modularidad en aplicaciones empresariales. Ventajas clave de usar arquitecturas serverless: 1\. Escalado automático: Maneja picos de tráfico sin intervención manual. 2\. Reducción de costos: Pago por uso, no por capacidad reservada. 3\. Reducción de complejidad operativa: Los proveedores gestionan la infraestructura.
### **Arquitectura de Microservicios** * **Ejemplo:** **E-commerce** * **Componentes:** * **APIs:** Cada microservicio (productos, carrito, pagos) expone su propia API a través de **AWS API Gateway**. * **COLAS:** Usa **Amazon SQS** para manejar el procesamiento de pedidos. Cuando un usuario realiza un pedido, se coloca en una cola y un servicio de backend procesa los pedidos de manera asíncrona. * **STREAMS:** **Amazon Kinesis** se usa para rastrear las actividades de los usuarios en tiempo real (por ejemplo, qué productos están viendo) para personalizar recomendaciones.
![](https://static.platzi.com/media/user_upload/image-5378ae92-a23a-49f9-b87a-da487983ee05.jpg) La arquitectura serverless, también conocida como arquitectura sin servidor, es un modelo de diseño y despliegue de aplicaciones donde los desarrolladores no necesitan preocuparse por la gestión de la infraestructura. En lugar de eso, los proveedores de servicios en la nube se encargan de la ejecución del código, la asignación de recursos, la seguridad del servidor, el mantenimiento y la escalabilidad. En este ejemplo, puedes ver cómo se descompone una aplicación en funciones individuales que pueden ser invocadas y escaladas de manera independiente. Cada función se ejecuta en respuesta a eventos específicos, lo que permite un alto grado de flexibilidad y eficiencia.