Skip to content

Latest commit

 

History

History
159 lines (109 loc) · 6.11 KB

File metadata and controls

159 lines (109 loc) · 6.11 KB

🌐 Microservicio de Traducción Inteligente (Smart Translator)

Python FastAPI Nginx Docker PostgreSQL Redis Render


Ver Demo en Vivo

Una API de traducción de alto rendimiento contenerizada, diseñada como un middleware inteligente sobre DeepL.
Optimizada para reducir costos y latencia, garantizando la seguridad mediante estrategias de Rate Limiting y Caché.


🏗 Arquitectura y Flujo

Este microservicio implementa el patrón Cache-Aside para minimizar las llamadas a APIs externas.

graph LR
    Client[Cliente] -->|HTTP/HTTPS| Gateway[Nginx / Render LB]
    Gateway -->|Proxy Pass| API[Servicio FastAPI]
    API -->|1. Verifica| Redis[(Caché Redis)]
    API -->|2. Fallback| DeepL[API DeepL]
    API -->|3. Registra| DB[(PostgreSQL)]
Loading
Etapa Descripción
Ingreso Local: Nginx actúa como Proxy Inverso en el puerto 80. Cloud: Render gestiona la capa SSL y el balanceo de carga.
Seguridad El sistema aplica Rate Limiting (algoritmo Token Bucket) para prevenir abusos (defecto: 5 peticiones/min).
Optimización Hit: Si la traducción existe en Redis, retorna inmediatamente (Latencia ~0ms, Costo $0). Miss: Si no existe, consulta a DeepL, guarda el resultado en caché (TTL 24h) y registra la transacción.
Persistencia Todas las transacciones son auditadas en PostgreSQL para análisis histórico.

🚀 Características Principales

  • Caché Inteligente: Utiliza Redis para almacenar traducciones recientes, reduciendo el consumo de la API externa hasta en un 90% para consultas repetitivas.

  • 🛡️ Gateway Robusto: Configuración de Nginx personalizada como punto de entrada único, aislando la lógica de la aplicación del tráfico directo.

  • 🚦 Rate Limiting: Protección contra ataques DDoS y control de cuotas mediante slowapi con almacenamiento en memoria.

  • 📊 Auditoría Persistente: Registro asíncrono de cada petición en PostgreSQL utilizando SQLAlchemy.

  • ☁️ Cloud Native: Arquitectura Dockerizada lista para desplegar en cualquier proveedor (Render, AWS, DigitalOcean).


🛠 Stack Tecnológico

Componente Tecnología Rol
Lenguaje Python 3.13 Lógica del núcleo
Framework FastAPI API REST Asíncrona
Gateway Nginx Proxy Inverso y Servidor Web
Base de Datos PostgreSQL Datos Históricos y Auditoría
Caché Redis Almacenamiento rápido y Backend de Rate Limiting
CI/CD GitHub / Render Despliegue continuo automático
Contenedor Docker Compose Orquestación de servicios

⚙️ Configuración Local

Prerrequisitos

  • Docker y Docker Compose
  • Una API Key de DeepL (Free o Pro)

Instalación

1. Clonar el repositorio:

git clone https://github.com/TheMattGH/Smart-Translator-API.git
cd Smart-Translator-API

2. Configurar Entorno:

Crea un archivo .env en la raíz del proyecto. (Docker priorizará la configuración interna para Redis/DB, solo necesitas tus claves externas):

DEEPL_API_KEY=tu_clave_deepl_aqui
DEEPL_URL=https://api-free.deepl.com/v2/translate

3. Construir y Levantar:

docker-compose up --build

4. Acceder:

El servicio estará disponible a través de Nginx en el puerto 80:


🔌 Ejemplo de Uso de la API (Producción)

Puedes probar la API directamente contra el servidor en la nube:

Endpoint: POST /translate

curl -X 'POST' \
  'https://smart-translator-api.onrender.com/translate?text=Hello%20World&target_lang=ES' \
  -H 'accept: application/json' \
  -d ''

Nota: El servicio está alojado en el plan gratuito de Render. Si no ha recibido tráfico recientemente, puede tardar hasta 50 segundos en "despertar" (Cold Start).

Respuesta (Cache Miss - Obtenido de DeepL):

{
  "original": "Hello World",
  "translated": "Hola Mundo",
  "source": "DEEPL API 🌍",
  "target_lang": "ES"
}

Respuesta (Cache Hit - Latencia Cero):

{
  "original": "Hello World",
  "translated": "Hola Mundo",
  "source": "CACHE (Redis) ⚡",
  "target_lang": "ES"
}

Desarrollado con ❤️ por TheMattGH