Mostrando las entradas con la etiqueta Infra. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Infra. Mostrar todas las entradas

domingo, 5 de octubre de 2025

Patrones de Despliegue

Un patrón de despliegue es una estrategia estructurada para actualizar o liberar nuevas versiones de software en un entorno de producción, minimizando riesgos, interrupciones y errores.

Blue-Green Deployment

Este patrón mantiene dos entornos idénticos: el actual en producción (blue) y el nuevo (green). El tráfico se redirige al entorno green una vez que el nuevo código pasa todas las pruebas. Si algo falla, basta con redirigir de nuevo al blue.

- Ventajas: despliegues rápidos y reversibles, cero tiempo de inactividad y rollback casi inmediato.

- Desventajas: requiere duplicar recursos (infraestructura y bases de datos) y una gestión cuidadosa de los datos para mantener sincronía entre entornos.

Canary

Consiste en lanzar la nueva versión solo a un porcentaje reducido de usuarios (por ejemplo, 5%), monitorizar el comportamiento (errores, latencia, métricas de negocio) y, si todo va bien, aumentar progresivamente la exposición hasta llegar al 100%.

- Ventajas: permite detectar errores reales en producción con impacto mínimo, facilita pruebas A/B y reduce riesgos.

- Desventajas: requiere observabilidad avanzada (métricas, logs, alertas), puede ser complejo de automatizar y los usuarios deben elegirse cuidadosamente para representar al conjunto de usuarios.

Rolling

En este enfoque se actualizan las instancias del servicio una por una o en pequeños lotes, mientras el resto sigue atendiendo tráfico. Cuando una nueva instancia está lista, se apaga una antigua.

- Ventajas: evita downtime, no necesita entornos duplicados y es compatible con contenedores y orquestadores como Kubernetes.

- Desventajas: los rollbacks son más lentos y, si hay problemas, puede coexistir código antiguo con nuevo, generando inconsistencias temporales.

Recreate / Big Bang

Se apagan todas las instancias existentes antes de desplegar las nuevas. Es simple y directo, sin coexistencia entre versiones.

- Ventajas: fácil de implementar, sin conflictos entre versiones.

- Desventajas: genera tiempo de inactividad, por lo que no es apto para sistemas que requieren alta disponibilidad.

A/B Testing

En este patrón se ejecutan dos versiones diferentes de la aplicación al mismo tiempo (por ejemplo, v1 y v2), y el tráfico se divide según reglas o perfiles (usuarios, cookies, ubicaciones…). Permite comparar rendimiento, UX o conversión antes de decidir cuál mantener.

- Ventajas: ideal para validar hipótesis de negocio y diseño, permite decisiones basadas en datos reales.

- Desventajas: requiere gestión sofisticada del enrutamiento y la segmentación, y puede introducir inconsistencias si las versiones manipulan los mismos datos.

Shadow / Mirroring

La nueva versión recibe una copia del tráfico real (en paralelo al entorno de producción), pero sus respuestas no afectan al usuario. Se usa solo para observar el comportamiento de la nueva versión bajo carga real.

- Ventajas: no hay riesgo para el usuario, excelente para validar rendimiento y compatibilidad antes del lanzamiento real.

- Desventajas: consume recursos adicionales y puede duplicar tráfico en sistemas con alta carga; además, no detecta errores de interacción real con el usuario.

Feature Toggles / Feature Flags

Las nuevas funcionalidades se despliegan al código de producción, pero se activan o desactivan mediante flags (sin necesidad de nuevos despliegues).

- Ventajas: permite despliegue continuo sin exposición inmediata, facilita pruebas en vivo y rollbacks instantáneos a nivel de feature.

- Desventajas: puede complicar el código con demasiadas condiciones y requiere gobernanza rigurosa para evitar “flag debt” (acumulación de flags sin limpiar).



jueves, 18 de septiembre de 2025

[Solucionado] ssh_exchange_identification: Connection closed by remote host

 Problema: Me intenté conectar a un servidor a través de ssh y me dió el siguiente error:

ssh_exchange_identification: Connection closed by remote host

Causa: El archivo /etc/hosts.deny es una especie de lista negra en la cual están almacenadas direcciones IP a la que no se le permite acceso al servidor. Mi IP está en esa lista negra.

Solución: Acceder al servidor a través de otra máquina, en persona, proxy o de cualquier otra manera siempre y cuando pueda editar ese archivo con privilegios elevados y eliminar de la lista de IPs «rechazadas» la de nuestra máquina. Eso está en el archivo «/etc/hosts.deny»

También aplica agregar los hosts (IPs) con acceso al server al archivo «hosts.allow».

sshd: 192.168.0.100

Eso basta 🙂 Ya no estamos en la blackList.

Conceptos básicos de Apache Kafka

Apache Kafka es una plataforma distribuida de mensajería y streaming diseñada para manejar grandes volúmenes de datos en tiempo real. Desar...