Session type: Standard (45 min)
Session level: Intermediate
Session language: Spanish
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, en 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 desembolso 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.

1 . 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 ?
- Nuestro objetivo es la modularidad.

2. Puntos únicos de fallo
- Fallo de DNS -> Servidores NS en diferentes proveedores.
- Fallo de proveedor de hosting/cloud -> Instalaciones multiregión, multiproveedor y cambio de DNS
- 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
- Fallos en la propagación de cambios - Caché -> Redis, Solr, Sphinx …


3. 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 ...
Author bio
Soy adminstrador de sistemas y Responsable de TI en Innoforma Elearning Technologies. Llevo más de 10 años dando soporte a sitios construidos con Drupal, Wordpress, Moodle, .NET ,Java y casi cualquier tecnología a la que alguien haya recurrido alguna vez. Lector voraz y compulsivo de ciencia ficción, fantasía y comics.