Introducción

¿Qué es Daki?

Daki es una aplicación de backend diseñada para manejar el pronóstico de demanda y la gestión de archivos, permitiendo una clara división del trabajo en entornos de desarrollo distribuidos.

Arquitectura y Filosofía del Diseño

Este proyecto es una aplicación de backend (Serverless) construida con Azure Functions en Python. Su diseño se fundamenta en una arquitectura modular para manejar la complejidad y garantizar la escalabilidad y el mantenimiento a largo plazo.

Nota

La arquitectura de este proyecto es clave para un despliegue y un mantenimiento eficientes. El enfoque modular facilita el desarrollo en equipos y la adición de nuevas funcionalidades sin afectar el código principal.

El diseño del proyecto evita un diseño monolítico mediante la adopción de un sistema de Blueprints, que agrupa lógicamente las funciones por sus responsabilidades.

Ventajas de la Implementación Modular

Aspecto

Beneficio

Separación de Responsabilidades

Cada Blueprint se enfoca en una funcionalidad específica, como la gestión de archivos o el pronóstico de demanda, lo que aísla la lógica y facilita el desarrollo, las pruebas y la corrección de errores.

Reutilización y Consistencia

El uso de módulos de helpers centraliza la lógica común para interactuar con servicios externos, promoviendo un código más limpio, reduciendo la duplicación y asegurando un comportamiento consistente en toda la aplicación.

Escalabilidad y Mantenimiento

El archivo principal function_app.py registra automáticamente todos los blueprints, lo que simplifica la integración de nuevas funcionalidades y hace el proyecto más fácil de escalar y mantener a largo plazo.

Componentes Clave de la Arquitectura

La arquitectura del proyecto está organizada en los siguientes directorios clave, cada uno con una función específica:

Directorio

Responsabilidad

function_app.py

Es el punto de entrada principal del servidor. Su única responsabilidad es inicializar la aplicación y registrar todos los blueprints para que las funciones estén disponibles.

blueprints/

Contiene los módulos lógicos (Blueprints) que encapsulan las funciones y definen sus rutas de negocio asociadas.

helpers/

Contiene módulos con funciones reutilizables que son consumidas por los blueprints. Centraliza la lógica para interactuar con servicios como Azure Blob Storage y Azure VM.

Truco

Para entender cómo se implementa la lógica de los «helpers», revisa el archivo helpers/azure/blob_storage.py.