sábado, 21 de enero de 2017

Azure, Office 365 y servicios personalizados

Hace algunas semanas uno de nuestros clientes nos llamó por un desarrollo express, de aquellos que te erizan la piel por el reto que implican.

Inicialmente nosotros ayudamos a desarrollar su Intranet sobre SharePoint Online y nos encontrábamos cerrando dicho proyecto cuando nos solicitaron un desarrollo especial. Su complicación fue que, al migrar una de sus soluciones core, varios de sus servicios se cayeron entre ellos, un módulo que les permite saber cuando una persona se encuentra en su puesto de trabajo; es decir, un módulo para hacer Check In.

Fue así como nos solicitaron de manera urgente, desarrollar una pequeña solución sobre SharePoint Online, que permitiera a una persona indicar cuando estuviera en su posición de trabajo, esto coordinado con un itinerario que nos enviarían desde otro sistema y usando archivos de texto sincronizados cada 5 minutos en un servidor SFTP.

Con estas premisas en frente aceptamos el reto, claro está con ciertas condiciones de infraestructura que pusimos sobre la mesa para poder hacer factible la sincronización de los sistemas sin la acción de alguna persona que manualmente realizara alguna actividad.

Lo primero que hicimos fue aceptar que no era suficiente con Office 365 para poder cumplir con el requerimiento. 

Lo segundo que hicimos fue generar una infraestructura factible que nos permitiera:

  1. Comunicarnos con un servidor SFTP para descargar los archivos de texto con los itinerarios.
  2. Procesar los archivos de tal forma que nos permitiera realizar consultas de información y responder en cuestión de instantes.
  3. Gestionar los accesos desde Office 365 para conocer al usuario que busca hacer Check In y permitirle o informarlo de la hora adecuada para registrar su acceso (un nice to have en la aplicación es conocer las coordenadas en las que se encuentra la persona para poder hacer Check In)
  4. Registrar el Check In y enviar la información al sistema origen en el mismo formato de texto.
  5. La información entre el sistema origen y Office 365 debe sincronizarse cada 5 minutos.
Para cumplir con toda esta infraestructura nos valimos del servicio Azure y toda la gama de opciones para ofrecer una aplicación disponible las 24 horas, completamente elástica y con los niveles de seguridad que nos solicita el cliente.

El resultado final se puede ver a grandes rasgos en la siguiente imagen.

En ella se muestra que:
  1. En Office 365 se generó un App para SharePoint que funciona como la cara al usuario y en donde se le ofrecen todos los controles e información necesaria para hacer Check In.
  2. En Azure se montó una aplicación Web que se encarga de intercambiar la información entre todos los actores que intervienen. Esta aplicación se encarga de conectarse al servidor SFTP y procesar la información en los documentos de texto. La información procesada se envía a una Base de Datos, también en Azure. Finalmente, también procesa las peticiones de itinerario y Check In que realizan los usuarios.
  3. Se generó una Base de datos en SQL Azure que almacena toda la información  procesada por la aplicación Web. Además de que almacena los Check Ins con fecha, hora y posición geográfica.
  4. Se montó un Web Job que cada cinco minutos realiza una petición a la aplicación Web para sincronizar la información del servidor SFTP.
Como ustedes pueden ver, este pequeño monstruo nos puso a prueba en nuestros conocimientos sobre la plataforma y, gracias a la oferta de servicios actual sobre distintos tipos de tecnología, fue que se pudo resolver el reto. Después de esta pequeña nota me gustaría conocer, ¿Ustedes cómo lo habrían solucionado?

¡Les agradezco de antemano sus comentarios y pasen un excelente reto!