Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...
20130329 Patrones de Aplicaciones para La nube #GWAB
1. #GWAB #BOGOTA
Patrones para aplicaciones en la nube
Ricardo González Vargas
Sénior IT Architecture & SD Consultant
Microsoft Regional Director
rgonzalez@androcial.com
rgonzalez@mvps.org
http://twitter.com/rgonv
http://about.me/ricardo.gonzalez
4. #GWAB #BOGOTA
Ricardo Gonzalez Vargas
Arquitecto de Soluciones con mas de 15 años de experiencia en diferentes verticales como
Telecomunicaciones, Salud, Banca entre otros.
Especializado en Definición de arquitectura, optimización y diagnostico de sistemas.
Microsoft MVP 2002 – 2011, Regional Director Microsoft 2004 - 2014.
Co-Founder & CEO de Androcial
rgonzalez@androcial.com
rgonzalez@mvps.org
http://twitter.com/rgonv
http://about.me/ricardo.gonzalez
6. #GWAB #BOGOTA
Que son los patrones?
Un patrón de diseño en arquitectura y en
informática es una manera formal de
documentar una solución a un problema de
diseño en un determinado contexto.
7. #GWAB #BOGOTA
Clasificación de los patrones
Los patrones pueden organizarse por múltiples criterios, esto incluyen:
- Por Disciplina: software, economía, música
- Por Dominio: real-time, user interface, comunicaciones, sistemas distribuidos, sistemas
embebidos, etc.
- Por Paradigmas: Orientado a Objetos, Funcional, imperativo
- Por Granularidad: Arquitectónicos, De Diseño, Idiomas
- Por Propósito: De comportamiento, de distribución, de confiabilidad
Por lo general, se utilizan múltiples criterios para organizar un conjunto de patrones.
8. #GWAB #BOGOTA
Clasificación de patrones para la nube
Se clasifican básicamente por propósito:
Propósito Descripción
Disponibilidad Define la proporción de tiempo que el
sistema esta disponible y trabajando
Administración de datos Clave en las aplicaciones en la nube
Diseño e implementación Consistencia y coherencia en el diseño,
despliegue, mantenibilidad.
Mensajería Conectividad para componentes y
servicios
Administración y monitoreo Exponer información en runtime para
que los operadores y administradores
puedan tomar acciones
9. #GWAB #BOGOTA
Clasificación de patrones para la nube
Se clasifican básicamente por propósito:
Propósito Descripción
Rendimiento y escalabilidad Indicador de la respuesta del sistema/
capacidad de soportar mas carga sin
afectar el rendimiento
Resiliencia Capacidad para manejar y recuperarse de
fallas.
Seguridad Prevencion de acciones accidentales o
maliciosas fuera del uso esperado para
prevenir divulgación o perdida de
informacion
10. #GWAB #BOGOTA
Consumidores compitiendo - Problema
En una aplicación que se ejecuta en la nube se puede esperar
manejar un gran número de solicitudes. En lugar de procesar cada
solicitud de forma sincrónica, una técnica común es que la aplicación
pase a través de un sistema de mensajería a otro servicio (un servicio
al consumidor) que los maneja de forma asincrónica. Esta estrategia
ayuda a asegurar que la lógica empresarial de la aplicación no se
bloquea mientras que las solicitudes se están procesando.
12. #GWAB #BOGOTA
Consumidores Compitiendo -
Consideraciones
- Orden de los mensajes
- Diseñar servicios resilientes
- Detección de mensajes malignos
- Manejo de resultados
13. #GWAB #BOGOTA
Consumidores Compitiendo – Cuando
usar
- La carga de trabajo de una aplicación se divide en tareas que se pueden ejecutar de forma
asincrónica.
- Las tareas son independientes y pueden funcionar en paralelo.
- El volumen de trabajo es muy variable, lo que requiere una solución escalable.
- La solución debe proporcionar una alta disponibilidad, y debe ser resistente si el
procesamiento de una tarea falla.
14. #GWAB #BOGOTA
Consumidores Compitiendo – Cuando
NO usar
- No es fácil de separar la carga de trabajo de aplicación en tareas discretas, o hay un alto grado
de dependencia entre tareas.
- Las tareas deben ser realizadas de forma sincrónica, y la lógica de la aplicación deben esperar a
que una tarea sea completada antes de continuar.
- Las tareas deben ser realizadas en una secuencia específica.
15. #GWAB #BOGOTA
Ricardo González Vargas
Sénior IT Architecture & SD Consultant
Microsoft Regional Director
rgonzalez@androcial.com
rgonzalez@mvps.org
http://twitter.com/rgonv
http://about.me/ricardo.gonzalez
16. Selección de Líder - Problema
• Coordinar las acciones realizadas por un conjunto de instancias de
tareas de colaboración en una aplicación distribuida mediante la
elección de una instancia como el líder que asume la responsabilidad
de la gestión de los otros casos. Este patrón puede ayudar a asegurar
que las instancias de tareas no entren en conflicto entre sí, que no
causen contención de recursos compartidos, o inadvertidamente
interfieran con el trabajo que otras instancias de tareas se están
realizando.
18. Selección de Líder - Consideraciones
• La elección debe ser resiliente a fallas
• Debe poderse saber si el líder ha fallado o no esta disponible
• Cuando hay autoscaling, el líder puede ser dado de baja
• Cuando se usa un mutex compartido externo, se depende de la
disponibilidad de este
• Se puede usar un líder dedicado, pero si falla, se puede afectar el
rendimiento y la respuesta del sistema
• La implementación manual del algoritmo da mayor flexibilidad
19. Selección de Líder – Cuando usar
• Use este patrón, cuando las tareas en una aplicación distribuida como
en la nube, requieran cuidadosa coordinación y no exista un líder
natural
20. Selección de Líder – Cuando NO usar
• Si hay un líder natural
• Si la coordinación de tareas puede realizarse de una manera mas
liviana. (Ej,Locks optimistas o pesimistas)
• Si alguna solución de un tercero es mas adecuada
21. #GWAB #BOGOTA
Ricardo González Vargas
Sénior IT Architecture & SD Consultant
Microsoft Regional Director
rgonzalez@androcial.com
rgonzalez@mvps.org
http://twitter.com/rgonv
http://about.me/ricardo.gonzalez
22. Hospedaje de contenido estático - Problema
• Las aplicaciones Web suelen incluir algunos elementos de contenido
estático. Este contenido estático puede incluir páginas HTML y otros
recursos, como imágenes y documentos que están a disposición del
cliente, ya sea como parte de una página HTML (como las imágenes
en línea, hojas de estilos y archivos de JavaScript del lado del cliente)
o como descargas separadas (tales como documentos en formato
PDF).
• Aunque los servidores web están bien afinados para optimizar las
solicitudes a través de la ejecución eficiente de código dinámico de la
pagina y salida utilizando caché, tienen que manejar las solicitudes
para descargar el contenido estático. Esto absorbe los ciclos de
procesamiento que a menudo se podrían poner a un mejor uso.
24. Hospedaje de contenido estático -
Consideraciones
• La implementación debe garantizar permitir la ejecución
local/hospedada
• Se depende no solo de la disponibilidad del servidor web, sino
también del almacenamiento externo
25. Hospedaje de contenido estático – Cuando
usar
• Cuando los recursos estáticos son considerables (prácticamente
cualquier aplicación web)
26. Hospedaje de contenido estático– Cuando NO
usar
• Cuando es mas contenido dinámico que contenido estático (PE,
aplicación que expone un WebAPI)
27. #GWAB #BOGOTA
Ricardo González Vargas
Sénior IT Architecture & SD Consultant
Microsoft Regional Director
rgonzalez@androcial.com
rgonzalez@mvps.org
http://twitter.com/rgonv
http://about.me/ricardo.gonzalez
28. Otros Patrones
Patron Descripcion
Cache-Aside Cargar datos en cache por demanda
Circuit Breaker Manejar fallas conectándose a recursos remotos
Compensating Transaction Des hacer el trabajo realizado por una serie de pasos
Compute Resource Consolidation Consolidar múltiples tareas en una unidad de computo
Command and Query Responsibility Segregation
(CQRS)
Separar las tareas de consulta de las actualizaciones en
interfaces diferentes
Event Sourcing Usar un store para guardar toda una serie de eventos
External Configuration Store Mover la configuración a un repositorio externo
Federated Identity Delegar la autenticación a un proveedor externo
Gatekeeper Intermediación para proteger los servicios y recursos
Health Endpoint Monitoring Verificaciones funcionales expuestas vía endpoints
29. Otros Patrones
Patron Descripcion
Index Table Crear tablas de índices para campos que son frecuentemente usados como criterio
Materialized View Generar vistas precargadas sobre los datos en uno o mas almacenamientos
Pipes and Filters Descomponer las tareas complejas en elementos discretos reutilizables
Priority Queue Priorizar las solicitudes para atender mas rápido las solicitudes prioritarias
Queue-Based Load Leveling Utilizar una cola como buffer entre el servicio que invoca y el que ejecuta
Retry Permitirle a la aplicación manejar fallas temporales conectándose a un recurso
Runtime Reconfiguration Diseñar una aplicación de tal manera que se pueda reconfigurar sin reiniciar o redesp
Scheduler Agent Supervisor Coordinar acciones entre servicios remotos manejando fallas
Sharding Dividir el almacén de datos en particiones horizontales
Throttling Controlar el acceso a un recurso por parte de una aplicación, usuario o servicio
Valet Key Use un token para dar acceso directo a un recurso y reducir la carga en la aplicacion
30. Conclusiones
• No es necesario reinventar las soluciones
• Estos patrones mencionados son enfocados principalmente al
escenario de hospedaje en la nube, pero sus principios pueden
aplicar en otros contextos
• Se complementan con patrones que tienen otros alcances, como
patrones arquitectónicos y de diseño
• Los patrones son una herramienta y como todas las herramientas
deben ser utilizadas para la función que fueron diseñadas