Lineamientos para el manejo de dependencias en servicios Python

Introducción

Para garantizar la calidad, seguridad y estabilidad de los servicios Python desplegados a través de Jenkins, es fundamental gestionar correctamente las dependencias del proyecto. Este documento establece los lineamientos y mejores prácticas recomendadas para el manejo de dependencias, así como la responsabilidad del equipo de desarrollo en este proceso.


Estándares de dependencias

📌 Uso de requirements.txt Todas las dependencias deben estar declaradas en el archivo requirements.txt. Esto es esencial para la instalación automatizada y la reproducibilidad de los entornos en Jenkins.

📌 Gestión de versiones Es importante fijar la versión exacta de cada dependencia (ejemplo: requests==2.31.0). Definir versiones específicas ayuda a evitar incompatibilidades, errores inesperados y problemas de seguridad.

📌 Selección de dependencias Limita las dependencias a lo estrictamente necesario. No incluyas librerías que no aportan valor directo al proyecto. Esto mejora la seguridad, acelera los despliegues y reduce el tamaño final del artefacto.

📌 Verificación de licencias Antes de agregar un paquete, revisa que su licencia sea compatible con las políticas de la organización.


Buenas prácticas

Revisión de seguridad El flujo CI/CD en la herramienta jenkins cuenta con un escaneo de seguridad, recuerda revisarlo y tomar las medidas necesarias para cumplir con la calidad de entregable.

Aprovechar la biblioteca estándar Evalúa si la funcionalidad que buscas ya existe en la librería estándar de Python antes de añadir un paquete externo.

Entornos virtuales Trabaja siempre con entornos virtuales durante el desarrollo para evitar conflictos y asegurar consistencia en el entorno de ejecución.

Documentación de cambios Cuando actualices o agregues dependencias, registra estos cambios en el repositorio y verifica su funcionamiento mediante pruebas.


Ejemplo de requirements.txt

Flask==2.3.3
requests==2.31.0
gunicorn==21.2.0

Recomendaciones para la gestión de dependencias

  1. Antes de agregar una dependencia

    • Confirma que no esté ya incluida en el proyecto.
    • Consulta la documentación y verifica la licencia.
    • Evalúa vulnerabilidades conocidas para la versión empleada o futura.
  2. Al actualizar dependencias

    • Realiza pruebas para asegurar la compatibilidad.
    • Documenta cambios importantes en el repositorio.

Consideraciones en el despliegue Jenkins

  • Jenkins instalará únicamente las dependencias listadas en requirements.txt.
  • Es responsabilidad del desarrollador asegurar que todas las dependencias necesarias estén declaradas y sean compatibles entre sí.
  • Cualquier problema derivado de dependencias incorrectas, incompatibles o no declaradas podrá afectar el despliegue y operación del servicio.

Estos lineamientos buscan facilitar el trabajo mutuamente benefioso, asi como mantener servicios seguros, eficientes y sostenibles a lo largo del tiempo.