Desafíos en alta disponibilidad

Ponente: 

Todos queremos que nuestro software funcione sin problemas en cualquier circunstancia, de la forma más económica posible y sin preocuparnos de la plataforma en la que corra.

Habitualmente, de la disponibilidad, la resiliencia y la supervivencia a fallos catastróficos se han encargado “los de sistemas”, “los de redes”, “los de plataforma”, “los chichopos”, los BOFH o cualquiera de sus encarnaciones.

Con el advenimiento de la instrumentación, orquestación, servicios de hospedaje en la nube, microservicios… , cada vez más los desarrolladores están al tanto de las necesidades de infraestructura de las aplicaciones que desarrollan, e interactúan de una forma mucho más “fuerte” con los requisitos de funcionamiento de dicha infraestructura.

Todo servicio tiene puntos débiles, ciegos, respuestas imprevistas, dependencia de librerías o servicios externos, fallos en el diseño inicial o en el desarrollo del mismo y un largo etcétera de peligros que intentamos paliar con los sistemas de respaldo, failover, clustering, escalado automático, caché y algunas más de las que hablaremos.

En mi experiencia, una vez que necesitas escalar hacia arriba tu servicio, después del pánico y desembolso inicial en más y mejor hardware, la segunda frase más oída después de “eso es algo del servidor” es “vamos a refactorizar el código”. Normalmente, ninguna de las dos soluciona los problemas más acuciantes en esos momentos, como son la estabilidad del servicio y el gasto económico extra que hace peligrar el éxito del mismo.

En esta charla cubriremos el diseño y la implementación de una solución de alta disponibilidad desde cero hasta pasar a producción, con los retos y obstáculos que surgen y cómo solventarlos.

No es una guía exhaustiva, ni posiblemente se tomen las mejores decisiones en el ejemplo que vamos a usar, es sólo un esqueleto para mostrar las herramientas y estrategias más habituales al montar una solución resiliente y disponible. Y poder discutir sobre ello.

- Diseño inicial - Plataforma de ventas para empresas y particulares, con gestión de e-commerce ,basado en Drupal 8, PHP, MySQL, acceso a API Rest/Json requerido.
- Usuarios estimados.
- Dimensionado de la plataforma.
- ¿ Cuánto tiempo real necesitamos ? Caché, Solr y MySql
- Nuestro objetivo es la modularidad.
- Solución multinodo-multimaster

- Puntos únicos de fallo -> Solución propuesta
- Fallo de DNS -> Servidores NS en diferentes proveedores.
- Fallo de proveedor de hosting/cloud -> Instalaciones multiregión, multiproveedor y cambio de DNS
- Rendimiento de RED -> Uso de CDN, múltiples nodos web con registros A diferentes
- Fallo de nodos de servicio WEB -> HaProxy, escalado automático y Load Balancing en servicios cloud
- Fallo de nodos MySql -> Cluster multimaster Galera / MaxScale, Amazon Aurora
- Fallo de sistemas de ficheros -> GlusterFS, NFS, Rsync,csync2, Ceph
- Fallo a nivel de ficheros -> Git, copias de respaldo
- Fallos en la propagación de cambios -> Redis, Solr, Sphinx …

- Contrapartidas de la alta disponibilidad
- Coste económico
- Mantenimiento
- Aumento de complejidad, reparto de responsabilidad
- ¿ De verdad vale la pena el esfuerzo ? En manos de Amazon, Google, Azure, Akamai, Cloud flare,MaxCDN ...

Nivel experiencia: 
Iniciación
Audiencia: 
Desarrolladores
DevOps
Sistemas
Gestor de proyectos
Casos de estudio
Clientes
Versión de Drupal: 
Ninguna