Software Architecture Patterns for Serverless Systems - Second Edition
Aviso sobre derechos de autor
Los documentos disponibles en esta página son resúmenes y traducciones elaborados por el equipo de ingeniería de Cosmos con fines de estudio interno. No constituyen una reproducción del contenido original del libro. Todos los derechos del material original pertenecen a sus respectivos autores y editorial.
A partir de la lectura de Building Multi-Tenant SaaS Architectures, el autor propone que el modelo serverless es apropiado para este tipo de arquitecturas.
Cuando construimos Bitákora, lo hicimos creando microservicios alojados en contenedores y orquestados en un Docker-swarm. Nuestra experiencia en Serverless se limitaba a crear una función para realizar la evaluación de un documento o una foto y determinar si era una incapacidad y obtener los datos para crear automáticamente un registro.
Tomar la decisión de crear una arquitectura Serverless sin experiencia previa nos exige estudiar y aprender de este tipo de arquitecturas. Nos apoyaremos en este libro para entender los patrones de diseño y las bondades y limitaciones de los Funtions as a Service (FaaS) para hacer los experimentos de desarrollo en el Control Plane y posiblemente para los nuevos productos montados en el Application Plane.
Capítulos
1. Architecting for Innovation
Introduce los principios de diseño para sistemas serverless, resaltando la importancia del event-driven design y la agilidad para innovar sin fricción operacional.
2. Defining Boundaries and Letting Go
Explica cómo identificar y definir los límites correctos entre microservicios usando Domain-Driven Design, aplicando el principio de responsabilidad única a nivel arquitectónico.
3. Taming the Presentation Tier
Aborda el diseño de micro frontends y cómo estructurar la capa de presentación en sistemas distribuidos para mantener la independencia entre equipos de desarrollo.
4. Trusting Facts and Eventual Consistency
Examina el modelo de consistencia eventual en sistemas distribuidos, el uso de eventos como hechos inmutables y cómo diseñar servicios que toleren la asincronía.
5. Turning the Cloud into the Database
Propone aprovechar los servicios cloud nativos (DynamoDB, S3, etc.) como capa de persistencia, eliminando la necesidad de gestionar bases de datos relacionales tradicionales.
6. A Best Friend for the Frontend
Cada actividad de usuario recibe su propio servicio BFF autónomo con almacén de datos dedicado y una API trilateral de comandos, consultas, listener y trigger. Internamente, cada función se estructura con una nano arquitectura hexagonal que separa lógica de negocio, connectors y handlers. Según el patrón de acceso, aplicamos variantes especializadas —CRUD, lista de valores, tareas, búsqueda, acciones, dashboards, reportes y archivo— alineadas con las fases del ciclo de vida de los datos.
