ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Patrones de diseño web

Alan RamirezTarea8 de Agosto de 2020

4.286 Palabras (18 Páginas)246 Visitas

Página 1 de 18

Programación Web[pic 1][pic 2]

Urzua Osorio Dagoberto

Ingeniería en Sistemas [pic 3]

Computacionales

5.3 Patrones de diseño[pic 4]

Aula 7L2

Horario: 08:00AM – 09:00AM

ENE/JUN

5.3 Patrones de diseño (AUTOR 1)

Estos patrones de diseño son útiles para crear aplicaciones confiables, escalables y seguras en la nube.

Cada patrón describe el problema al que hace frente, las consideraciones sobre su aplicación y un ejemplo basado en Microsoft Azure. La mayoría incluye ejemplos de código o fragmentos de código que muestran cómo implementar el patrón en Azure. Sin embargo, la mayoría de los patrones es importante para todos los sistemas distribuidos, tanto si están hospedados en Azure como en otras plataformas en la nube.

Disponibilidad

La disponibilidad es la proporción de tiempo que el sistema está operativo y en funcionamiento, normalmente se mide como un porcentaje del tiempo de actividad. Los errores del sistema, los problemas de infraestructura, los ataques malintencionados y la carga del sistema pueden afectar a la disponibilidad. Las aplicaciones en la nube suelen proporcionar a los usuarios un Acuerdo de Nivel de Servicio, por lo que las aplicaciones se deben diseñar para maximizar la disponibilidad.

Administración de datos

La administración de datos es el elemento clave de las aplicaciones en la nube e influye en la mayoría de los atributos de calidad. Los datos se hospedan normalmente en distintas ubicaciones y entre varios servidores por motivos tales como el rendimiento, la escalabilidad o la disponibilidad, lo cual puede conllevar varios desafíos. Por ejemplo, se debe mantener la coherencia de los datos y estos deben estar sincronizados entre las diferentes ubicaciones.

Diseño e implementación

Un buen diseño incluye factores como la coherencia en el diseño e implementación de los componentes, el mantenimiento para simplificar la administración y el desarrollo, y la reutilización para permitir que los componentes y subsistemas se puedan utilizar en otras aplicaciones y escenarios. Las decisiones tomadas durante la fase de diseño e implementación tienen un gran impacto en la calidad y el costo total de propiedad de las aplicaciones y servicios hospedados en la nube.

Mensajería

La naturaleza distribuida de las aplicaciones en la nube requiere una infraestructura de mensajería que permite conectar los componentes y servicios, idealmente mediante un acoplamiento flexible, para maximizar la escalabilidad. La mensajería asincrónica se usa ampliamente y ofrece numerosas ventajas, pero también supone desafíos como la ordenación de los mensajes, la administración de mensajes dudosos, la idempotencia, etc.

Administración y supervisión

Las aplicaciones en la nube se ejecutan en un centro de datos remoto en el que no tiene un control completo de la infraestructura ni, en algunos casos, del sistema operativo. Esto puede hacer que la administración y la supervisión sean más complejas que en una implementación local. Las aplicaciones deben exponer la información del entorno de ejecución que los administradores y operadores pueden usar para administrar y supervisar el sistema, así como dar soporte a los cambios en los requisitos empresariales y de personalización sin necesidad de detener o volver a implementar la aplicación.

Rendimiento y escalabilidad

El rendimiento es un indicativo de la capacidad de respuesta de un sistema a la hora de ejecutar cualquier acción dentro de un intervalo de tiempo determinado, mientras que la escalabilidad es la capacidad que tiene un sistema para controlar los aumentos de carga sin que afecte al rendimiento o para aumentar los recursos disponibles en el momento adecuado. Las aplicaciones en la nube normalmente se encuentran con cargas de trabajo variables y picos en la actividad. Predecirlos, especialmente en un escenario multiinquilino, es casi imposible. En lugar de eso, las aplicaciones se deben poder escalar horizontalmente dentro de ciertos límites para satisfacer los picos de demanda, y reducir horizontalmente cuando la demanda disminuya. La escalabilidad no se refiere solo a instancias de proceso, sino también a otros elementos como el almacenamiento de datos, la infraestructura de mensajería, etc.

Resistencia

La resistencia es la capacidad de un sistema para manejar los errores y recuperarse de ellos satisfactoriamente. La naturaleza del hospedaje en la nube, donde las aplicaciones a menudo son multiinquilino, usan servicios de plataforma compartidos, compiten por los recursos y el ancho de banda, y se ejecutan en hardware estándar, implica que hay una mayor probabilidad de que se produzcan errores transitorios o permanentes. La detección de errores y una recuperación de ellos que sea rápida y eficaz, son necesarias para mantener la resistencia.        

Seguridad

La seguridad es la capacidad de un sistema para impedir acciones malintencionadas o involuntarias que se salgan del uso para el que fue diseñado, y para impedir la revelación o pérdida de información. Las aplicaciones en la nube están expuestas en Internet, más allá de los límites locales de confianza y, a menudo, están abiertas al público y pueden dar servicio a usuarios que no son de confianza. Se deben diseñar e implementar las aplicaciones de forma que se las proteja frente a ataques malintencionados, se restrinja el acceso solo a los usuarios autorizados y se proteja la información confidencial.

Referencia:

Microsoft https://docs.microsoft.com/es-es/azure/architecture/patterns/

5.3 Patrones de diseño (AUTOR 2)

Disponibilidad

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/entrad:

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:

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:

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 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, 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.

Referencia: Matías Creimerman. (2017). Patrones de diseño en la nube. 2020, deSitioweb:https://desarrolloyarquitecturadesoftware.wordpress.com/2019/04/11/matias-creimerman-patrones-de-diseno-en-la-nube-disponiblidad/

...

Descargar como (para miembros actualizados) txt (28 Kb) pdf (355 Kb) docx (859 Kb)
Leer 17 páginas más »
Disponible sólo en Clubensayos.com