Arquitecturas en Computación

  • Computer Science
  • sistemas federados ibm

    Arquitectura Hexagonal

    También conocida como Ports and Adapters, busca aislar la lógica del negocio del mundo exterior (interfaces, bases de datos, frameworks).

  • Ports
    • Interfaces definidas dentro del dominio que representan puntos de entrada/salida.
    • El dominio no depende de implementaciones concretas, solo de las interfaces.
  • Adapters
    • Implementaciones concretas que conectan el dominio con el mundo externo (UI, DB, APIs).
    • Permiten intercambiar frameworks o tecnologías sin modificar el núcleo.
  • Dominio / Negocio
    • Contiene las reglas del negocio, entidades, casos de uso.
    • Totalmente independiente de infraestructura.
  • Desacoplamiento
    • Permite testear el dominio sin infraestructura real.
    • Favorece la mantenibilidad, escalabilidad y sustitución de dependencias.

Cliente / Servidor

Modelo base de comunicación en red donde:

  • Cliente solicita recursos o servicios.
  • Servidor los provee, gestiona y responde.
    Usado en la mayoría de sistemas distribuidos, desde aplicaciones web hasta bases de datos.

serverless

Arquitectura donde el despliegue y escalado del servidor son gestionados por el proveedor (AWS Lambda, Azure Functions, GCP Functions).

  • Se paga por ejecución, no por infraestructura.
  • Favorece microservicios desacoplados y event-driven.
  • Ideal para funciones aisladas y tareas reactivas.
  • Integra bien con colas, eventos, y flujos de datos asincrónicos.

Component Driven Design

Diseño centrado en componentes reutilizables e independientes.

  • Facilita el mantenimiento y la escalabilidad.
  • Cada componente tiene su propio estado, lógica y estilo.
  • Popular en frontends (React, Vue) y en sistemas modulares backend.

Arquitectura Orientada a Eventos

Diseño basado en la emisión, recepción y reacción a eventos.

  • Command Query Responsibility Segregation (CQRS)
    • Separa las operaciones de lectura (Query) y escritura (Command) para optimizar rendimiento y coherencia.
  • Event Sourcing
    • En lugar de almacenar estados finales, se almacenan todos los eventos que llevaron a ese estado.
    • Permite reconstruir el estado y mantener historial.
  • Arquitectura basada en eventos-
    • Usa colas, topics o buses de eventos para comunicar microservicios.
  • inngest
    • Ejemplo moderno de plataforma para flujos event-driven serverless.

Arquitectura en Capas (Layered)

Separación lógica de responsabilidades por capas.

  • 3-Layer Architecture
    • Presentación: interfaz de usuario o API.
    • Negocio: lógica de aplicación.
    • Datos: acceso y persistencia.
  • Aísla dependencias y permite probar cada capa de forma independiente.
  • Base de muchos frameworks tradicionales.

microservicios

Arquitectura distribuida donde cada servicio es independiente y especializado en una función.

  • Saga Pattern
    • Coordina transacciones distribuidas mediante eventos y compensaciones en caso de error.
    • Evita bloqueos de recursos entre servicios.
  • Transacciones Distribuidas
    • Mantienen la consistencia eventual en entornos descentralizados.
    • Usan mensajes, colas y mecanismos de compensación.

ECS (Entity Component System)

Patrón común en GameDev y sistemas de simulación.

  • Entity: identificador único sin lógica.
  • Component: datos o propiedades que describen la entidad.
  • System: lógica que actúa sobre componentes.
    Promueve la composición sobre la herencia, maximizando la flexibilidad y el rendimiento.

Pages y Filters

Modelo derivado de arquitecturas web.

  • Pages representan controladores o vistas.
  • Filters permiten aplicar transformaciones o validaciones transversales (autenticación, logging, caching).
    Similar a middleware o pipelines.

Arquitectura Monolítica

  • Toda la aplicación en un único bloque.
  • Simplicidad inicial y despliegue rápido.
  • Dificulta la escalabilidad y evolución modular.
    Puede ser una buena opción para MVPs o sistemas pequeños.

onion architecture

Variante de la arquitectura hexagonal, centrada en un dominio núcleo.

  • Dominio Núcleo
    • Entidades, casos de uso, lógica pura.
  • Capas Concéntricas
    • Cada capa depende solo de la anterior hacia el centro.
  • Dependencias
    • Las capas externas (UI, infraestructura) dependen del dominio, nunca al revés.
  • Casos de Uso
    • Menor complejidad que Clean Architecture, pero con similar separación.

Principios Fundamentales

  • YAGNI (You Aren’t Gonna Need It)
    • No implementes funcionalidad hasta que sea necesaria.
  • DRY (Don’t Repeat Yourself)
    • Evita duplicación de lógica o datos.
  • KISS (Keep It Simple, Stupid)
    • Prefiere soluciones simples y claras sobre diseños innecesariamente complejos.

Arquitecturas en Computación — Expansión y Conceptos Avanzados

Clean Architecture

Evolución de onion architecture y arquitectura hexagonal que enfatiza la independencia total del dominio frente a frameworks, bases de datos o interfaces.

  • Capas
    • Entities (Dominio puro): reglas de negocio, invariantes.
    • Use Cases (Aplicación): coordinan el flujo entre entidades e interfaces.
    • Interface Adapters: transforman datos entre capas.
    • Frameworks & Drivers: infraestructura, UI, bases de datos.
  • Dependencias
    • Siempre apuntan hacia el dominio.
    • Nada fuera puede afectar su lógica interna.
  • Favorece pruebas unitarias, mantenibilidad y modularidad extrema.

Microkernel (Plug-in Architecture)

Diseño que separa un núcleo estable de funcionalidades básicas y una colección de plugins o módulos extendibles.

  • Núcleo: servicios esenciales y puntos de extensión.
  • Plugins: nuevas capacidades que se pueden añadir sin modificar el núcleo.
  • Usado en IDEs (VSCode, Eclipse), sistemas operativos, videojuegos o plataformas extensibles.

Service-Oriented Architecture (SOA)

Antecesora de microservicios, centrada en la interoperabilidad mediante servicios compartidos.

  • Usa protocolos estándar (SOAP, XML-RPC, REST).
  • Integra sistemas heterogéneos.
  • Enfatiza contratos de servicio y orquestación.
  • Se diferencia de microservicios por su menor granularidad y mayor centralización.

Data-Centric Architectures

Arquitecturas orientadas a los flujos y transformaciones de datos.

  • Data Flow Architecture
    • Procesos representados como nodos conectados por canales de datos.
    • Ejemplo: sistemas ETL, pipelines, procesamiento en streaming.
  • Data Lake / Data Mesh
    • Enfoques modernos para gestión de datos distribuidos y descentralizados.
    • Cada dominio controla sus propios datos (autonomía y calidad).

Reactive Architecture

Enfocada en la reactividad, resiliencia y elasticidad ante eventos asincrónicos.

  • Basada en el Reactive Manifesto.
  • Características:
    • Responsive: responde rápidamente a usuarios.
    • Resilient: se recupera ante fallos.
    • Elastic: escala dinámicamente.
    • Message Driven: usa colas y eventos para comunicación.
  • Ideal para sistemas distribuidos, microservicios y tiempo real.

Pipeline / Batch Architectures

Modelos para procesamiento secuencial o masivo de datos.

  • Pipeline Architecture
    • Flujo continuo de transformaciones (streaming, procesamiento incremental).
    • Ejemplo: sistemas de CI/CD, audio/video, machine learning pipelines.
  • Batch Architecture
    • Procesamiento en lotes programados.
    • Común en ETL, big data y tareas programadas con cron o Airflow.

Domain-Driven Design (DDD)

Complemento conceptual a las arquitecturas de dominio como hexagonal o onion architecture.

  • Ubiquitous Language: lenguaje compartido entre negocio y desarrollo.
  • Bounded Contexts: división del sistema por dominios cohesivos.
  • Aggregates, Entities, Value Objects: estructuras del modelo de dominio.
  • Context Mapping: define relaciones entre dominios (shared kernel, customer-supplier, etc).
  • Base teórica de microservicios bien definidos.

Space-Based Architecture

Diseñada para alta escalabilidad y baja latencia, usada en trading, e-commerce y sistemas intensivos.

  • Divide el sistema en processing units independientes que comparten un data grid.
  • Usa almacenamiento distribuido en memoria (como Hazelcast o Redis).
  • Elimina el cuello de botella del almacenamiento centralizado.
  • Altamente paralelizable.

Event Mesh & Choreography Patterns

Extensión avanzada de event driven architecture.

  • Event Mesh: red de brokers distribuidos que propagan eventos globalmente.
  • Choreography vs Orchestration:
    • Orchestration: un servicio central coordina las interacciones (como una Saga).
    • Choreography: los servicios reaccionan a eventos sin control central.
  • Mejora la autonomía, resiliencia y escalabilidad de sistemas distribuidos.

Edge & Fog Computing

Complemento a serverless y cloud computing para procesamiento cercano a la fuente de datos.

  • Edge Computing: procesamiento local (dispositivos IoT, gateways).
    • Reduce latencia y consumo de ancho de banda.
  • Fog Computing: capa intermedia entre el edge y la nube.
    • Filtra, agrega o enruta datos antes del procesamiento central.
  • Ideal para sistemas en tiempo real, IoT y automatización industrial.

Actor Model

Modelo de concurrencia descentralizada.

  • Cada actor es una unidad autónoma con estado, comportamiento y buzón de mensajes.
  • Se comunican exclusivamente por paso de mensajes asincrónicos.
  • Sin locks ni memoria compartida.
  • Implementado en frameworks como Akka, Erlang o Orleans.
  • Base conceptual de muchas arquitecturas reactivas y distribuidas.

Self-Contained Systems (SCS)

Evolución práctica de los microservicios, donde cada módulo es completamente autónomo.

  • Incluye su propia UI, lógica y almacenamiento.
  • Reduce dependencias entre servicios.
  • Promueve despliegue y evolución independientes.
  • Ideal para grandes plataformas con equipos autónomos.

Principios Avanzados

  • SOLID: cinco principios fundamentales para código mantenible (Single Responsibility, Open/Closed, etc).
  • High Cohesion & Low Coupling: las partes internas deben estar muy relacionadas, y las externas poco dependientes.
  • Separation of Concerns (SoC): divide responsabilidades para reducir complejidad.
  • Composability: los módulos deben combinarse fácilmente sin alterar su naturaleza.
  • Observabilidad: la arquitectura debe ser medible, trazable y auditable.

Tendencias Modernas

  • Composable Architecture: sistemas ensamblados mediante APIs, microfrontends y módulos dinámicos.
  • Event-Driven Microservices + AI Orchestration: integración de IA en pipelines de eventos.
  • Infrastructure as Code (IaC): definición de infraestructura como parte del diseño arquitectónico.
  • Quantum-Inspired & Neuromorphic Architectures: exploración futura hacia hardware y patrones inspirados en el cerebro o la mecánica cuántica.