Skip to content

potier97/ApacheBenchTest

Repository files navigation

Tutorial API REST- Flask (cipher/decipher)

API REST - Flask. Esta es una API básica que proporciona 2 endpoints, para cifrar y descifrar información utilizando el algoritmo RC4 utilizando en WEP. Esta aplicación está desarrollada para el curso de Desarrollo de Soluciones Cloud.

Ejecución

Para ejecutar la aplicación siga las siguientes instrucciones:

Crear un nuevo ambiente virtual (WINDOWS)

  • $ python -m venv venv
  • $ .\venv\Scripts\activate

Instalar las dependencias

  • $ pip install flask
  • $ pip install flask-restful
  • $ pip install flask-marshmallow

Configurar variables de entorno

  • $ export FLASK_APP=app.py
  • $ export FLASK_DEBUG=1
  • $ export FLASK_ENV=development

Ejecutar

  • $ flask run -h 0.0.0.0

Consumir los servicios

  • Utilice Postman (o una herramienta equivalente) para realizar solicitudes post a los endpoints disponibles.
  • Ruta Endpoint 1 [POST]: http://ip_servidor:5000/cipher
  • Ruta Endpoint 2 [POST]: http://ip_servidor:5000/decipher
  • Ambos Endpoints requieren un JSON con el siguiente formato:
    {"message" : "Texto a Cifrar/Descifrar", "key": "llave para Cifrar/Descifrar"}

Pruebas de Carga (Básicas)

Instalar Apache Benchmark

  • $ sudo apt-get install apache2-utils

Crear archivos JSON

  • Crear un archivo JSON de ejemplo (En el repositorio encontrará un par de ejemplos disponibles):
    {"message" : "Texto a Cifrar/Descifrar", "key": "llave para Cifrar/Descifrar"}

Ejecución del comando

  • $ ab -n 1000 -c 100 -p data-cifrar.json -T application/json -rk http://ip_servidor:5000/cipher
  • $ ab -n 1000 -c 100 -p data-descifrar.json -T application/json -rk http://ip_servidor:5000/decipher

donde:

  • -k (keepAlive). Realizar múltiples solicitudes dentro de una sesión HTTP, funcionalidad de los navegadores por la naturaleza
  • -r (flag). Indica que la conexión (socket) no se cierra al recibir errores
  • -n (requests). Número total de solicitudes para ejecutar
  • -c (concurrency). Cantidad de conexiones concurrentes
  • -p (file.json). JSON que se envia en el cuerpo del request
  • -T application/json. Especifica la estructura de datos del body
  • -e data.csv. Guarda los resultados en un archivo CSV

Script de pruebas

  • $ sh script.sh

contiene los comandos de prueba de carga para los endpoints de cifrado y descifrado.

HTOP

Instalar htop

  • $ apk add htop

Ejecutar htop

  • $ htop