Skip to content
StackPractices

Etiqueta: design

Explora 21 recursos prácticos de ingeniería de software etiquetados con "design". Descubre recetas de código, patrones de diseño, plantillas de documentación y guías detalladas para ayudarte a construir, desplegar y mantener soluciones listas para producción con design.

Diseñar un API Gateway Escalable para Microservicios

Cómo construir un gateway de API que enrute requests, maneje autenticación, rate limiting, caching y traducción de protocolos entre clientes y microservicios backend.

Construir Sistemas Resilientes con el Circuit Breaker

Cómo prevenir fallas en cascada en sistemas distribuidos usando circuit breakers con estados open, closed y half-open en Java, TypeScript y Python.

Diseñar Sistemas Event-Driven con Event Buses y Brokers

Cómo construir sistemas débilmente acoplados usando eventos, event buses, message brokers y event sourcing para comunicación asíncrona que escala entre servicios.

Distribuir Tráfico con Algoritmos de Load Balancing

Cómo distribuir requests entrantes entre múltiples servidores usando round-robin, least-connections, weighted y consistent hashing con health checks y failover.

Diseñar Microservicios Resilientes con Circuit Breakers,

Cómo construir sistemas distribuidos tolerantes a fallos usando patrones de microservicios incluyendo circuit breakers, bulkheads, retries con backoff y sagas para gestión de transacciones.

Arquitectura Multi-Tenancy

Diseña aplicaciones multi-tenant con bases de datos compartidas o aisladas, routing tenant-aware y estrategias de aislamiento de datos.

Retry con Exponential Backoff

Implementa estrategias de retry resilientes con exponential backoff, jitter e integración de circuit breaker para recuperación de fallas transitorias.

Gestionar Transacciones Distribuidas con el Saga Pattern

Cómo implementar orquestación y coreografía de sagas para mantener consistencia de datos entre microservicios sin transacciones distribuidas ni two-phase commit.

Service Discovery

Implementa service discovery con health checks, resolución DNS-based y service registries para ambientes en vivo de microservicios.

Asegurar y Observar Microservicios con un Service Mesh

Cómo desplegar Istio o Linkerd para agregar mTLS, gestión de tráfico, observabilidad y enforcement de políticas a microservicios sin cambiar código de aplicación.

Workflow Engines

Orquesta procesos de negocio complejos con workflow engines, state machines y coordinación de tareas de larga duración a través de servicios distribuidos.

Puente entre Interfaces Incompatibles con el Adapter Pattern

Cómo integrar APIs legacy, librerías de terceros e interfaces incompatibles usando object adapters, class adapters y facade adapters en Java, TypeScript y Python.

Escalar Cargas de Lectura y Escritura con CQRS

Cómo separar modelos de lectura y escritura usando Command Query Responsibility Segregation para queries optimizadas, event sourcing, y escalado independiente de rutas de lectura y escritura.

Modelar Dominios de Negocio Complejos con Domain-Driven

Cómo estructurar código alrededor de conceptos de negocio usando bounded contexts, aggregates, entities, value objects y domain events para gestionar complejidad en aplicaciones grandes.

Crear Objetos Flexiblemente con el Factory Pattern

Cómo usar factory methods, abstract factories y containers de inyección de dependencias para desacoplar creación de objetos de su uso y mejorar testeabilidad.

Construir Aplicaciones Mantenibles con Arquitectura

Cómo estructurar aplicaciones usando ports y adapters para aislar lógica de negocio de frameworks, bases de datos y servicios externos para testabilidad y flexibilidad.

Implementar Sistemas Reactivos con el Observer Pattern

Cómo construir sistemas event-driven y reactivos usando el observer pattern con pub/sub, event emitters y reactive streams en JavaScript, Java y Python.

Asegurar una Única Instancia con el Singleton Pattern

Cómo garantizar exactamente una instancia de una clase en una aplicación usando inicialización perezosa, creación thread-safe y singletons basados en registro.

Intercambiar Algoritmos en Runtime con el Strategy Pattern

Cómo encapsular algoritmos y comportamientos intercambiables usando el strategy pattern con inyección de dependencias, function pointers y lambda strategies en Java, TypeScript y Python.

Plantilla de Especificación Técnica

Una plantilla para escribir documentos de especificación técnica para proyectos de software.

Domain-Driven Design (DDD) — Guía Práctica

Aprende los fundamentos de DDD: bounded contexts, entidades, value objects, aggregates, y cómo modelar dominios de negocio complejos en código.