Patrones de diseño en la nube – Disponiblidad


Disponibilidad esta relacionado al tiempo de actividad, con lo cual las aplicaciones en la nube deben diseñarse para poder brindar la mayor disponibilidad posible.
Normalmente hay acuerdos de SLA con los proveedores de nube.

Para poder verificar la disponibilidad es necesario diseñar:

Patrones de Monitoreo de Estado/Salud de los puntos de acceso/entrada:
Para este caso es necesario implementar herramientas externas a las aplicaciones que controles la disponibilidad y emitan alertas o permitan responder a la disponibilidad. Normalmente dichas herramientas consultan los puntos de entrada de la aplicación y emiten un resultado de estado o realizan un analisis segun el resultado para verificar el estado real.
Si no utilizamos herramientas externas podriamos programar servicios que cada cierto tiempo por ejemplo se conecten a la base de datos o intenten acceder a un servicio y con dichos resultados registrar lo que ha ocurrido además de enviar alertas a los subscriptores.

Patrones de balanceo de carga con colas de trabajo:
Para este caso es necesario balancear la carga de tareas de las aplicaciones para evitar cuellos de botella o interrupciones/saturación de los procesos. Normalmente se implementa una cola de procesos donde se cargan las tareas de la aplicación y se van tomando de la cola para ir ejecutandolas. Esto permite suavizar el procesamientos en los periodos de tiempo, evitar cuellos de botella y la caida de procesos o interrupción de servicios por sobrecarga. Por ejemplo, si tenemos un servicio que atiende consultas a la base de datos y lo consulta una cantidad excesiva de clientes, podríamos empezar a recibir timeouts para los distintos solicitantes, ya que en la carga y tiempo de procesamiento de los primeros comienza a saturar el servicio. De esta forma al implementar una cola de procesos podemos nivelar la carga de los procesos y responder a cada uno en forma secuencial. Cabe aclarar que se pueden utilizar distintos patrones y guias de colas de procesos para evitar problemas o mejorar la aplicación. Esto implicaria por ejemplo patrones de mensajes asincronicos, patrones de competencia de recursos, patrones que evitan estrangulamiento o cuellos de botella de la cola, patrones de servicios de mensajeria, etc.
Para este patrón también, si no utilizamos herramientas externas, podriamos desarrollar aplicaciones o servicios de cola que administren las tareas segun las necesidades de la aplicación.

Patrón de estrangulamiento:
Este patrón es utilizado para evitar que el consumo de los recursos genere cuellos de botellas y permita que la aplicación siga funcionamiento correctamente aún cuando todos los recursos están en uso. Por ejemplo, puede ocurrir que en un momento de tiempo todos los usuarios accedan a un servicio particular y dispare los consumos de recursos al maximo permitido, en ese caso, para evitarlo se configuran limites de acceso por usuario, donde cuando se llega al limite se rechaza la comunicación y se le notifica al usuario que el servicio paso el limite o se lo pone en espera hasta que se libere la carga. Con esto evitamos la concurrencia absoluta y los usuarios que se conectan primero o antes del limite siguen teniendo una buena performance, sin problemas de uso.
Para este patrón también, si no utilizamos herramientas externas, podriamos desarrollar aplicaciones o servicios o configuraciones que permitan por ejemplo para la situacion antes dada el control de usuarios que acceden. Se podrian usar soluciones como estas o tambien colas de prioridad.

Volver al menú

Matías Creimerman

Matías Creimerman Certifications

 

 

Matias Creimerman

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s