Requerimiento del Cliente (Gobierno)
-
Desarrollar una API para listar empresas registradas por sectores como Tecnología, Salud, Agricultura, entre otros.
-
La API debe permitir:
-
Consultar todas las empresas.
-
Filtrar empresas por sector económico.
-
-
La solución debe estar alojada en la nube (Azure).
-
La base de datos debe escalar con facilidad.
-
Subes el proyecto a GitHub.
El backend debe ser desarrollado en Python.
Tecnologías Utilizadas
-
Azure Cosmos DB: Base de datos NoSQL distribuida globalmente.
-
Azure Web App: Servicio de hospedaje para aplicaciones web.
-
Python + Flask: Micro-framework ligero para desarrollar la API REST.
-
Particionamiento: Uso de particiones lógicas en Cosmos DB para optimizar consultas.
Arquitectura de la Solución
-
Backend API: Desarrollado con Flask, desplegado en Azure Web App.
-
Base de datos: Azure Cosmos DB, particionada por el campo sector.
-
Escalabilidad: Cosmos DB Serverless para optimización de costos.
Estructura del Proyecto
¿Cómo Funciona?
-
Particiones: Cada empresa tiene un campo sector. Cosmos DB agrupa internamente los datos por este valor, lo que permite buscar solo en la partición correcta sin recorrer toda la base.
-
Consultas Eficientes: Gracias al uso de particiones, las consultas son rápidas y económicas, ya que no se necesita escanear todas las particiones.
-
Escalabilidad: Si más empresas se agregan, Cosmos DB ajusta automáticamente los recursos necesarios.
app.pyfrom flask import Flask, jsonify
from azure.cosmos import CosmosClient
app = Flask(__name__)
# CONFIGURACION COSMOSDB
endpoint = "https://tu-cosmos-db.documents.azure.com:443/"
key = "tu-key"
client = CosmosClient(endpoint, key)
db_name = "EmpresasDB"
container_name = "EmpresasPorSector"
database = client.get_database_client(db_name)
container = database.get_container_client(container_name)
# ENDPOINT PARA LLAMAR DATOS
@app.route("/empresas", methods=['GET'])
def all_data():
query = "SELECT * FROM c"
items = list(container.query_items(query=query,
enable_cross_partition_query=True))
return jsonify(items), 200
if __name__ == '__main__':
app.run()
Recuerda:
requirements.txt
Flask
azure-cosmos
gunicornDespliegue en Azure Web App
-
-
Creas una Web App en Azure.
-
Azure hace el despliegue automático y tu API queda pública
Resultados
-
API disponible en:
https://api-empresas-gob.azurewebsites.net/empresas
-
Consultas rápidas por sector:
/empresas/
¿Qué se espera lograr con esta práctica?
Al finalizar este ejercicio, deberías ser capaz de:
✅ Desarrollar una API REST funcional
-
Listar datos desde una base NoSQL.
-
Crear endpoints personalizados para filtrar datos.
✅ Configurar y usar Cosmos DB como base de datos backend
-
Crear una base de datos y contenedor particionado.
-
Insertar datos y realizar consultas optimizadas.
✅ Implementar y desplegar soluciones reales en Azure
-
Subir tu API a Azure Web App.
-
Configurar el entorno para producción.
✅ Comprender el ciclo completo de una aplicación cloud
-
Desde la idea inicial, pasando por el desarrollo, hasta el despliegue.
-
Simular un proyecto consultor-cliente con una necesidad real.
✅ Aplicar lo aprendido en futuros proyectos propios o laborales
-
Crear APIs similares para otras entidades o sectores.
-
Aprovechar Azure para automatizar, escalar y gestionar aplicaciones modernas.
💡 Valor agregado de esta práctica:
-
No necesitas experiencia previa en Azure: la práctica te guía paso a paso.
-
Aprendes a usar herramientas reales que son demandadas en el mundo laboral.
-
Construyes una base sólida para explorar temas más avanzados como:
-
CI/CD en Azure DevOps.
-
Seguridad con Azure Active Directory.
-
Integración de inteligencia artificial en APIs.
-
¿Quién debería seguir esta práctica?
-
Desarrolladores backend que desean aprender sobre despliegue en la nube.
-
Consultores de TI que buscan soluciones escalables para clientes.
-
Estudiantes de programación que quieren experiencia práctica.
-
Emprendedores tecnológicos que desean prototipar APIs de forma rápida y eficiente.