El pasado martes impartí una charla en el evento de Synnex Westcon Comstor México junto con el equipo de seguridad de Cisco, y me pidieron que hablara un poco del mundo del cibercrimen y el hacking, así que me preparé un charla de cuarenta minutos que os dejo ahora subida a mi canal Youtube - donde tienes todas las que he sido capaz de recuperar de estos últimos veinte años dando conferencias -.
Figura 1: Bad Guys Never Sleep
Como hablar del mundo del cibercrimen y el hacking es un tema muy amplio, decidí centrarme en un ejemplo concreto, como es la estafa de los BitCoins usando famosos para enganchar a las víctimas haciéndolos creer que van a recibir el doble de lo que envíen a una wallet. Por supuesto, es una estafa ya antigua, y los cibercriminales la han ejecutado de diferentes formas:
- Atacanto a Twitter y robando las cuentas privilegiadas de los empleados.
- Robando cuentas verificadas y "pintándolas" como si fueran Elon Musk y otros famosos, como hacemos nosotros con nuestro Sappo para robar los tokens OAuth de Twitter y controlarlas totalmente.
Al final, un mismo esquema de fraude lo han ido ejecutando de diferentes formas usando diferentes técnicas de hacking, así que me servía de hilo argumental perfecto para explicar cómo funciona el mundo del cibercirmen.
Figura 2: Bad Guys Never Sleep por Chema Alonso
Así que si quieres ver la charla, y tienes estos cuarenta minutos, te la dejo disponible por aquí. Lo más importante, si algún amigo, familiar o conocido te cuenta algo de BitCoins que le han dicho... dile que tenga cuidado con cómo gestiona su dinero.
La mayoría de las personas que estéis leyendo este artículo, habréis oído hablar o incluso trabajado con microservicios que llegaron para dividir la estructura de monolito en la parte BackEnd. Una división en partes más pequeñas que simplifican el despliegue, aumentan la escalabilidad de la aplicación y permiten la adopción de nuevas tecnologías dentro de un proyecto.
Figura 1: Aplicaciones web escalables con el Patrón Arquitectónico
Sabemos que es complejo realizar un desarrollo FrontEnd adecuado, y más aún cuando se trata de escalar un proyecto extenso y complejo donde trabajan varios equipos con una estructura frontal monolítica. Es en este punto donde ha llegado el patrón de tendencia este año, MicroFrontEnds, para dar solución a este tipo de problema. Este patrón arquitectónico bebe directamente de la filosofía de estructuración y tratamiento de los microservicios aunque está orientado al desarrollo FrontEnd.
Figura 2: Evolución del patrón de arquitectura
MicroFrontEnds aparece en el radar de tecnología de ThoughtWorks en noviembre de 2016 como una técnica que surge de la necesidad de eliminar el monolito de la parte frontal de una aplicación web. En noviembre de 2017 se denomina esta técnica en estado de prueba. Por último, entre abril de 2019 y mayo de 2020 esta técnica termina por asentarse como un Patrón Arquitectónico.
Este patrón surge de la descomposición de un monolito frontal en partes más pequeñas y simples que pueden ser desarrolladas, probadas e implementadas de manera independiente. De tal forma, se observa una aplicación web como una composición de funcionalidades que se comunican entre sí. Dichas funcionalidades están desarrolladas por equipos independientes que conocen punto a punto la lógica de estas con las que están trabajando.
Figura 4: Organigrama de trabajo con MicroFrontEnds
Por lo tanto, los equipos tienen una base de código más pequeña que tratar y como resultado se obtiene una aplicación más sostenible y fácil de probar. Además de una mayor tolerancia a fallos y brechas de seguridad, ya que este patrón se desarrolla bajo la filosofía DevOps, aunque siempre se puede mejorar con prácticas de desarrollo de código seguro y seguir la corriente de las SecDevOps.
Para entender mejor todo, estas sería las situaciones que resuelve este patrón:
- En determinados proyectos se requiere de la implementación de una aplicación web y puede que en el código de tu proyecto no encuentres el sitio adecuado para dicha implementación.
- Puede que quieras utilizar nuevas features de JavaScript en tu proyecto, pero estas no encajen con las herramientas utilizadas hasta el momento.
- Escalar tu desarrollo haciendo que varios equipos de trabajo puedan desarrollar en el mismo proyecto de forma simultánea.
Dada la independencia de estos MicroFrontEnds se obtienen resultados como mejores tiempos de carga, código con mayor accesibilidad, acotación de errores y, a mi parecer, la característica más interesante, despliegues independientes de las distintas funcionalidades. Lo que resulta una experiencia de usuario mejorada de cara a las actualizaciones en la aplicación web, ya que solo se actualizaría la funcionalidad en cuestión y no toda la aplicación. Este proceso, resultará transparente de cara al usuario final.
Técnicas de implementación.
Se utilizan varias formas de implementar este patrón a la hora de desarrollar una aplicación web, aunque existe un enfoque general entre todas las vías de implementación en el que un contenedor renderiza todos los elementos comunes de la página y orquesta aspectos como la autenticación y la navegación con los microfrontend. Estas son algunas de las implementaciones utilizadas con mayor frecuencia:
Iframes:
Dentro del contenedor principal cada microfrontend se alojará dentro de un iframe que puede residir en otro servidor. Aunque, puede resultar complejo realizar un diseño adaptativo al utilizar este tipo de elementos.
Figura 6: Implementación de MicroFrontEnds con iframes
Múltiples SPA alojadas en distintas URL:
La idea es alojar distintas SPA en las páginas de nuestra aplicación, esto hará que podamos introducir de forma sencilla esta arquitectura en proyectos ya iniciados, aunque la implementación de este patrón requerirá módulos externos para compartir las distintas funcionalidades de la aplicación.
Figura 7: Implementación de MicroFrontEnds con múltiples SPA en distintas URL
Single-SPA “Meta framework”:
Consiste en implementar varios frameworks trabajando en la misma página. Esto requiere de un constructor global para transpilar y orquestar las distintas funcionalidades.
Figura 8: Implementación de MicroFrontEnds con Single-SPA "Meta framework"
Aunque es una tecnología bastante reciente, el patrón de arquitectura basado en MicroFrontEnds es una solución que aporta muchas ventajas al ciclo SecDevOps y beneficios en aspectos como la escalabilidad, sostenibilidad, seguridad y despliegue de una aplicación de gran tamaño.
Figura 9: Implementación del patrón de diseño MicroFrontEnds
Seguramente en un futuro próximo escuchemos hablar más acerca de este tipo de arquitecturas. Aquí os dejamos un vídeo de cómo utilizar este patrón.