Diario de DSA y Diseño de Sistemas - 6

Día 6 de Diseño de Sistemas y DSA: descubre patrones de disponibilidad para mantener servicios resilientes (redundancia, conmutación por error, balanceo, replicación, caché, colas y sharding) y el reto Roman to Integer de LeetCode.

4 sept 2025 • 3 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Día 6 Diseño de Sistemas y DSA

Sigo con mi rutina diaria de aprendizaje combinando conceptos de Diseño de Sistemas mediante la ruta de roadmap punto sh y retos de DSA en LeetCode. Hoy es el día 6.

Diseño de Sistemas Patrones de Disponibilidad

El tema de hoy trata sobre patrones de disponibilidad, técnicas para mantener los sistemas resilientes y en línea incluso cuando fallan componentes. La meta es que los servicios sigan respondiendo y que el tiempo de inactividad sea mínimo.

1 Redundancia

Varias instancias del servicio en paralelo. Modos comunes

Activo pasivo con conmutación por error cuando cae el primario. Activo activo con balanceo de carga en todas las réplicas. N mas 1 para capacidad adicional de seguridad. Consideraciones monitoreo, tiempo de conmutación, consistencia de datos.

2 Replicación

Mantener copias de datos en múltiples servidores. Sincrónica ofrece consistencia fuerte con mayor latencia. Asincrónica reduce latencia pero puede mostrar datos desactualizados.

3 Conmutación por error

Cambio automático a un servicio de respaldo cuando falla el primario. Cuidar escenarios de cerebro dividido, decidir entre automatizada o manual, y probarla de forma periódica.

4 Balanceo de carga

Distribuir solicitudes entre varios servidores. Algoritmos típicos round robin, menor número de conexiones, hash de IP. Mejora disponibilidad y rendimiento.

5 Cortacircuitos

Evitan fallos en cascada bloqueando el tráfico hacia servicios no saludables. Estados cerrado abierto medio abierto. Aumenta la resiliencia y facilita una recuperación gradual.

6 Mecanismos de reintento

Útiles ante fallos transitorios como problemas de red. Usar retroceso exponencial y jitter para evitar saturar. Garantizar que las operaciones sean idempotentes.

7 Limitación de tasa

Controlar el flujo de solicitudes para prevenir sobrecarga. Técnicas token bucket y leaky bucket. Protege de abuso, ataques de denegación y agotamiento de recursos.

8 Caché

Almacenar datos de acceso frecuente en medios rápidos. Tipos en cliente, en servidor, y CDN. Atención a invalidación y estrategias de expulsión.

9 Colas

Desacoplan productores y consumidores. Mejoran disponibilidad y escalabilidad. Tecnologías comunes RabbitMQ, Kafka, SQS.

10 Sharding de base de datos

Dividir una base de datos grande en fragmentos más pequeños. Mejora rendimiento y disponibilidad. Elegir bien la clave de partición y gestionar consultas entre fragmentos.

Mi reflexión

Estos patrones son la caja de herramientas de la resiliencia. Cada uno implica compromisos latencia frente a consistencia, rendimiento frente a costo, pero en conjunto permiten construir sistemas que no solo funcionan, sino que sobreviven a fallos reales.

DSA del día Roman to Integer

El reto de hoy es la versión inversa del de ayer 13 Roman to Integer en LeetCode. Tiempo invertido cerca de dos horas con desvíos pero muy provechoso.

Entendiendo el problema

Mapear cada símbolo romano a su valor I V X L C D M. Recorrer la cadena de izquierda a derecha. Si el valor actual es menor que el siguiente se resta. En caso contrario se suma. Con esto se obtiene el total en tiempo lineal y espacio constante.

Puntos clave

Un diccionario para consulta directa mantiene el código claro. Un bucle que compara elemento actual y siguiente simplifica la lógica. La solución simple gana en legibilidad y depuración frente a trucos compactos.

Conclusiones

En Diseño de Sistemas los patrones de disponibilidad refuerzan la importancia de la redundancia la conmutación por error y el balanceo para sistemas robustos. En DSA las cifras romanas muestran la elegancia de combinar mapeo y condiciones sencillas para lograr soluciones limpias.

Conectemos

Llevo seis días seguidos y quiero que estas publicaciones impulsen más aprendizaje y conversación. Qué patrón de disponibilidad has implementado en tu trabajo Prefieres convertir romano a entero o entero a romano Déjame tu opinión o un emoji para mantener el impulso.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.