Post Top Ad

Your Ad Spot

sábado, 1 de agosto de 2020

Una guía para previsualizar implementaciones con CI / CD sin servidor

En esta guía, explicaré qué son las implementaciones de vista previa de Framework Pro, por qué querrá aprovecharlas y luego le mostraré cómo habilitarlas en sus propias aplicaciones. Usaré una versión de un servicio de conteo de votos de canciones que creé llamado Serverless Jams para ilustrar esto y puedes seguirme paso a paso.

Entonces, ¿qué son las implementaciones de vista previa?

Es posible que esté familiarizado con el concepto de implementaciones de vista previa de herramientas frontend como Netlify que le permiten crear una vista previa de las compilaciones frontend antes de que se fusionen en un sitio web de producción.
Bueno, en Serverless pensamos: "¿Por qué no tenemos eso para nuestros backends?"
En el pasado, la respuesta a esta pregunta ha sido simple: cuesta demasiado. En los días de las costosas y extensas infraestructuras de backend, se requería demasiado dinero y tiempo del desarrollador para replicar estos entornos de manera efectiva para las pruebas y la puesta en escena, y mucho menos para cada RP.
Pero con las aplicaciones sin servidor, los servicios administrados y las arquitecturas de microservicios, ese ya no es el caso. Tome un microservicio de AWS típico con el marco sin servidor. ¿Qué recursos están incluidos? Probablemente algunos de estos:
  • Funciones Lambda
  • Puntos finales de API Gateway
  • Tablas DynamoDB
  • Colas SQS
  • Temas SNS
  • Cucharones S3
  • Parámetros de SSM
¿Qué características comparten estos recursos? Son prácticamente todos los servicios de estilo de pago por uso o de pago por uso / invocación o se pueden configurar de manera muy económica. Esto significa que podemos crear una pila separada completa de nuestra infraestructura para cada rama de características sin gastar demasiado.

¿Por qué usar implementaciones de vista previa?

Los beneficios de las implementaciones de vista previa para el código frontend son claramente evidentes: obtiene una URL de vista previa de una implementación y puede ver qué cambió y asegurarse de que se vea genial. Entonces, ¿qué obtenemos realmente de hacer algo similar para el backend? Vamos a ver.
Pruebas automatizadas y protección sin servidor
Cuando cree su Implementación de vista previa, el sistema Framework Pro CI / CD seguirá ejecutando las Salvaguardas que haya configurado para el defaultperfil. También tendrá todas las pruebas automatizadas que haya configurado para la implementación. Esto le brinda los mismos beneficios que de otro modo podría haber esperado hasta un entorno de ensayo para comparar.
Pueden complementar CI / CD existente
Puede usar las implementaciones de vista previa en combinación con CI / CD sin servidor para etapas como producción y puesta en escena. O bien, puede usarlos además de las herramientas de CI / CD existentes que tenga. ¿Ya estás usando otra herramienta para tu flujo de trabajo? ¡Excelente! ¡Todavía puede agregar implementaciones de vista previa sin interrumpir ninguno de sus procesos existentes!
Un ambiente limpio para la revisión del código
Debido a que está revolucionando un conjunto completo de infraestructura, es temporada abierta para que los revisores de código jueguen con los puntos finales API y los recursos de infraestructura.
Pueden ejecutar pruebas manuales para confirmar que la implementación cumpla con las expectativas, ejecutar pruebas de contrato de API contra los puntos finales de API que se crean o integrar la rama de características en las interfaces locales para una experiencia de prueba más completa. Esto puede ser especialmente útil cuando desea la validación de un equipo frontend sobre la funcionalidad esperada para una nueva API. Y debido a que la rama de vista previa es independiente de otros entornos, no tienen que preocuparse por pisar ningún dedo durante la revisión.
Después de esto, pueden volver directamente al RP y asegurarse de que cualquier problema y comentario que descubran se aborde antes de que el RP se fusione en un entorno de preparación.
Spin Up y Spin Down automatizados
Debido a que todos estos recursos se activan automáticamente al abrir el RP, no hay un proceso manual para que el desarrollador o los revisores creen un entorno completo para probar. La mejor parte es que cuando el RP finalmente se cierra o se fusiona, puede configurar su implementación para eliminar automáticamente los recursos de infraestructura que se crearon en AWS.

Cómo usar implementaciones de vista previa

Entonces, ¿cómo configuramos todo esto? En esta sección, le explicaré cómo comenzar con las implementaciones de vista previa. Podrá seguir todos los pasos clonando mi proyecto de Implementaciones de vista previa sin servidor y usándolo en su propia cuenta de Framework Pro .

Prerrequisitos

Para comenzar con las implementaciones de vista previa, necesitará una cuenta de Framework Pro. Puede obtener una cuenta gratuita para uso personal aquí y configurarla siguiendo estos pasos .
A partir de esta publicación, las implementaciones de vista previa requieren que:
  • Ten tu código en GitHub
  • Implementar servicios en AWS
  • Estar utilizando Node o Python
  • Estaré usando una versión reciente de Serverless Framework (estoy usando v1.62.0)
Una vez que se cumplan todos estos requisitos, debería poder configurar su repositorio para usar implementaciones de vista previa.

Configuración de implementaciones de vista previa

Primero, deberá seguir algunos pasos para que cualquier CI / CD funcione con su cuenta de Framework Pro. Los pasos se documentan aquí, pero veamos juntos juntos.
1. Enlace su cuenta de AWS a un perfil predeterminado
Al usar implementaciones de vista previa, estaremos implementando un nombre de etapa basado en el nombre de la rama de la característica. Esto ayuda a evitar conflictos con los nombres de los recursos porque los nombres de las ramas de características deben ser únicos.
Esto también significa que debemos configurar el perfil de implementación de Framework Pro "predeterminado" con un rol para que pueda implementar ramas de características. Puede hacerlo haciendo clic en el menú de perfiles y luego haciendo clic en el perfil "predeterminado".
Captura de pantalla de perfiles
A partir de aquí, deberá configurar una "cuenta de AWS compartida" para usar al implementar sus implementaciones de vista previa:
Captura de pantalla del perfil predeterminado
Esta configuración requerirá que cree un rol de AWS IAM si aún no lo ha hecho y le otorgue permisos a Framework Pro para implementar sus servicios. Una vez que guarde el perfil predeterminado, puede pasar a implementar y configurar su servicio con implementaciones de vista previa.
2. Obtenga su configuración de repositorio de GitHub
Para este ejemplo, usaré una versión de Serverless Jams, un sistema de conteo de votos para diferentes canciones relacionadas con la codificación. Abriremos una rama de PR de características para agregar alguna funcionalidad a Jams sin servidor después de crearla en nuestro propio repositorio de GitHub.
Siga adelante e inicie sesión en GitHub y tómese un momento para crear un nuevo repositorio de GitHub . Puedes hacerlo público o privado, solo dale un nombre memorable porque tendremos que encontrarlo más tarde. Llamaré al mío preview-deployments-test:
Captura de pantalla de la nueva página de creación de repositorios en GitHub
Luego copie la URL de git para su repositorio para más adelante. El mio es:https://github.com/fernando-mc/preview-deployments-test.git
Necesitamos hacer este paso porque necesitaremos nuestro propio repositorio en nuestra propia cuenta de GitHub para insertar el código y luego configurarlo con las implementaciones de vista previa más adelante.
Después de crear ese repositorio, puede clonar el código que usaremos:
  • Corre git clone https://github.com/fernando-mc/serverless-preview-deployments.gitpara obtener el código
  • Ingrese el directorio del proyecto con cd serverless-preview-deployments
  • Luego cambie el origen de git con git remote set-url origin <YOUR_GIT_REPO_URL>, por ejemplo, el mío sería:git remote set-url origin git@github.com:fernando-mc/preview-deployments-test.git
  • Puede confirmar que ha actualizado correctamente la URL remota con git remote -v
  • Luego, ejecute git push origin masterpara enviar este código a su propio repositorio.
Estoy saltando a través de todos estos aros para asegurarme de que este repositorio sea suyo y solo suyo y que no esté asociado con el mío de ninguna manera. De esa manera, puedo asegurarme de que no abra inadvertidamente solicitudes de funciones contra mi repositorio, lo que desafortunadamente le fallará.
Con esta configuración de repositorio, ahora necesitamos crear y configurar una aplicación en Framework Pro.
3. Configuración de su aplicación en Framework Pro
Navegue hasta el tablero de Framework Pro y haga clic en el botón "Agregar aplicación". Agregue una aplicación y asegúrese de actualizar el nombre de la aplicación y los valores de la organización dentro de serverless.ymlsu proyecto recién enviado.
Una manera elegante de hacer esto es correr serverless --org orgname --app appnameTambién puede abrir el serverless.ymlarchivo y confirmar que ve algo como esto:
1org: fernandosdemos
2app: preview-deployments
3service: serverlessjams
¿Dónde fernandosdemosestá el nombre de su organización y el nombre de preview-deploymentssu aplicación? A continuación, asegúrese de guardar el serverless.ymlarchivo y pulse este cambio en el repositorio GitHub con: git add . && git commit -m "update app and org" && git push origin master.
Ahora que tiene los valores correctos de la organización y la aplicación, puede conectar GitHub. Haga clic en su aplicación y visite la pestaña "configuración de ci / cd". Luego, conecte su cuenta de GitHub e instale la aplicación GitHub sin servidor.
Captura de pantalla de conectar GitHub
Si tiene varias organizaciones asociadas con su cuenta, tendrá que elegir la que puso el repositorio.
Captura de pantalla de la selección de la cuenta Org o Usuario en GitHub
Después de esto, al menos deberá otorgar permisos para acceder al repositorio que acabamos de crear.
Captura de pantalla de la selección de repositorios en GitHub
En algún momento, es posible que también tenga otra pantalla o dos que le soliciten que instale la aplicación sin servidor en GitHub. Una vez que haya terminado con este proceso, puede regresar al panel de Framework Pro y ahora debería ver un menú desplegable de repos para elegir:
Captura de pantalla de la conexión del repositorio en el panel de Framework Pro
Después de seleccionar el repositorio que está utilizando, las implementaciones de vista previa deben configurarse de manera predeterminada como se muestra a continuación:
Captura de pantalla de la configuración de implementación de vista previa
También puede configurar implementaciones para otras ramas (como cada vez que se realizan cambios en el maestro). Pero por ahora, solo guarde la configuración y continúe.

Prueba de implementaciones de vista previa

En este ejemplo, tendremos una masterrama en su repositorio de GitHub. Cuando se realiza un RP contra la mastersucursal desde una sucursal característica, queremos crear una implementación de vista previa para ese RP. Para configurar todo esto, regrese a su código y ejecútelo git checkout -b preview-test-featurepara crear una nueva rama de características. Luego, en el backend/vote.pyarchivo, cambie el entero en la línea 44 de 14Esto nos hará votar por 4 en lugar de por 1. Ahora, agregue y presione los cambios:
  • Corre git add .para agregar tus cambios
  • Entonces comete el cambio git commit -m "vote by 4"
  • Y finalmente empujarlos a la rama característica en el origen con git push origin preview-test-feature
El resultado de esto debería incluir algo como esto:
remote: Create a pull request for 'preview-test-feature' on GitHub by visiting:
remote:      https://github.com/fernando-mc/preview-deployments-test/pull/new/preview-test-feature
Si ve eso, puede hacer clic en el enlace para abrir automáticamente un RP. De lo contrario, visite su repositorio en GitHub y abra un PR manualmente:
Captura de pantalla del botón Abrir solicitud de extracción
Luego, abra el PR:
Captura de pantalla de la página de creación de solicitud de extracción
Después de abrir el PR, debería ver las comprobaciones de GitHub ejecutándose en su PR de la siguiente manera:
Captura de pantalla de las comprobaciones de vista previa ejecutadas en GitHub por Serverless
Si ve una falla como esta, haga clic en "Detalles":
Captura de pantalla de una compilación fallida en GitHub
Esto debería dirigirlo a la sección de implementaciones del panel de Framework Pro. Desde allí, puede revisar el registro de su implementación de vista previa para ver qué sucedió:
Captura de pantalla de un registro de compilación fallido en Framework Pro
Si siguió todos los pasos anteriores anteriores, su compilación probablemente tuvo éxito, pero también podría ver un error que lo ayudará a solucionar lo que falló en la compilación. En este caso, vemos un error relacionado con nuestro perfil de implementación: "No se encontraron las credenciales de proveedor de AWS. Aprenda cómo configurar las credenciales de proveedor de AWS en nuestros documentos aquí: http://slss.io/aws-creds-setup ".
Si vio este error, asegúrese de configurar el perfil de implementación mencionado en el paso 1 anterior y luego envíe una actualización a la rama de vista previa para que se reconstruya. Después de hacer esto, (o si no cometió este error en primer lugar) debería ver esto:
Captura de pantalla de una implementación de vista previa exitosa en GitHub
Al hacer clic en el enlace "Detalles" dentro de la comprobación sin servidor, debería dirigirse al panel de Framework Pro, donde puede revisar los registros de la compilación:
Captura de pantalla del registro de implementación exitoso en Framework Pro
Debería ver que se ejecutan las salvaguardas configuradas contra su implementación:
Captura de pantalla de las salvaguardas que se ejecutan en Framework Pro
Y las salvaguardas también deben mostrar cualquier advertencia que pueda aplicarse a esta implementación de vista previa:
Captura de pantalla de advertencias de salvaguardas en el registro de Framework Pro CICD
Finalmente, una vez completada la implementación, verá los puntos finales de la API y otros recursos relevantes que se crearon:
Captura de pantalla de los puntos finales de API que se muestran en los registros de Framework Pro
En este punto, cualquier revisor podría copiar y pegar esos puntos finales API y probarlos. Si estuviera revisando, podría probar la nueva API usando algo como Postman o incluso copiar el punto final de la API directamente en la interfaz y probarlo dentro de la interfaz de usuario. Vamos a intentarlo ahora por diversión.
Copie la base del punto final API del registro, en mi caso:
https://myj49ah5kk.execute-api.us-east-1.amazonaws.com/preview-test-feature/
Luego, péguelo en el frontend/app.jsarchivo donde el REPLACE_MEvalor está actualmente en la línea 10 para que se convierta en el nuevo endpoint_url_root.
Luego, cambie los directorios al frontendrepositorio y ejecútelos python3 -m http.serverpara iniciar un servidor web para el frontend y abra localhost: 8000 . Debería verse más o menos así:
Captura de pantalla de la aplicación frontend
A partir de ahí, ¡puedes intentar usar la aplicación! Asegúrese de ingresar su número con el signo más y el código del país al principio. Después de enviar una votación, verá que se incrementa en 4 en lugar de 1. Desde aquí, podríamos seguir probando los puntos finales de la API, ir y comentar sobre el RP y sugerir cualquier cambio que debiéramos hacer.
Cuando hayamos terminado, podemos fusionar el PR o cerrarlo. En ese punto, también es autolimpiante. Después de fusionar o eliminar su sucursal, CI / CD sin servidor eliminará automáticamente su servicio. Tenga en cuenta que deberá eliminar la rama, no solo cerrar el RP para que se elimine la infraestructura.

¿Qué sigue?

Así que ahora espero haberlo convencido de la utilidad y las posibilidades de las implementaciones de vista previa. A continuación, intente echar un vistazo a las otras características de CI / CD sin servidor, como las implementaciones de sucursales y las pruebas .
Si tiene sugerencias sobre lo que quiere de Serverless CI / CD, ¡háganoslo saber en los comentarios a continuación!

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas