Despliegue moderno de aplicaciones

Introducción

La alta demanda de servicios digitales tal como la mensajería, la banca o inlcuso el transporte, ha provocado una revolución en la forma en que se desarolla y se distribuye el software. Hemos pasado de procesos y arquitecturas muy simples pensadas para unos cuantos usuarios, a ciclos de desarrollo y arquitecturas muy complejas diseñadas para soportar cargas de trabajo provocadas por millones de usuarios.

En este contexto de alta demanda, es dónde han surgido sistemas de alta disponibilidad, capaces de satisfacer la demanda de contenidos y servicios digitales. Una de las tecnologías que ha hecho esto posible son los contenedores.

Imaginemos los siguientes escenarios.

Hemos creado un servicio web que permite a los usuarios consultar en tiempo real los resultados de diversos eventos deportivos. Evidentemente, el sistema tiene que responder en el menor tiempo posible y estar el mayor tiempo activo. En este escenario, surgen diversos obstáculos, ya que nuestra misión es mantener la fiabilidad del sistema sin quedarnos en bancarota. Por lo general, los eventos deportivos suceden el fin de semana y entre semana tenemos algunos eventos. Siguiendo esta lógica, esperamos que el número de usuarios sea fluctuante, por lo que debemos evaluar cuál sería la mejor manera de atender esa demanda. Una posible solución es comprar equipos muy grandes para poder responder ese gran número de solicitudes. Sin embargo, el costo-beneficio podría no ser el adecuado, ya que la mayor parte del tiempo, el equipo se encuentra utilizando pocos recursos y en un escenario desastroso, podría no cubrir la demanda y provocar interrupciones en el servico. Necesaitamos entonces, una solución que sea flexible para atender nuestras necesidades.

En un segundo escenario, nos interesa investigar como afecta la emisión de dioxido de carbono al medio ambiente, especialmente a los procesos atmosféricos que provocan las lluvias. Esta investigación es tan compleja que requiere la participación de un equipo multidisciplinario que se distribuye alrededor del mundo. Comenzamos construyendo entonces, un sistema de ecuaciones que modele el fenómeno físico. No obstante, nos damos cuenta que el sistema tiene una solución no analítica, por lo que es necesario resolverlo numéricamente. Es ahí dónde el equipo comienza a programar la solución, pero como comentamos anteriormente, al tratarse de un equipo multidisciplinario y distribuido por todo el mundo, este comienza a tener discrepancias, ya que algunos utilizan sistemas operativos Windows, otros mac y otros Linux. Rápidamente el desarollo del código que resuelve el sistema de ecuaciones se vuelve un caos y el proyecto sufre muchos retrasos, poniéndose en peligro la continuidad del mismo.

En ambos casos necesitamos sistemas que sean homogénemos, que permitan un escalamiento rápido y sobre todo que permitan la portabilidad entre diferentes arquitecturas y sistemas operativos. Es ahí, cuando los contenedores ofrecen una gran ventaja frente a otras alternativas como los serían las máquinas virtuales.

Através de este curso, veremos como estos elementos de software, han evolucionado hasta convertirce en una pieza clave para la industria y como la academia puede aprovechar sus ventajas para acelerar las investigaciones en diversos campos.

Objetivo del curso

Entender bajo que contexto las nuevas tecnologías de despliegue tales como los contenedores, pueden ayudar a acelerar el proceso de investigación, así como sus ventajas y desventajas frente a los métodos tradicionales.

Requisitos

Para poder llevar a cabo este curso, es necesario más no excluyente, contar con lo siguiente:

  • Una computadora con cualquier sistema operativo
  • Al menos 8GB de ram
  • Conexión a internet
  • Conocimiento básico de Linux
  • Conocimiento de algún lenguaje de programación
En caso de contar con pocos recursos computacionales o si prefieres no instalar nadas en tu computadora, puedes tomar el curso utlizando una terminal web gratuita proporcionada por docker. Puedes ir a este link y registrate para utilizarla.