Lo que voy a mostrarles ahora es un proyecto en el que trabajé en los últimos dos años como miembro del equipo de Amplify UI, y les contaré algunas de las decisiones que tomamos y cómo resultaron. ¿Quién soy yo? Soy un desarrollador en AWS que trabaja en las bibliotecas de código abierto de Amplify. Es posible que me hayan visto en línea. Tengo un canal de YouTube llamado ProgramWithEric en eric.video. También he escrito algunas publicaciones en blogs y también soy un defensor del desarrollo, por lo que recientemente he cambiado de roles para ser un DA, lo cual ha sido increíble ya que puedo hablar con muchos desarrolladores y hablar realmente sobre Amplify y todas las herramientas que tiene.
Me gusta comenzar la charla con este cómic de XKCD que habla sobre cómo escribir buen código. En la parte superior, puedes ver que comienza con `comenzar proyecto`, luego `hacer las cosas bien` o `hacerlas rápido`, y luego, si vas rápido, ¿funciona ya? O si haces las cosas bien, ¿escribes buen código? ¿Ya está hecho? Pero en la parte inferior, a menudo sucede que tiras todo tu trabajo y comienzas de nuevo. Tan pronto como creas código en cualquier tipo de proyecto, después de que se supone que has terminado, se convierte en algo que es una aplicación heredada que necesita ser mantenida. Y lo que sucede es que pasa un año, dos años, llegan nuevos equipos, llegan nuevas personas, la tecnología está obsoleta, a menudo se vuelve a escribir. Y eso es algo similar a lo que sucedió con este proyecto del que voy a hablarles.
El proyecto del que quiero hablar en esta charla es lo que describo cariñosamente como el autenticador, un sistema de autenticación. Es un widget, es como un componente que puedes agregar a tu aplicación que te brinda autenticación para que puedas iniciar sesión en una aplicación, puedes crear una cuenta nueva. Pero también tiene autorización, por lo que está respaldado por Cognito para que puedas proteger tus rutas solo para usuarios autorizados. Es solo una cantidad mínima de código de boilerplate que agregas a tu aplicación para agregar un sistema de autenticación y autorización. Y es completamente personalizable, admite todo tipo de cosas como inicio de sesión federado con Google o Amazon, y también admite autenticación de múltiples factores, por lo que fue un proyecto bastante grande para asumir.
Ya teníamos dos versiones anteriores de este Authenticator en uso. Originalmente se escribió, creo, alrededor de 2019, donde se utilizaba una versión muy antigua de Vue 2. Luego se reescribió para usar componentes web y Stencil. Y esta fue nuestra tercera ronda de reescribir esta aplicación, este componente, para que fuera más fácil de usar. Descubrimos que el uso de componentes web y Stencil tenía muchos problemas interesantes, especialmente con los administradores de contraseñas y la forma en que funciona el DOM, y encontramos algunos problemas de personalización. Así que decidimos reescribir este componente web, que en realidad funcionaba no solo para Vue, sino también para React y Angular, y reescribirlo también en las bibliotecas nativas que admiten. Así que reescribimos el Authenticator utilizando Vue 3. Y les mostraré cómo funcionó.
A medida que se desarrollaba este proceso, inicié el equipo, como dije, hace un par de años, y creamos una lista de requisitos que queríamos asegurarnos de cumplir. Teníamos estos requisitos. En primer lugar, la accesibilidad era extremadamente importante, y profundizaremos en eso. También queríamos asegurarnos de tener un tamaño de paquete pequeño. Una cosa que a menudo sucede con los proyectos de código abierto es que los agregas a tu aplicación y luego notas que el tamaño del paquete se duplica o se triplica. Y queríamos asegurarnos de que pudiéramos hacerlo lo más pequeño posible. Además, dado que estábamos reescribiendo el Authenticator de Vue, queríamos asegurarnos de incluir también código para React y Angular y poder reutilizar código.
Comments