Header Ads Widget

Ticker

6/recent/ticker-posts

AWS Amplify

 Últimamente pasé un poco de tiempo jugando con AWS Amplify. Es un marco que proporciona una biblioteca, herramientas de línea de comandos y componentes de interfaz de usuario para comenzar rápidamente con las funciones básicas que son comunes en la mayoría de las aplicaciones. El marco es compatible con aplicaciones iOS, Android, Web y React Native. Me concentré en la parte web del marco que tiene soporte para React, Angular y Vue.

La biblioteca proporcionada incluye almacenamiento (base de datos y archivo), API (basadas en Gateway / Lambda y AppSync), autenticación (Cognito), análisis y PubSub / Notifications.

Un proyecto React

Las guías de inicio rápido son bastante completas. He utilizado el React Guía . Instalar la línea de comandos de Amplify y configurar con mi cuenta de AWS fue muy sencillo. En menos de 15 minutos tuve un proyecto React simple implementado en S3 con Signup / SignIn Auth habilitado. El proceso de registro utiliza Cognito para administrar los grupos de usuarios y proporciona verificaciones de usuario basadas en correo electrónico o texto.

Agregar Analytics también es bastante sencillo. Amplify utiliza AWS Pinpoint para realizar un seguimiento automático del comportamiento del usuario. Puede enviar estos eventos a Kinesis para procesarlos en tiempo real si es necesario.

Cuando inicializa Amplify dentro de su proyecto de React con el amplify initcomando, el marco crea algunos roles de IAM, Cloud Formation Stack y un depósito de S3 para las implementaciones de alojamiento. También almacenará la configuración actual en el amplifydirectorio en la raíz de su proyecto.

API de backend

Amplify tiene soporte para las API REST y GraphQL. Para GraphQL, utiliza AppSync, para REST crea puntos finales Lambda y API Gateway. Siguiendo los valores predeterminados en ambos casos, los datos finalmente terminan en una tabla de DynamoDB. En el caso de AppSync, también puede dirigir a Lambda, RDS, etc. En el caso de REST, también puede crear su código Lambda personalizado detrás de la API.

Encontré que la solución REST es bastante engorrosa, propensa a errores y, francamente, el código proporcionado para la operación predeterminada de Lambda para DynamoDB no parece estar bien diseñado. Crear y actualizar funcionó para la API REST y la operación Lista no funcionó como se esperaba. Tendré que profundizar en el código Lambada para ver qué va mal allí. La solución GraphQL parece más limpia, en oposición a REST, con menos código generado personalizado.

Como ocurre con la mayoría de los frameworks, donde se genera código, mi incomodidad crece a medida que aumenta la complejidad del código generado. El código generado suele ser bastante opaco y, a menudo, no sigue las pautas de Diseño simple y Código limpio. También cae en la brecha entre el código administrado por el proveedor y el código personalizado y genera problemas más adelante cuando ciertos aspectos no funcionan como se esperaba o existe la necesidad de personalizar en una dirección que no es explícitamente compatible con el marco.

Otro problema aquí es que la configuración de la prueba unitaria para su Lambda no es muy clara. Lambda se administra como un artefacto de configuración de Amplify, se mantiene en el amplifydirectorio de su proyecto y se elimina si invoca el comando amplify delete.

Aconsejo, si necesita crear una API REST, entonces no use la opción "CRUD Lambda", en su lugar use la opción donde crea una función lambda esqueleto detrás de la puerta de enlace API o, mejor aún, no use Amplify en absoluto para ese propósito . Sin embargo, recomendaría administrar la configuración de la API GraphQL (AppSync) a través de Amplify porque hay muy poco "código de pegamento" del que debe preocuparse.

La biblioteca JS

Encontré que la biblioteca Amplify JS es bastante intuitiva. Usar la biblioteca para autenticarse con Cognito y luego llamar a otros servicios autorizados de IAM, como AppSync, API Gateway, Lambdas, etc. es muy interesante. Parece que es la forma recomendada por Amazon para invocar sus servicios desde los navegadores o sus aplicaciones nativas. La biblioteca, por supuesto, se puede utilizar independientemente de los componentes Amplify Cli y UI.

Los componentes de la interfaz de usuario

El marco viene con los componentes Autenticación, Almacenamiento (Selector de fotos / Álbum) y Chatbot. Probé los componentes Auth y Storage. El componente de autenticación es muy maduro y el único que vale la pena mencionar. Permite la personalización de apariencia, así como la captura de campos obligatorios durante el proceso de registro. El componente también proporciona inicios de sesión en redes sociales si está utilizando la función Identidades federadas de Cognito. Los componentes de almacenamiento son bastante básicos en este momento.

La línea de comandos

La CLI es fácil de configurar y trabajar con entornos DEV / TEST / PROD es sencillo. No hay mucha documentación en este momento sobre lo que hace detrás de escena. Aunque puede resolver algo de eso desde la salida de la línea de comandos, la pila de formación de nubes y otra configuración en el amplifydirectorio. Hace un buen trabajo al eliminar todos los recursos de la nube, amplify deletepero deja algunos atrás, como el depósito S3 de implementación y algunos roles de IAM. Como se discutió en la sección Backend API, el principal problema que veo con esto es la naturaleza opaca de lo que hace y la calidad / complejidad de parte del código que genera.

Pruebas y entornos de prueba

A diferencia de Serverless y ClaudiaJS , Amplify tiene muy poco soporte para pruebas automatizadas. Permite múltiples entornos en los que puede seguir el flujo de trabajo de Git desde Dev a Test y Prod. Sin embargo, por ahora, no hay forma de eliminar una infraestructura más engorrosa o proporcionar un equivalente local que sea rápido. En mi opinión, la falta de soporte para proporcionar un entorno autónomo con fines de prueba reduce drásticamente la idoneidad de Amplify para proyectos más grandes y estratégicos.

Conclusión

En general, encontré que Amplify es excelente para iniciar un proyecto / prueba de concepto con la autenticación de usuario y análisis ya incorporados. Ya es hora de que dejemos de reinventar la rueda de autenticación / autorización / administración de usuarios. No recomiendo administrar su API REST a través de Amplify, pero GraphQL / AppSync es una buena opción (solo si eso se ajusta a su problema, por supuesto). Las opciones de personalización para sus componentes de interfaz de usuario son bastante completas, por lo que su aplicación / prueba de concepto puede madurar considerablemente antes de que sienta la necesidad de una solución más personalizada.

Encontré que JS Libaray y el componente Auth UI son la parte más prometedora del marco y lo usaría si necesito comenzar rápidamente en proyectos futuros.

La falta de soporte para las pruebas automatizadas me impide recomendar Amplify Framework completo como una solución viable para proyectos más estratégicos, con suerte eso y los componentes de la interfaz de usuario mejorarán en el futuro.

Publicar un comentario

0 Comentarios