En este artículo, lo guiaremos a través de cómo configurar una canalización de DevOps en AWS. Sin embargo, comencemos definiendo qué es realmente DevOps.

En el pasado, el desarrollo de aplicaciones generalmente se dividía entre dos equipos: desarrollo y operaciones. El equipo de desarrollo escribiría el código, lo probaría y luego lo entregaría al equipo de operaciones, quien lo implementaría en un servidor y se aseguraría de que se ejecute y escale sin interrupciones.

Con el cambio reciente hacia la computación en la nube, ahora se espera que los desarrolladores tengan más conocimiento de la infraestructura que ejecuta sus aplicaciones. Esto significa que el equipo de desarrollo y el equipo de operaciones se fusionan en uno y trabajan juntos de manera DevOps. Esto permite a los desarrolladores escribir código que se escala y se puede administrar más fácilmente en entornos de producción.

Otro beneficio de la forma de trabajar de DevOps es que los problemas en producción se pueden identificar más rápido si el equipo responsable de las operaciones es el mismo que desarrolló originalmente la aplicación.

Entonces, ¿cómo se relacionan las canalizaciones con DevOps? Si observamos la forma anterior de trabajar en equipos, dividida entre desarrollo y operaciones, un lanzamiento generalmente seguiría una variación del proceso que se describe a continuación.

  • El equipo de desarrollo fusiona los cambios de código que deben incluirse en el lanzamiento en el repositorio de código.
  • El equipo de desarrollo (o un probador dedicado) lleva a cabo las pruebas de la versión.
  • El equipo de desarrollo crea una compilación de producción que está lista para su lanzamiento.
  • El equipo de operaciones recibe la compilación de producción y la implementa en producción manualmente. Por lo general, colocando el paquete de lanzamiento dentro del entorno del servidor y ejecutando scripts.

Con DevOps y un equipo fusionado de desarrollo y operaciones, podemos lanzar funciones pequeñas a un ritmo más rápido. Las tareas relacionadas con las operaciones se pueden llevar a cabo en paralelo a las actividades de desarrollo habituales. Para hacer esto a un ritmo aún más rápido, podemos automatizar las tareas de lanzamiento y prueba mediante una canalización de DevOps. La colocación de los paquetes de lanzamiento dentro del entorno del servidor y la ejecución de scripts se pueden ejecutar automáticamente con solo presionar un botón o simplemente presionando los cambios de código en una rama en particular.

Una tubería como esta se puede configurar con varias herramientas diferentes. Sin embargo, si ya está ejecutando sus cargas de trabajo en AWS, viene con muchos servicios diferentes que lo ayudan a hacerlo de manera bastante eficiente sin salir del ecosistema de AWS.

Comencemos a crear nuestra propia canalización para automatizar algunas tareas de implementación.

Empezando

Automatizaremos la implementación de un sitio estático simple utilizando los siguientes servicios de AWS:

  • CodePipeline: una herramienta de orquestación que nos ayuda a desencadenar una implementación mediante la inserción en un repositorio de código fuente o mediante la pulsación manual de botones.
  • CodeBuild: un contenedor de compilación que puede ejecutar los scripts necesarios para las tareas de implementación
  • S3: un servicio de alojamiento de archivos estáticos que alojará nuestro sitio estático

El sitio estático que implementaremos consta de un archivo HTML simple al que se accede desde la URL de S3. Para implementar esto, debemos cargar manualmente el archivo HTML en el depósito desde la consola de AWS. Si bien esto puede no ser terriblemente difícil de hacer, siempre podemos ahorrarnos un par de minutos al automatizar esta tarea.

El objetivo de la canalización es combinar los servicios de AWS antes mencionados para lograr lo siguiente:

Alojamiento de sitios estáticos en S3

1. Crea un cubo

Para que nuestro sitio estático funcione, comenzamos creando un depósito S3. Esto se hace yendo a Consola de AWS → Servicios → S3 → Crear depósito. Asegúrese de habilitar el acceso público a este cubo para que se pueda acceder a nuestro sitio a través de Internet. Deje las otras opciones a sus valores predeterminados.

2. Habilite el alojamiento de sitios estáticos

Ahora es el momento de hacer que nuestros archivos HTML en el cubo estén disponibles como un sitio estático. Para hacer esto, vaya a su depósito S3 → Propiedades → Alojamiento de sitios web estáticos → Utilice este depósito para alojar un sitio web estático. Asegúrese de ingresar index.htmlcomo su documento de índice y presione Guardar. Ahora su sitio debería estar en funcionamiento si va a la URL del punto final que se muestra en el cuadro de diálogo Alojamiento de sitio web estático.

¡Estupendo! Ahora tenemos un sitio estático. Para actualizarlo, debe cargar una nueva versión del index.htmlarchivo en el depósito. ¡Automaticemos eso!

Creación de la canalización

1. Cree un repositorio de CodeCommit

Para alojar el código, necesitamos un repositorio para nuestros archivos. Puede ser GitHub o cualquier otro servicio de repositorio que prefiera. En aras de la simplicidad, utilizaremos el servicio de repositorio de AWS CodeCommit.

Cree un repositorio yendo a Consola de AWS → CodeCommit → Crear repositorio. Ingrese un nombre y presione Guardar. Finalmente, inserte un HTML conectándose al repositorio a través de SSH o HTTPS. Si no tiene ninguna inspiración para un archivo, puede usar el siguiente:

<p>Hello from heymarkething.com!</p>

2. Cree una canalización de CodePipeline

Ahora es el momento de crear la canalización que orquestará el proceso de implementación de nuestro sitio estático. Para comenzar a crear la canalización, vaya a Consola de AWS → CodePipeline → Crear nueva canalización.

Paso 1

  • Introduzca el nombre de la canalización.
  • Elija "Nuevo rol de servicio".
  • Deje el resto a los valores predeterminados.

Paso 2

  • Elija AWS CodeCommit como proveedor de origen.
  • Elija su repositorio recién creado como fuente.
  • Elija la rama desde la que desea construir como Nombre de la rama.
  • Deje el resto a los valores predeterminados.

Paso 3

  • Presione Omitir etapa de compilación: no necesitamos compilar nuestros archivos en esta canalización, ya que es simplemente HTML estático.

Etapa 4

  • Elija Amazon S3 como su etapa de implementación.
  • Elija el cubo que creó antes como el Cubo.
  • Deje la clave de objeto S3 vacía.
  • Marque Extraer archivo antes de implementar.
  • Expanda el panel Configuración adicional y elija lectura pública como la ACL almacenada.
  • Presiona Guardar.

Paso 5

¡Tada! Ahora su canalización debería ejecutarse e implementar el archivo HTML en su repositorio de CodeCommit en S3. Introduzca un cambio en el archivo y la canalización debería activarse de nuevo automáticamente.

Conclusión

Si bien esta es una de las configuraciones más simples que puede tener, los fundamentos son los mismos, incluso para aplicaciones de back-end muy complejas. Es posible que requieran más pasos en la canalización, pero el flujo básico debe ser el mismo. Configurar una canalización de implementación una vez y automatizar el flujo de trabajo le ahorra mucho tiempo a largo plazo, y evitar las tareas manuales siempre significa más seguridad y menos errores humanos.

¡Buena suerte con el uso de sus nuevas habilidades de DevOps!

Si tiene alguna pregunta o comentario, no dude en comentar a continuación.