Resultados del ICFES: Ahora sobre Windows Azure - WarNov Developer Evangelist - Site Home - MSDN Blogs

Resultados del ICFES: Ahora sobre Windows Azure

Resultados del ICFES: Ahora sobre Windows Azure

Rate This
  • Comments 11
 

Es hasta el momento la aplicación más grande en el país, montada sobre Windows Azure y es para mí muy agradable declararla como mi primer pequeño hijo Azure, luego de linear la arquitectura de su funcionamiento y de haber pasado derecho 24 horas programándola. Esto, dado que empezar de ceros y terminar en tiempo record, pues existían ciertos problemas con la anterior plataforma entre ellos la incapacidad de re direccionar correctamente al sitio original del ICFES para mostrar información distinta a la de los resultados y también el precio que en total es más de 8 veces más alto que el logrado con Windows Azure (de cerca de US$25.000 pasamos a US$3000: exagerando)

Todo comenzó con la noticia de que uno de nuestros principales socios de negocio certificados: ASESOFTWARE (CMMI 5) estaba interesado en desarrollar la plataforma que serviría para presentar los resultados del Examen de Estado ICFES a la nación colombiana (600.000 resultados). Al oír esto, de inmediato me desplacé a sus instalaciones para apoyarlos en este proceso.

Fue una misión compleja. Estábamos sobre el tiempo y necesitábamos salir al aire lo más rápido posible. Sin embargo es esto mismo lo que demuestra las bondades de Azure, que nos permiten aprovechar todos los conocimientos que ya tenemos sobre .NET y sumados a algo de teoría de Cloud Computing nos permiten salir muy rápido a producción. Gracias al empeño y gran experiencia en desarrollo de ASESOFTWARE pudimos aprovechar y capitalizar todas estas ventajas.

Básicamente necesitábamos subir esa gran cantidad de data a la nube, y crear una aplicación web bajo los lineamientos del ICFES para mostrarlos al público.

image

Análisis de la solución:

Necesitábamos una capa de alimentación de datos, otra capa de negocio para implementar la lógica y finalmente una capa de presentación Web para los usuarios finales. Nótese que en este caso no necesitamos una capa de servicios, dado lo puntual de la solución. Si se hubiese necesitado igual no habría habido ningún problema porque Windows Azure está totalmente preparado para estos casos.

Capa de Alimentación de Datos

La decisión más simplista, hubiese sido usar SQL Azure y subir todos los datos a la Base de Datos en la nube. Esto se hubiese podido hacer con Integration Services y se hubiese podido obtener un resultado más que aceptable.

Pero en Windows Azure existe el storage nativo en tablas no relacionales. Un tipo de almacenamiento que se ajusta perfectamente a requerimientos como este en el que solo es necesario tener datos estructurados que no se relacionan con tablas adicionales. Un claro ejemplo de una base de datos NOSQL. SQL Azure está más enfocado a servir como Base de Datos a aplicaciones altamente relacionales y transaccionales cuyo modelo de operación es difícilmente concebible con tablas sin integridad referencial (ERPs, CRMs, etc.) Entonces para qué incurrir en los altos costos de SQL Azure sin necesidad? SQL Azure es 66 veces más costoso que el almacenamiento en tablas de Windows Azure (US$0.15 por Gb por mes). Y esto es apenas lógico, dado que por debajo existe todo un motor relacional que administra la integridad referencial, la ejecución optimizada de consultas y un sinfín de aspectos adicionales.

Esto, sin mencionar que las tablas tienen un rendimiento mayor a SQL Azure, dado que su acceso se hace directamente sin pasar por un motor de validaciones adicional. Y por otro lado, son altamente escalables, desde que una vez definida una columna de partición en nuestras tablas, Windows Azure encarga de distribuir automáticamente los datos en distintos nodos físicos, de manera que el acceso siempre es lo más optimizado posible. En este caso por ejemplo, hicimos particiones por colegios. Así que los resultados de cada colegio se almacenaron en una partición distinta sin mayor esfuerzo. Por si fuera poco, cada registro grabado en una tabla de Windows Azure, queda respaldado con otras dos copias de seguridad, para brindar redundancia. Esto se ejecuta sin costo alguno (tiempo, dinero, o programación) además sucede lo mismo con los blobs, las colas y el mismo SQL Azure.

Así pues, procedí a crear un aplicativo Windows que tomaba la información de resultados del ICFES y la llevaba hasta la nube.

Capa de Negocio y Presentación WEB

El equipo de desarrollo de Asesoftware tomó una interfaz de acceso a datos Web que ya existía y le hizo la adaptación para consultar los datos de las tablas. Estos datos eran presentados en formato HTML y también sirvieron para construir un PDF que se distribuye a los usuarios de la aplicación que contiene el boletín con los resultados del examen. Estos PDFs luego de ser construidos, se almacenan en el espacio de BLOBs de Windows Azure, que también nos brinda unos costos súper bajos de almacenamiento (US$0.15 por Gb).

En estas capas hubo que tener en cuenta ciertas consideraciones, como por ejemplo el manejo de las interfaces con los esquemas de almacenamiento de Windows Azure, los modelos de redirección de la aplicación al dominio original, etc. En general estrategias puramente técnicas que ya he publicado en mis artículos de Windows Azure dentro de este blog, o que estaré publicando próximamente.

Solución Desplegada

Siendo sinceros, esta solución fue desplegada en Azure con una estrategia de sobre-estimación dado que es la primera vez que se sale al aire con un proyecto de esta magnitud en el país y se quería prevenir cualquier eventualidad que pudiera dar una mala imagen de la plataforma. Fue así como la solución se desplegó en cuatro WebRoles de tamaño grande (CPU: 1.6Ghzx4, RAM: 1.7Gbx4) lo que al final nos da una capacidad de 25.6GHz de procesamiento en conjunto y 27.2GB de RAM. En realidad estimo que para la situación actual, sería suficiente con el 70% de esta capacidad. Pero gracias a los precios de Azure, se pudo establecer este esquema holgado, sin un mayor impacto a la inversión. Además, en las noches cuando hay menos carga, se bajan máquinas para disminuir los costos. Por eso, cuando hablé de un total de US$3000 para tener la aplicación desplegada durante una semana, dije que estaba exagerando. En realidad el costo es menor. Recuerden que el costo antes de Azure también por una semana estaba alrededor de los US$25.000!

Conclusión

Windows Azure permitió a ASESOFTWARE sacar en muy corto tiempo (contra reloj) una aplicación de consumo masivo para un gran cliente como lo es el ICFES que ha respondido y superado perfectamente sus expectativas, con unos costos muchísimo menores (8x) y también con la ventaja de que la solución final es totalmente dinámica en su despliegue permitiendo pagar solo lo que se consume, sin necesidad de contratos o tarifas planas que pueden generar desperdicios en la inversión de capital para el cliente.



Leave a Comment
  • Please add 7 and 1 and type the answer here:
  • Post
  • De este caso de éxito me gustan dos cosas, la primera que es colombiano y la segunda que es basado en Windows Azure.

  • Así es Jhonny. En Colombia podemos innovar para bien!

  • Definitivamente top-postWarNov :D Todas las razones están perfectamente sustentadas. Lo que más me gustó fue el ahorro de costos por la aplicación del paradigma de NO-SQL sin duda alguna innovador.Sería genial que hicieras un Caso de Estudio de Éxito en el futuro y que fuera publicado en algún site de Microsoft. Lastimosamente en Nicaragua falta mucho para que Azure sea tomado como una alternativa porque se vive aún el miedo de la seguridad de los datos. Pero con estas iniciativas ese esquema se tendrá que romper tarde o temprano.

    Felicidades!!!

  • Muchas gracias Jimmy. Tienes razón;, el temor al cambio es una barrera muy complicada. Sobretodo en nuestros países latinos, en los cuales el salto tiene que ser más grande desde el mismo paradigma cliente-servidor, a la nube, pues pocos son los ejemplos que tenemos de SaaS o PaaS.

    Afortunadamente aquí se nos dio.

  • Genial! felicitaciones por esa implementación. Tengo una pregunta: por qué usaste 4 Web Roles y ningún Worker Role? (de nuevo pensando en ahorrar costos para mi aplicación, que hasta ahora tiene una instancia de cada Role)

  • @lvbernal:

    Muy buena pregunta Leonardo.. no se usaron worker roles solo por falta de tiempo para desarrollarlo así, solo teníamos un poco más de un día para acabar la aplicación; así que tomamos este acercamiento para agilizar el desarrollo, esto fue válido porque esta aplicación como lo podrás notar solo tiene un par de requerimientos funcionales: recibir un código, consultarlo en el table storage y pintar los resultados en una página web y en un archivo PDF. Cosa que no requiere una escalación a una capa de negocio necesariamente, aunque con tiempo, esto si hubiese sido conveniente. Por ejemplo dejar la tarea de generación de PDFs en un worker role dedicado a ello.

    Como se aprecia entonces, las decisiones arquitectónicas de la aplicación no solo dependen de lo más recomendado a nivel técnico, sino también de los requerimientos no funcionales de la aplicación.

    Usar worker roles nos hubiera ahorrado algo de costos en la aplicación, pero nos hubiera hecho demorar un poco. En este caso la limitante no era costo (pues era muy bajo en cualquier caso comparado con la solución anterior), sino tiempo.

    :)

    Wow.. creo que luego postearé esta respuesta como un post independiente :)

  • felicitaciones, la plataforma esta buena.  Lástima que el icfes no publique más resultados y que todos los colombianos pudieramos saber inmediatamente quien es el mejor icfes y quienes son los mejores,tenemos que esperar casi un año a que los medios registren los premios.  Ojalá fuera como en el pasado, se podían consultar los mejores de colombia,departamento, ciudad y plantel.

    Dejo la inquietud.

  • Hola Walter, como estas

    No sé si este sea el lugar más adecuado para esta inquietud, pero quiero saber si existe alguna forma o herramienta automatizada, que determine en tiempo real cuanto ha sido el consumo que han tenido mis servicios en Windows Azure en una fecha determinada, es decir como una especie de reporte que muestre el consumo total en términos de (Transacciones, almacenamiento, transferencias de datos de entrada y salida, etc.)

    Y así saber si me he excedido en el consumo mucho antes de que se genere la facturación, para poder controlar este consumo.

  • @Julian:

    Hola Julián; por ahora no hay dentro de Azure una utilidad por defecto con esta información. Sin embargo tenemos:

    1. El API de diagnostico; sobre el cual podemos construir aplicaciones que nos indiquen el uso de Azure. Ya hay varias implementaciones de terceros...

    2. Para las suscripciones por paquetes, hay correos que nos indican cuando vamos en 75%, 100% y 125% de nuestro paquete. Observa más detalles en: blogs.msdn.com/.../notificaciones-de-consumo-para-usuarios-de-windows-azure.aspx

  • @ana maria pinto

    Muchas gracias Ana María; de seguro que con estas nuevas tecnologías, ahora va a ser más fácil lograr estas mejoras.

  • @ana maria pinto

    Muchas gracias Ana María; de seguro que con estas nuevas tecnologías, ahora va a ser más fácil lograr estas mejoras.

Page 1 of 1 (11 items)