Fecha publicación: 24 may 2021

Utilizando Apache Bench

Github Actions es el sistema de Github para automatizar los flujos de trabajo de CI / CD (Continuos Integration / Continuos Deployment) el cual nos proporciona un conjunto de acciones ya predefinidas por el propio equipo de Github o incluso algunas creadas por la propia comunidad.

Además, cuando utilizamos estas acciones en los flujos de trabajo, también tenemos la posibilidad de crear comandos propios como por ejemplo el paso para instalar las dependencias de nuestra aplicación, las pruebas unitarias, etc.

Todo esto está muy bien, pero hay veces que la funcionalidad que creamos, es muy recurrente y utilizada en varios proyectos, ¿podríamos crear nuestra propia Github Action para encapsularla?

Por ejemplo, ejecutar pruebas de rendimiento de nuestras aplicaciones desplegadas en producción, es una tarea que puede automatizarse y nos proporciona unas métricas bastante buenas para saber si se soporta una cantidad de usuarios concurrentes, conocer tiempos de respuesta, etc.

Como ejemplo para ver cómo funciona ésto, vamos a tomar como referencia el post de Gisela Torres: Crear acciones para Github Actions, en el que trabajamos con Apache Bench como herramienta para ejecutar pruebas de carga de nuestras aplicaciones y Github Actions para ejecutarlos cuando lo necesitemos.

Manos a la obra

Lo primero, vamos a crear un repositorio totalmente vacío en Github y lo clonaremos en local (si tienes dudas o buscas como asociar un repositorio en Github a uno ya existente en local puedes ver nuestro vídeo Git local y nube).

Podemos clonarlo en una carpeta utilizando el siguiente comando:

git clone <url-repositorio-github> .

Con el punto del final le indicamos que clone el repositorio en el directorio actual.

Ya tenemos clonado el repositorio y podemos añadir nuestros ficheros. En este caso, en lugar de instalar las librerias de Apache en la propia máquina, vamos a utilizar Docker, así podemos ejecutarlo de la misma forma en la máquina que nos provee Github.

./Dockerfile

FROM alpine:latest

RUN apk add --no-cache apache2-utils

Para poder ejecutar una prueba de carga con Apache Bench, simplemente debemos de proveerle:

  • Número de peticiones en total.
  • Número de peticiones concurrentes.
  • URL a la que queremos hacerle la prueba.

./Dockerfile

FROM alpine:latest

RUN apk add --no-cache apache2-utils

+ ENTRYPOINT ab -n 1000 -c 50 https://www.basefactor.com/

1000 peticiones en total y como máximo 50 concurrentes.

Es importante la barra del final en la URL para indicar que es la ruta

principal.

Podemos ejecutar este fichero en local teniendo, Docker instalado, compilando la imagen y creando un contendor a partir de ella:

docker build -t load-test-image .
docker run --rm --name load-test-container load-test-image

Como vemos, Apache Bench nos da información del servidor, el tiempo total que ha tardado, peticiones con éxito, peticiones fallidas, tiempo por cada petición, etc.

Resultados Apache Bench ejecutándolo con Docker

¿Te gusta el mundo Devops?

En Lemoncode impartimos un Bootcamp Devops Online, en él encontrarás todos los recursos necesarios: clases de los mejores profesionales del sector, tutorías en cuanto las necesites y ejercicios para desarrollar lo aprendido en los distintos módulos. Si quieres saber más puedes pinchar aquí para más información sobre este Bootcamp Devops.