TEMA V - 5.2 PATRONES DE DISEÑO

Patrones de diseño en la nube

Disponibilidad está 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

También conocido como (HEALTH MONITORING OF ENTRY POINTS PATTERN)

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 análisis según el resultado para verificar el estado real.

Si no utilizamos herramientas externas podríamos 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

También conocido como (LOAD BALANCING WITH QUEUES PATTERN)

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 ejecutándolas. Esto permite suavizar el procesamiento en los periodos de tiempo, evitar cuellos de botella y la caída 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 guías de colas de procesos para evitar problemas o mejorar la aplicación.

Esto implicaría por ejemplo patrones de mensajes asincrónicos, patrones de competencia de recursos, patrones que evitan estrangulamiento o cuellos de botella de la cola, patrones de servicios de mensajería, etc. Para este patrón también, si no utilizamos herramientas externas, podríamos desarrollar aplicaciones o servicios de cola que administren las tareas según las necesidades de la aplicación.

PATRÓN DE ESTRANGULAMIENTO

También conocido como (STRANGULATION PATTERN)

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 máximo permitido, en ese caso, para evitarlo se configuran límites de acceso por usuario, donde cuando se llega al límite se rechaza la comunicación y se le notifica al usuario que el servicio paso el límite 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 límite siguen teniendo una buena performance, sin problemas de uso. Para este patrón también, si no utilizamos herramientas externas, podríamos desarrollar aplicaciones o servicios o configuraciones que permitan por ejemplo para la situación antes dada el control de usuarios que acceden. Se podrían usar soluciones como estas o también colas de prioridad.