Debo confesarlo.

Desde hacia varios años, no asistía a una conferencia tecnológica grande. Había olvidado la energía tan bacana que se siente al estar rodeado de tantas personas apasionadas por la tecnología.

Este año tuve la oportunidad de asistir a la conferencia .NET Conf Colombia v2018. Además de participar como asistente, mi amigo Leonardo Vargas y yo dictamos un taller de microservicios con AWS Lambda y .NET Core.

Como siempre que termina una conferencia de estas, sales con tu cuaderno lleno de apuntes y un montón de ideas dándote vueltas en la cabeza. En esta ocasión, quiero compartirte las principales ideas y conceptos que me quedaron del evento. Más allá de hablarte de tecnologías específicas, quiero mostrarte algunos temas que deberías tener en tu radar cuando estés buscando algo nuevo para estudiar e implementar.

Así que empecemos.

Microservicios

Para mí, este fue el eje central del evento. Muchas de las charlas (incluida la nuestra) tocaron directa o indirectamente este tema.

Por si no estás familiarizado, piensa en un microservicio como una parte de tu sistema que se ejecuta de forma independiente a las demás. Es un enfoque contrario al esquema tradicional de aplicaciones monolíticas, donde tu aplicación se desarrolla y despliega como un único bloque.

API Gateway

Cuando se tienen múltiples microservicios (decenas e incluso centenas), una topología muy común es tener un gateway o fachada que permita el acceso controlado a estos. A este gateway normalmente se le llama API Gateway. Sobre este tema, Julio Avellaneda dio una charla muy interesante, enfocada en API Management de Microsoft Azure.

Algunos de los retos con microservicios con los que nos ayuda un API gateway son los siguientes:

  • Comunicación.
  • Automatización.
  • Monitoreo.
  • Administración.

Orquestación de microservicios

Un paso más allá de tener un API gateway, es contar con una plataforma avanzada que se encargue de aspectos como orquestación y despliegue de microservicios. De esto nos habló Guillermo Bellmann en su charla sobre Azure Service Fabric. Es una plataforma que se puede ejecutar tanto en la nube de Azure como on-premise.

Estrategia Lift & Shift

¿Cómo puedes iniciar el paso hacia la nube? Si estás empezando una aplicación desde cero, no hay tanto problema. Pero, ¿qué sucede si es una aplicación ya existente?

Relacionado con el tema, Rodrigo Díaz Concha nos habló sobre la estrategia Lift & Shift. En esta, lo que se busca es un camino más rápido para llegar a la nube, sin tener que modificar mucho el código actual. En esta estrategia es muy importante usar contenedores (como Docker), para que la transición sea lo más fácil posible.

Una vez tengas tu aplicación en la nube, puedes empezar a aprovechar sus beneficios, como automatizaciones con DevOps, monitoreo, entre otros.

Los microservicios requieren de buenas bases de diseño de software. Pásate por mi mini curso gratuito de principios de diseño para que aprendas más sobre el tema.

Diseñando nuestro modelo con DDD

Personalmente, este era el tema que más esperaba, y qué mejor que aprender sobre este con Julie Lerman.

Domain-driven design (DDD) es un tema extenso. El mejor punto de partida para entenderlo es el libro de Eric Evans.

A continuación voy a mencionar algunos aspectos claves. El primero es que DDD se divide en diseño estratégico y diseño táctico.

Diseño estratégico

Es un diseño del dominio del negocio a alto nivel, donde se busca:

  • Analizar y modelar el problema del negocio.
  • Identificar el dominio principal, los sub-dominios que lo soportan, y los dominios genéricos.
  • Identificar las mejores estrategias para resolver problemas.

Diseño táctico

Este es el diseño de “bajo nivel” con el que estamos más familiarizados. En este buscas identificar los siguientes elementos:

  • Entidades.
  • Value objects. Este es un concepto útil, pero difícil de asimilar. Estos objetos se caracterizan por ser:
    • Objetos que no tienen una propiedad que los identifique.
    • Inmutables.
    • Usados como propiedad de una entidad.
  • Repositorios.
  • Fábricas.
  • Agregados.

Al igual que los microservicios, nos ayudan a separar el sistema a partir del dominio del problema y no a partir de elementos técnicos (como capas y componentes).

Llevando inteligencia artificial a nuestras aplicaciones

Interfaces conversacionales

Uno de los casos que más llamó mi atención fue el presentado por Luis Emilio Linares. En su charla, contó la experiencia de Avianca con su bot Carla. Mas allá de narrar lo bonito de la inteligencia artificial, la nube y el desarrollo de bots, contó su experiencia real implementándolo.

Algunas de las lecciones aprendidas que nos compartió:

  • Escoger bien la zona de la nube donde se va a desplegar. No todas las zonas soportan los mismos servicios y sus versiones.
  • Tomar decisiones basadas en los datos.
  • Los chatbots no están pensados para ser multipropósito. Es importante enfocarlos para poderlos entrenar bien.

Inteligencia artificial y transformación digital

El keynote de Miguel Mendoza fue muy interesante. La importancia de la inteligencia artificial para la transformación digital fue uno de los puntos que más enfatizó. Además, del progreso de Microsoft en el área.

Otros temas

WebAssemby y Blazor

Por si no estás familiarizado, existe un esfuerzo grande por llevar lenguajes de programación como C, Rust y C# a la web. De forma nativa. Es decir, esto no es la reencarnación de Flash o Silverlight (Dios nos proteja). La iniciativa se llama WebAssembly.

Relacionado con este tema, Andrés Fontán nos habló de Blazor. Una iniciativa de Microsoft que utiliza WebAssembly para crear páginas Razor que se ejecutan en el navegador.

Si no estás familiarizado con Razor, piensa que es como embeber código en una página que finalmente se convertirá en HTML. Muy similar a lo que hacen PHP y JSP.

Computación cuántica

La charla de Walter Novoa fue la locura. Literalmente. La computación cuántica abre la puerta a capacidades de cómputo con las que hoy soñamos.

Si quieres estudiar algo del tema, te dejo este link. Además, Microsoft está trabajando en el lenguaje de programación Q#, para el desarrollo de aplicaciones cuánticas.

Cierre

En el evento hubo muchísimas charlas y talleres. No le hace justicia a todo el contenido e información que se difundió en el evento. Este artículo es solo un abrebocas de los muchos temas que se hablaron y discutieron.

Aprovecho esta ocasión para felicitar a los organizadores de la conferencia. El trabajo y amor que pusieron fue impresionante, y lograron un evento de gran calidad. Espero poder acompañarlos en el 2019.

Pregunta para ti: ¿cuáles de los temas que mencioné te gustaría ver en próximos videos y artículos?

Únete a mi lista de correo.
Te avisaré de nuevo material que te ayude a ser un mejor desarrollador o arquitecto.

 

Algo de microservicios, DDD e inteligencia artificial

Educador, desarrollador y arquitecto de software. Ha enseñado distintas tecnologías a profesionales en varias partes del mundo. Ingeniero y geek apasionado por el trabajo remoto.