¿Que és una aplicación con alta disponibilidad?

La disponibilidad de una aplicación se mide por el tiempo que es capaz de estar **funcionando correctamente sin que el usuario perciba inactividad en el servicio**. Es decir, si permanece inestable de forma continuada, existen varios momentos de inactividad o ha dejado de funcionar durante un largo periodo de tiempo, diríamos que no tiene un alto grado de disponibilidad. ¿Cómo conseguimos que nuestra aplicación esté disponible el mayor tiempo posible?. A continuación enumero varias de las estrategias utilizadas en el diseño de software para conseguir dicho objetivo:

Redundancia

La redundancia consiste en la réplica de un componente de la aplicación. Existe un componente primario y uno secundario que pasa a la acción en el caso de fallo del anterior, evitando de esta forma periodos de caída del sistema. Un ejemplo muy común en redundancia, es una base de datos replicada, que contiene una copia actual de la información manejada por la aplicación y que pasaría a primer plano en el momento en que la primaria no estuviese disponible.

Clusterización

Es muy parecido a la redundancia, pero en este caso, ambos componentes están funcionando a la vez y reparten la carga de trabajo entre los mismos, mejorando sustancialmente el rendimiento de la aplicación. A este término lo denominamos balanceo de carga y aquellos programas que nos ayudan en esta tarea son denominados balanceadores de carga. Entre los balanceadores más utilizados encontramos: apache, pm2, nginx, etc..

Backups

Y llegamos como no .. ¡a las copias de seguridad!. Todo sistema que se precie a de tener **copias de seguridad para evitar grandes paradas del servicio en casos críticos**. Un buen backup debería de poder devolvernos al punto en el que el sistema estaba funcionando sin hacer esperar demasiado al usuario. Hoy en día muchas de estas estrategias vienen implementadas por defecto en los proveedores de cloud computing, ya sea amazon ws, azure, heroku o algunos más modestos, pero no por eso menos usados, como digital ocean. Muchas empresas deciden no lanzarse a ejecutar tareas tan complicadas de arquitectura de software y dejarlo en manos de estos servicios, ahorrando en la mayoría de ocasiones, en costes de desarrollo. Si queréis más información sobre como construir vuestras propias aplicaciones con alta disponibilidad aquí os dejo un enlace sobre una de las herramientas más útiles para ello. pm2 en aplicaciones nodejs