# Herramientas y frameworks

## Back end

Un proyecto de back end debe:

* Tener compatibilidad total con el sistema operativo *GNU/Linux* (para facilitar su contenerización y orquestación).  
* Utilizar transacciones en servicios que almacenen datos en 2 o más tablas de una base de datos *SQL* de manera simultánea.

## Front end

Para el desarrollo de front ends se deberán utilizar automatizadores de tareas (por ejemplo, *Gulp* o *Webpack*). Los desarrollos podrán utilizar bibliotecas como *Bootstrap*, *JQuery* u otros, pero se debe evitar el uso injustificado y redundante de dependencias de *JavaScript* y *CSS*.

## Contenedores

Además de seguir las buenas prácticas recomendadas por [*Docker*](https://docs.docker.com/build/building/best-practices/), también es recomendable realizar las siguientes tareas:

* Utilizar imágenes basadas en *Alpine Linux* (Para obtener imágenes de menor tamaño).  
* Al crear imágenes, configurar usuarios sin permisos de administrador.  
* Configurar datos sensibles por medio de variables de entorno o archivos externos protegidos.