AWS Amplify como serverless: solución JAMstack con Gatsby

AWS Amplify es un servicio de Amazon AWS que puede ser un buen aliado para tu cambio de arquitectura a un enfoque serverless. Si alguno de tus desarrollos web están orientados a una arquitectura de desarrollo web JAMstack, con algún generador de web estática como Jekyll, Hugo o Gatsby, AWS Amplify es la solución que andas buscando.

Conecta tu desarrollo a Amplify, haz llegar tus creaciones a tus usuarios, sin límites ni complicaciones y...¡Rock and Roll!

Artículos recomendados antes de seguir la lectura:

¿Por qué AWS Amplify?

Con AWS Amplify como serverless harás que tu pipeline CI/CD de puesta en desarrollo, test o producción, esté automatizado y escalado.

AWS Amplify es el un buen aliado para tu enfoque a serverless y te permite aprovechar óptimamente las posibilidades y la arquitectura JAMstack; asimismo, posibilita autoescalar todos los recursos web.

Las arquitecturas JAMstack pueden llegar a ser complicadas. Un aspecto que puede llegar a ser una gran pérdida de tiempo es administrar el proceso de implementación; es decir, una vez que realizas actualizaciones a tu web, ¿cómo probar que todo funciona a la perfección? Además de lograr que se implemente de forma escalable para adaptarse a todos tus usuarios con los últimos parches de seguridad y firewall configurados correctamente.

¡AWS Amplify es tu solución como servicio serverless! Nos facilita la gestión de crear, configurar e implementar tus aplicaciones web y/o móviles.

Arquitectura AWS Amplify

Con Amplify no solo dispondrás de un serverless para hospedar tu web estática, también incluye soporte para crear de forma rápida y fácil aplicaciones móviles en AWS.

Amplify te permite configurar rápidamente la autenticación (AWS Cognito), el análisis y la sincronización de datos sin conexión (AWS AppSync) para tus aplicaciones móviles con unos pocos comandos e integrarlos en tu aplicación con unas pocas líneas de código. Todo ello en contexto Decoupled, con lo que te olvidarás por completo de arquitectura de servidores. Próximamente hablaremos en detalle de estas características decoupled que puedes integrar en tus desarrollos móviles.

AWS Amplify en tu pipeline CI/CD

Si implementas algún pipeline CI/CD en tu organización entenderás enseguida como AWS Amplify te permite automatizar todo el pipeline por ti de forma muy eficaz. Veamos cómo:

  1. Cuando se realizan nuevos cambios en la branch Git seleccionada, AWS Amplify reaccionará compilando tu código, gracias a los WebHooks que implementa herramientas como GitHub.
  2. Una instancia de Elastic Compute (EC2) extraerá el nuevo código de GitHub y ejecutará cualquier prueba automatizada.
  3. La instancia Elastic Compute (EC2) construirá el código en una imagen Docker que AWS implementará por ti para compilar y acabará alojando todo el contenido en un bucket AWS S3 autoescalado en los CDN globales de AWS con Cloudfront.
El pipeline CI/CD de compilación en AWS Amplify reacciona con un commit Git. El código se compila y se implementa en un bucket S3.

Podrás adaptar este pipeline con tus propias prácticas de Workflow en git. Donde tu branch seleccionada es la que compilará; cuando codifiques nuevas funcionalidades simplemente haz un ‘pull request’ en la branch configurada para que AWS Amplify reaccione con un nuevo Build & Deploy.

Una vez que el código está alojado en el bucket S3, Cloudfront permitirá acceder a tus usuarios al contenido mediante el CDN para distribuir tu código a servidores de todo el mundo. Cloudfront también agregará administración de certificados SSL.

Un usuario que solicite ver tu página web de Gatsby en www.yourdomain.com llegará primero a Route 53, que dirigirá la solicitud a Cloudfront. Si los archivos están disponibles, se responde la solicitud web, pero si es la primera vez que se solicitan, Cloudfront obtiene el contenido desde el bucket S3 en el que está todo el contenido web alojado.

Beneficios de AWS Amplify como serverless

El santo grial para un desarrollador es preocuparse únicamente por el código frontend y backend que desarrollar y tener todo lo demás totalmente automatizado; las pruebas unitarias, la implementación, el escalado del sistema...

Amplify proporciona varias características principales que lo hacen posible:

  1. Establece un pipeline integración continua automatizada / implementación continua (CI/CD), para probar, construir e implementar automáticamente tu código.
  2. Amplify puede mantener entornos separados para que puedas disponer de diferentes escenarios, como pueden ser desarrollo, test y producción, todos ellos totalmente separados. Cada escenario tiene sus propios recursos AWS.
  3. Implementa el código en un bucket S3 detrás de un CDN, que será infinitamente escalable. Además de poder gestionar los certificados SSL que necesites.
  4. Amplify puede hacer mucho más, como la autenticación / autorización de usuarios, análisis, informes de errores e implementación de bases de datos.

Costes de AWS Amplify

Los costes de la solución para hospedar una web como Gatsby son bastante bajos, en torno a unos $7-$10. Estos costes dependen del tráfico de la web. Esto significa que aumentará basándose en la cantidad de usuarios que visiten la web.

Calcular los costes reales es complicado, ya que dependerá de las características de uso de tu web. Además, no olvides que el beneficio principal es que no necesitas administrar ningún servidor, ni pensar en la disponibilidad y escalabilidad de tu web. De todo esto se encarga AWS Amplify, aprovechando los servicios completamente administrados como AWS AppSync, AWS Lambda y otros, de manera que no necesitas aprovisionar o gestionar ninguna infraestructura. Los servicios se escalan según las necesidades del momento, así que solo pagarás por los recursos utilizados.

Conclusión

Las implementaciones serverless se están volviendo cada vez más populares ya que te permiten implementar tu código de forma automatizada y dejar que proveedores cloud como AWS se encarguen de todas las tediosas tareas DevOps, asegurando el autoescalado, manteniendo copias de seguridad y olvidándote de parches en sistemas operativos, fallos de hardware, etc.

¿Utilizas servicios cloud serverless? ¿Qué proveedores cloud utilizas? ¿Qué herramientas JAMstack utilizas? Si necesitas soporte acerca de tu pipeline JAMstack, no dudes en contactar y hablemos.

Photo by Clem Onojeghuo on Unsplash