Infra definida para el TP2 de MeMo2 @ fiuba

Después de varias averiguaciones y algunas pruebas de concepto ya tenemos bastante encaminado el diseño del pipeline e infraestructura del TP2. El sistema a construir consta de dos aplicaciones/artefactos: un bot de telegram y una web-api.

El bot de telegram lo vamos a correr en kubernetes, más precisamente en el servicio de Kubernetes de Azure utilizando la opción Azure for Students ofrecida por Microsoft, la cual incluye 100 dólares de crédito y no requiere de tarjeta de crédito.

Las web-api la vamos a correr en Heroku pero en lugar de usar el modelo de runtime tradicional de Heroku, vamos a correr la aplicación en un contenedor. Esto es: en lugar de hacer push del código fuente directo a Heroku, lo que hacemos es construir una imagen Docker y luego indicar a Heroku que corra un contenedor basado en esa imagen.

Si bien, en términos de infraestructura a bajo nivel, el bot y la api van a correr en distintos runtimes, a nivel proceso ambas aplicaciones correran como un contenedor Docker. Al mismo tiempo el proceso de build y deploy va a ser el mismo para ambas aplicaciones, ofreciendo al equipo de desarrollo una experiencia de trabajo uniforme. En un escenario real es poco probable utilizar una estrategia de este estilo, porque tener dos plataformas de runtime implica un mayor costo operacional pero en nuestro contexto creemos que puede resultar interesante para mostrar explícitamente a los estudiantes como, a partir de ciertas técnicas, es posible lograr un buen nivel abstracción de la infraestructura.

El pipeline de CI/CD lo implementaremos con GitLab utilizando la suscripción Gold que GitLab ofrece para contextos educativos.

Un detalle que me parece relevante mencionar es que, si bien vamos a utilizar productos/servicios de determinados vendors, tenemos la intención de mantener la menor dependencia posible con caraterísticas específicas/propietarias de cada vendor.

En siguientes artículos explicaré como será el modelo de ambientes y pipelines que armaremos tomando esta infraestructura de base.

Nuevos cursos, nueva modalidad

Desde hace varios años vengo dictando cursos más a allá de mis materias en la universidad. Si bien las temáticas de mis cursos es compartida con los temas que suelo dictar en mis materias, los cursos implican un desafío distinto que amerita una dinámica distinta.

Una materia tiene usualmente (en Argentina) una duración de 16 semanas, lo cual permite “cocinar a fuego lento”, un mismo tema puede verse varias veces, con distintos abordajes, dando al estudiante tiempo y material complementario para digerirlo durante la materia.

Mis cursos han sido típicamente “one-shot”, uno o dos días, consecutivos, varias horas de corrido con duraciones totales variando entre 4 y 16 horas de clase. Sin embargo, para ayudar en el entendimiento de los temas, todos mis cursos tienen una parte práctica importante y es por ello que prefiero utilizar el término “taller” más que “curso”.

Creo que esta modalidad on-shot va bien para cursos/talleres introductorios, donde los participantes vienen a tener un primer acercamiento al tema y se llevan una lista de cuestiones para investigar/profundizar. El tema es justamente que esa investigación/profundización queda en manos del participante y completamente fuera del alcance curso. Para los casos en los que la inversión la hace el propio participante, el retorno de la inversión de haber participado del curso queda a criterio del participante. Pero para los casos en los que la inversión la hace una organización, las expectativas de retorno de la inversión son distintas. Usualmente la organización espera algún impacto positivo en el desempeño de la gente que participa del curso, lo cual me parece completamente razonable.

En 2019 hice un par de experimentos de cursos de “larga” duración, varios encuentros cortos (~90 minutos) a lo largo de varias semanas, con tareas para hacer “fuera del aula”. En aquel momento fueron un conjunto de talleres sobre Docker y Kubernetes y anduvieron muy bien. Esta misma dinámica utilizamos en el Seminario de Software Delivery y también tuvimos buenos resultados. Pero en el caso del seminario fuimos un paso más allá y en el trabajo final les propusimos a los alumnos que trabajen sobre una problemática de su organización. Con esta estrategia estoy diseñando mis nuevos cursos: 100% remoto, varias semanas, con un encuentro semanal de ~90 minutos, con trabajo e interacciones entre encuentros y con actividades de aplicación en el contexto/proyecto/organización de cada participante.

El primer curso que voy a ofrecer aún no tiene título pero tengo la intención de utilizar el stack de herramientas con el que estuve trabajando gran parte de 2020: netCore, Gitlab y Docker/Kubernetes. El foco del curso será Continuous Delivery. En los próximo días estaré publicando más información al respecto.

Balance del 2020

Se fue el 2020, un año particular marcado por una pandemia que nos impacto a todos. Muchos impactos con efectos negativos pero también con algunos efectos positivos.

En mi caso, dentro de la esfera laboral/profesional, el impacto de la pandemia resultó en un balance positivo. A nivel académico no tuvimos mayores complicaciones en la transición a la virtualidad, más aún, consideramos que muchas clases resultaron mejores porque los alumnos podían estar con sus computadoras trabajando durante la clase, cosa que generalmente no es posible cuando damos las clases en la universidad. De hecho, creemos que una vez vuelta la normalidad seguiremos manteniendo la mayoría de clases en modalidad virtual.

En lo que respecta a mi trabajo en la industria, fue uno de mis años record en términos de dedicación. Esto impacto en mi balance industria/academia que en años anteriores venía siendo mucho más parejo.

Dedicación academia vs. industria

La mayor parte de mi trabajo en la industria lo dediqué a trabajar con un equipo de desarrollo. También hice algunas actividades de capacitación y consultoría (en temas de devops y arquitectura).

Dedicación de mis actividades en la industria

Un aspecto en el que la pandemia tuvo un gran impacto fue en lo referente a conferencias y reuniones científicas. Algunas conferencias fueron canceladas, mientras que otras lograron adaptarse a un formato online, lo cual tuvo distinto grado de éxito. Personalmente creo que perder la presencialidad resulta negativo principalmente porque se pierden muchas interacciones humanas (conversaciones de pasillo, eventos sociales, etc). Por otro lado el pasaje a la virtualidad ha permitido la participación en conferencias/eventos a las que tal vez en forma presencial alguna gente no tendría chance de participar. Personalmente participé de 7 conferencias y 4 meetups.

Al margen de la pandemia un hito importante en lo personal es que logré completar mi Especialización en Tecnología Aplicada a la Educación en UNLP con la publicación de mi trabajo de investigación sobre la Enseñanza de Métodos Agiles en Argentina. También dentro del contexto académico publiqué un artículo investigación, envié otro a una revista (que está aún en evaluación), dirigí una trabajo final de carrera y dicté un curso de postgrado.

Releyendo todo esto, creo que a pesar de la pandemia, mi balance del 2020 en lo que respuesta cuestiones laborales/profesionales es positivo. Sin embargo soy plenamente consciente de que mucha gente sufrió grandes dificultades llegando incluso a perder su trabajo, es por ello que espero un mejor 2021 con trabajo para todos y todas.

Iniciativas para abrir la universidad en 2021

Hace tiempo que vengo reflexionando sobre este tema y el año pasado finalmente puse manos a la obra. Durante el primer cuatrimestre de 2020 dictamos, junto a Diego Fontdevila, el Seminario de Software Delivery, una iniciativa para ofrecer desde la universidad un herramienta de formación en un formato no tradicional, para un público con experiencia en desarrollo de software pero sin requerir formación universitaria. Luego, con Diego Marcet, en el segundo cuatrimestre y aprovechando la virtualidad obligada por la pandemia, “abrimos” el curso de Ingeniería de Software de la carrera de Ingeniería en Computación de UNTreF para permitir cursar a gente externa a la universidad.


Para este 2021 tengo la intención de continuar con esta idea de abrir de universidad. En este sentido ya tenemos confirmada la segunda edición del Seminario de Software Delivery (aún no está formalmente abierta la inscripción, pero los interesando pueden contactarme aquí) y también tenemos la intención de volver a abrir la materia de Ingeniería de Software para gente externa a la universidad en el segundo cuatrimestre (compartiré más información llegado el momento).

Adicionalmente a las dos iniciativas mencionadas y en línea con lo que escribí sobre el potencial círculo virtuoso universidad-estado, estoy trabajando junto a gente de una entidad estatal para armar un plan de capacitación anual. Si logramos que esto funcione, es una iniciativa que potencialmente podríamos replicar con otras entidades estatales.

Finalmente, tengo en mente otro experimento: sesiones de consulta para equipos de entidades estatales. La idea es poder asistir “gratuitamente” con sesiones semanales a estos equipos en cuestiones de ingeniería de software. Digo gratuitamente entre comillas porque si bien los equipos/entidades no deberían hacer ningún desembolso económico:

  • Ese desembolso económico ya lo está haciendo el estado al emplearme en la universidad pública
  • Esos equipos/entidades tendrían que colaborar con los estudios de campo de nuestro proyecto de investigación (básicamente participar de alguna entrevista/encuesta o alguna actividad por el estilo)

Aún me faltan definir varias cuestiones operativas y de implementación que iré compartiendo por este medio, pero si ya hay algún interesado en estas sesiones de consulta puede contactarme por aquí.