La semana del 4 de abril tuve la oportunidad de asistir como asistente/oyente al evento de Software Architecture Conference en la ciudad de Nueva York.
El objetivo de este evento, es mostrar los principales tópicos en el contexto de arquitectura de software.
El primer día asistía a dos talleres prácticos, uno impartido por Thoughtworks, en el cual nos enseñaron como ir manejando una aplicación que iba desde el modelo monolítico de multicapa a un modelo de microservicios, llevando esto a conceptos de Continuous Delivery (CD), contenedores (Docker). Lo interesante de este taller fue que mostró que los microservicios no solo es el hecho de hacer un componente de software, sino que también se requiere la automatización de la infraestructura sobre la cual se ejecuta, así como tener un pipeline para llevar el ensamblado y despliegue en dicha infraestructura. Esto es muy importante, por que el desarrollo de software bajo este enfoque no sólo se limita a tener el bloque funcional, sino a también codificar la automatización de la infraestructura. En el ejemplo, usamos Go para manejar el tema de Continous Delivery.
Es interesante como el modelo de múltiples capas es calificado como monolítico. Y la verdad ya lo es. Hace 20 años, dada nuestra capacidad de recursos de cómputo, el modelo era útil e inclusive el dividir en varios componentes una aplicación era demandante en arquitectura física. Hoy ya no, con esquemas de virtualización y de nube una aplicación puede ser procesada en decenas o centenas de servidores.
El otro punto es que el concepto de servidor se está volviendo cada vez menos necesario. El servidor se está volviendo una unidad de procesamiento más, y lo mas importante, no hay que preocuparse por el número de instancias de procesamiento. Es lo que se conoce como serverless computing.
El segundo taller fue después del almuerzo y orientado a Java, y hablar de como integrar Spring con JEE o viceversa, en algunos lados he visto como unas guerras santas entre fanáticos de ambas visiones. Sabiamente los expositores nos explicaron los detalles de como lograr la convivencia de ambos enfoques. A los que están contaminados aún con los cursos monolíticos, ortodoxos y arcaicos que dan en ORACLE de arquitectura JEE, les invito se vacunen y lean este libro.
En paralelo hubo otros talleres interesantes, uno de ellos se saturó, pero afortunadamente aquí están las láminas.
Al otro día, se arrancaron con una serie de platicas (keynotes) bastante interesantes. Una de ellas, sobre Conversational Commerce, muy interesante.
Después, tome la conferencia sobre como en las carreteras de Noruega se está instrumentando para obtener diversas métricas.
La siguiente plática que tome, fue sobre Internet of Things y los diversos esquemas de integración y comunicación. MQTT , Watson, API management y usando BlueMix
Pasando entonces a la siguiente plática, sobre Domain Driven Data , que por cierto, me llama la atención como varios arquitectos aún no identifican el concepto de Domain Driven Design y que es un tema que se está mencionando de manera continua para el diseño de microservicios. Aparecieron varios modelos de base de datos NoSQL y el concepto de Command Query Responsability Segregation (CQRS) . Dado el concepto de microservicios, lo que expusieron en esta platica es que ya la arquitectura depende de un solo repositorio de base de datos relacional, sino que puede existir diversos repositorios y de acuerdo al dominio del problema. Lo que si quiero hacer notar es que esto está llevando a un modelo de sistema distribuido donde el teorema CAP debe ser tomado en cuenta .
Mucha información en menos de un día, verdad? Y aún faltaban dos pláticas mas.
La plática sobre las mejores prácticas para implementar el modelo de arquitectura serverless (aún no me atrevo a dar la traducción en español) que dio el CEO de iron.io . Lo interesante es que iron.io es una compañía que está apostando bastante al concepto de serverless computing , la idea de microcontainers, procesamiento masivo. Sala llena por cierto.
La última del día fue sobre como usar AWS Lambda para implantar una aplicación serverless .
Por cierto, si quieren tener una herramienta que les ayude a definir API Webs, revisen Swagger
Llegó el miércoles, el último día, mas keynotes.
El arquitecto de HomeDepot platicó la estrategia para ir hacia microservicios. Insisto, no es ahora poner en el mapa de trabajo de TI de las empresas el uso de microservicios, pero si están llegando a un nivel de madurez donde la complejidad de las aplicaciones están generando pesadillas tanto en la ejecución como en tiempo de desarrollo, hay que pensar en un cambio.
Les pongo estas ligas de Martin Fowler, donde habla del concepto de microservicios y ojo, las implicaciones. Por favor, comunidad de TI, no caigamos en buzzwords que luego generan los falso profetas (de manera típica, los archienemigos de los arquitectos, ventas).
Uno de ellos fue dado por el director de arquitectura de SalesForce y lo que destaco de esta plática es como la arquitectura se ve beneficiada por incluir conceptos como meta datos, la habilidad de combinar piezas de software y el tratar grandes volúmenes de datos.
Y el último keynote, muy interesante, la continua repetición del dolor en el desarrollo de software. Uno de los puntos, es que muchas organizaciones se la pasan gastando recursos en hacer mejoras que derivan en un impacto mínimo o nulo. Pongo la liga del libro de Janelle Klein. Yo diría, basta de IT Crowd way of life. Una manera responsable de pensar en TI
De ahí, ya la primera plática sobre Unikernels y donde empiezo a oír de Russell Pavlicek, quien busca adelgazar a las Virtual Machines para poder acelerar el tiempo de arranque de instancias, particionar los recursos de acuerdo a los microservicios y no desperdiciar recursos en cargar librerías y procesos innecesarios. Un enfoque es el que está haciendo la comunidad de Xen, con Mirage OS. Me gusto mucho el enfoque de Russell, práctico.
Otra plática, habla sobre como pensar la arquitectura como un sistema biológico.
Y lo que esperaba, ver a Adrian Cockfrot en vivo, quien ayudo a Netflix a poder soportar grandes escalas. Su plática fue sobre microservicios.
Continuado entonces una plática sobre la arquitectura de Netflix sobre nube (AWS)
Y la última del evento, de nuevo fui a escuchar a Rusell Pavlicek, donde su plática fue sobre el tema de hipervisores.
En resumen, un evento interesante, lleno de diferentes enfoques de arquitectura de software, pero bastante orientado a lo práctico, no a lo abstracto. Los expositores son conocidos en su ámbito, muchos de ellos autores de libros de O´Reilly.
No deja de ser apasionante el arte de la arquitectura de software; dado que todo este cuerpo de conocimiento, toca en lo personal como arquitecto, tratar de sintetizar, tomar decisiones para lograr cumplir con las expectativas técnicas de una solución.
El arquitecto de software no deja de seguir tecleando código o instalando/configurando. Es muy importante que conozca lo que implica sus soluciones.
Ojalá las generaciones actuales que luego se coronan de manera inmediata como arquitectos, entiendan que es una gran responsabilidad portar este titulo.
Buen resumen de una conferencia que se ve estuvo muy interesante. Nos muestra la dirección a donde se están moviendo los esquemas arquitectónicos y nos ayuda a conocer la visión que traen muchos de los arquitectos líderes de la industria. En particular agradezco las ligas que se ofrecen, nos permiten adentrarnos en los nuevos conceptos y tendencias que se mencionan.
ResponderEliminarGracias Roberto ! Nos da mucho gusto que haya sido de utilidad la entrada. Saludos :)
ResponderEliminar