Compartir
Contenidos contratados por la marca que se menciona

Diseño de un sistema complejo, ágil y escalable con Azure

Diseño de un sistema complejo, ágil y escalable con Azure
Guardar
1 Comentarios
Publicidad
\"The \"Prueba \"Conviértete

Más allá de la exposición teórica de las capacidades de una plataforma y de las primeras prácticas con el inevitable HolaMundo, hemos de comprobar sus capacidades en diseños más cercanos a la realidad. Veremos como Azure nos proporciona un marco de trabajo suficiente para atender a requerimientos complejos y grandes necesidades de velocidad y escalado. Para ello analicemos y diseñemos un sistema ficticio para la gestión de documentos en internet, y veamos su implementación en Azure. Presentamos finDoc.

Análisis

Sistema de gestión documental, donde los usuarios podrán subir, compartir, catalogar y etiquetar sus documentos. Los documentos caducan y son eliminados automáticamente, enviando una copia por email a los interesados. El acceso será vía web, y debemos permitir la integración con sistemas de terceros. Los usuarios serán facturados por el uso del sistema. A este sistema lo llamaremos finDoc.

Diseño

Para el desarrollo de un sistema que dé respuesta al planteamiento anterior debemos irnos a un diseño modular, donde intervengan varios servicios, desacoplados y escalables, con ello conseguiremos dar respuesta a los requerimientos funcionales y a a las especificaciones de agilidad y escalabilidad requeridas. La arquitectura de datos debe acomodar datos altamente estructurados. como los referentes a usuarios y facturación, con otros que a priori no lo son tanto, como la clasificación y etiquetado que asignen los usuarios a sus documentos.

El sistema esencialmente trata con documentos, por tanto hemos de proveer un almacenamiento ágil y correctamente dimensionado para alcanzar cotas de uso intensivas. Por último se nos requiere de un proceso desatendido que se ocupe de notificaciones, borrados y facturación.

El siguiente diagrama refleja a vista de pájaro el mapa de sistemas con los distintos servicios y roles involucrados, así como los flujos básicos de información.

diagrama findoc
  • WEB: Aplicación web con la interfaz de usuario.
  • REST: Fachada que provee servicios tanto a la interfaz web, como a integraciones de terceros
  • Cola: Las grabaciones se guardan en una cola para su procesado posterior. Esto agiliza la respuesta a usuarios.
  • Worker: Servicio que procesa la cola de entrada y se encarga de procesos periódicos automáticos.
  • SQL: Base de datos relacional para almacenar los datos de usuarios y facturación
  • NoSQL: Base de datos no estructurada para almacenar la información relativa a los documentos
  • File Server: Almacenamiento físico para los ficheros de los usuarios
  • Notificaciones: Envío de correos electrónicos, SMS… para avisar a los usuarios de los borrados, facturación…

Ahora veremos como Azure da respuesta a este diseño, y como identificar los distintos roles y bloques que nos ofrece Azure. Para empezar debemos diferenciar roles, instancias y medios de almacenamiento.

findoc

Para empezar usaremos dos tipos de roles que nos ofrece Azure: WebRole, para servicios que serán accesibles via http desde el exterior, y WorkerRole para servicios internos de larga duración. EL almacenamiento en Azure tiene dos modalidades: relacional en SQLAzure y el resto en distintos formatos: Queues para colas de mensajes, Tables, para almacenar información sin esquema previo y Blobs para ficheros grandes y multimedia.

En nuestro caso usaremos dos instancias WebRole para la interfaz, una para la aplicación web y otra para el servicio REST; un WorkerRole para albergar el proceso que en segundo plano tratará las colas y procesos automáticos. La base de datos relacional descansará en SQLAzure y el resto del almacenamiento usará formatos específicos. La cola de mensajes es fácilmente implementarle en Queues, después podemos hacer que el WorkerRole la procese y desencole los mensajes que el servicio REST le haya dejado previamente. La metadata de los documentos es arbitraria, y potencialmente muy distinta entre usuarios y documentos. En este caso Tables, nos permite guardar entidades en registros que no requieren de un esquema previo, pero que pueden ser indexados y consultados por cualquier atributo. Los ficheros los guardaremos en el almacén de Blobs, distinguiendo dos tipos de contenedores, Pages si para ser accedidos individualmente, como fotos y otros archivos, y Blocks para accesos por streaming, como pueda ser la música y el vídeo.

Vemos por tanto como la arquitectura que nos ofrece Azure, permite que diseños potencialmente complejos sean abordados en una única plataforma, que además ofrece inagotables posibilidades de escalado, vía redundancia de roles, asignación de potencia a cada rol y reserva de cuotas de disco y transferencia según se necesite.

En Nube Microsoft:

Publicidad

También te puede gustar

Ver más artículos