🏗️ Arquitectura del Software Cheatsheet Completo 🏗️

La Arquitectura del Software es la estructura fundamental de un sistema de software y la disciplina para crear tales estructuras. Incluye los componentes del sistema, las relaciones entre ellos, y los principios y guías que rigen su diseño y evolución a lo largo del tiempo.


1. 🌟 Propósito y Rol del Arquitecto de Software


2. 📊 Atributos de Calidad (No-Functional Requirements - NFRs)

Son las características del sistema que no se refieren directamente a las funcionalidades, pero describen cómo debe funcionar el sistema. Son cruciales para las decisiones arquitectónicas.


3. 🧩 Componentes Clave de una Arquitectura


4. 🔠 Principios de Diseño Arquitectónico


5. 🗺️ Patrones Arquitectónicos Comunes (Estilos Arquitectónicos)

Plantillas de alto nivel para la estructura general del sistema, que abordan problemas recurrentes.

5.1. Monolítico

5.2. Arquitectura por Capas (N-tier / Layered Architecture)

5.3. Cliente-Servidor (Client-Server)

5.4. Orientada a Microservicios (Microservices Architecture)

5.5. Basada en Eventos (Event-Driven Architecture - EDA)

5.6. Arquitectura sin Servidor (Serverless / Function-as-a-Service - FaaS)


6. ⚪ Arquitecturas de Dominio (Domain-Centric Architectures)

Se enfocan en aislar la lógica de negocio central de los detalles de la infraestructura. A menudo se solapan conceptualmente.

6.1. Arquitectura Hexagonal (Ports & Adapters)

6.2. Arquitectura Cebolla (Onion Architecture)

6.3. Arquitectura Limpia (Clean Architecture)


7. 🎯 Decisiones Arquitectónicas Clave

Las elecciones que un arquitecto debe tomar.


8. 📄 Documentación Arquitectónica

Comunicar la arquitectura es tan importante como diseñarla.


9. 💡 Buenas Prácticas y Consejos


Este cheatsheet te proporciona una referencia completa y concisa de la Arquitectura del Software, cubriendo sus conceptos esenciales, atributos de calidad, principios de diseño, patrones comunes, enfoques de dominio, decisiones clave y las mejores prácticas para construir sistemas de software robustos y escalables.