GWAB - Patrones para aplicaciones en la Nube

36
#GWAB #BOGOTA Patrones para aplicaciones en la nube Ricardo González Vargas Sénior IT Architecture & SD Consultant Microsoft Regional Director [email protected] [email protected] http://twitter.com/rgonv http://about.me/ricardo.gonzalez

description

Global Windows Azure Bootcamp - Bogotá 2014 Tema: Patrones para aplicaciones en la Nube Speaker: Ricardo González Vargas

Transcript of GWAB - Patrones para aplicaciones en la Nube

Page 1: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Patrones para aplicaciones en la nube

Ricardo González VargasSénior IT Architecture & SD ConsultantMicrosoft Regional [email protected]@mvps.orghttp://twitter.com/rgonvhttp://about.me/ricardo.gonzalez

Page 2: GWAB - Patrones para aplicaciones en la Nube
Page 3: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Global bootcamp?

Localización

Ciudades

Países

MVP’s

Asistentes

Page 4: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Ricardo Gonzalez VargasArquitecto 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

[email protected]@mvps.orghttp://twitter.com/rgonvhttp://about.me/ricardo.gonzalez

Page 5: GWAB - Patrones para aplicaciones en la Nube

AGENDA

• Patrones para la Nube??

• Clasificaciones

• Patrones para soluciones en la nube

Page 6: GWAB - Patrones para aplicaciones en la Nube

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

Page 7: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Clasificación de los patronesLos 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.

Page 8: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Clasificación de patrones para la nubeSe 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

Page 9: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Clasificación de patrones para la nubeSe 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

Page 10: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Consumidores compitiendo - ProblemaEn 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.

Page 11: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Consumidores Compitiendo - Solución

Page 12: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Consumidores Compitiendo -Consideraciones

- Orden de los mensajes

- Diseñar servicios resilientes

- Detección de mensajes malignos

- Manejo de resultados

Page 13: GWAB - Patrones para aplicaciones en la Nube

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

Page 14: GWAB - Patrones para aplicaciones en la Nube

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

Page 15: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Ricardo González VargasSénior IT Architecture & SD ConsultantMicrosoft Regional [email protected]@mvps.orghttp://twitter.com/rgonvhttp://about.me/ricardo.gonzalez

Page 16: GWAB - Patrones para aplicaciones en la Nube

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.

Page 17: GWAB - Patrones para aplicaciones en la Nube

Selección de Líder - Solución

Page 18: GWAB - Patrones para aplicaciones en la Nube

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

Page 19: GWAB - Patrones para aplicaciones en la Nube

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

Page 20: GWAB - Patrones para aplicaciones en la Nube

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

Page 21: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Ricardo González VargasSénior IT Architecture & SD ConsultantMicrosoft Regional [email protected]@mvps.orghttp://twitter.com/rgonvhttp://about.me/ricardo.gonzalez

Page 22: GWAB - Patrones para aplicaciones en la Nube

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.

Page 23: GWAB - Patrones para aplicaciones en la Nube

Hospedaje de contenido estático - Solución

Page 24: GWAB - Patrones para aplicaciones en la Nube

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

Page 25: GWAB - Patrones para aplicaciones en la Nube

Hospedaje de contenido estático – Cuando usar• Cuando los recursos estáticos son considerables (prácticamente

cualquier aplicación web)

Page 26: GWAB - Patrones para aplicaciones en la Nube

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)

Page 27: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Ricardo González VargasSénior IT Architecture & SD ConsultantMicrosoft Regional [email protected]@mvps.orghttp://twitter.com/rgonvhttp://about.me/ricardo.gonzalez

Page 28: GWAB - Patrones para aplicaciones en la Nube

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

Page 29: GWAB - Patrones para aplicaciones en la Nube

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

Page 30: GWAB - Patrones para aplicaciones en la Nube

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

Page 31: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Global sponsors

Page 32: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Local sponsors

Colombia

User Group Leaders

Page 33: GWAB - Patrones para aplicaciones en la Nube

www.bdotnet.org

#GWAB #BOGOTA

Page 35: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Page 36: GWAB - Patrones para aplicaciones en la Nube

#GWAB #BOGOTA

Muchas Gracias

Ricardo González VargasSénior IT Architecture & SD ConsultantMicrosoft Regional [email protected]@mvps.orghttp://twitter.com/rgonvhttp://about.me/ricardo.gonzalez