APIs Externas
Las APIs externas son servicios de terceros que proporcionan datos a la arquitectura de data engineering de Solvento.
Descripción
Las integraciones con APIs externas permiten consumir datos de servicios y plataformas de terceros. Estos datos se integran en el sistema para enriquecimiento, análisis y procesamiento.
Flujo de Datos
graph TB
subgraph externas["APIs Externas"]
API1[API Externa 1]
API2[API Externa 2]
API3[API Externa 3]
end
subgraph ingesta["Componentes de Ingesta"]
Run[Cloud Run]
Scheduler[Cloud Scheduler]
end
subgraph almacenamiento["Almacenamiento"]
PubSub[Pub/Sub]
Storage[Cloud Storage]
BigQuery[BigQuery]
end
API1 -->|"HTTP Request"| Run
API2 -->|"HTTP Request"| Run
API3 --> Scheduler
Scheduler -->|"Invoca"| Run
Run -->|"Publica mensajes"| PubSub
Run --> Storage
Run --> BigQuery
Recursos
APIs Integradas
Documenta aquí las APIs externas principales integradas en el sistema:
- Por agregar: Lista de APIs con descripción, tipo de autenticación y frecuencia de consumo
Configuraciones Relevantes
Autenticación
- API Keys: Claves de API para autenticación
- OAuth 2.0: Tokens OAuth para autenticación
- Basic Auth: Autenticación básica
- Custom Headers: Headers personalizados
Especificar método de autenticación por API
Rate Limiting
- Límites de rate y estrategias de throttling
Retry Logic
- Políticas de reintento para requests fallidos
Secrets Management
- Gestión de credenciales usando Secret Manager
Relaciones con Otros Componentes
Consumo de APIs
- Cloud Functions: Funciones que consumen APIs periódicamente o por eventos
- Cloud Run: Servicios que consumen APIs con lógica más compleja
- Cloud Scheduler: Programación de consumo periódico de APIs
- Dataflow: Pipelines que consumen APIs para enriquecimiento de datos
Almacenamiento de Datos
- Pub/Sub: Cloud Run publica eventos de APIs a topics de Pub/Sub
- Cloud Storage: Archivos descargados o exportados de APIs
- BigQuery: Datos estructurados de APIs almacenados directamente
Importante: Las APIs no publican directamente a Pub/Sub. Cloud Run consume las APIs y luego publica los eventos a Pub/Sub.
Patrones de Uso
Polling
Consumo periódico de APIs para obtener datos actualizados.
Webhooks
Recepción de eventos desde APIs externas mediante webhooks (ver sección Webhooks).
Data Enrichment
Enriquecimiento de datos internos con información de APIs externas.
Scheduled Sync
Sincronización programada de datos desde APIs externas.
Ejemplos de Integración
Consumo con Cloud Run
from flask import Flask
from google.cloud import pubsub_v1
import requests
import json
app = Flask(__name__)
@app.route('/sync', methods=['POST'])
def sync_external_api():
"""Consume API externa y publica a Pub/Sub"""
api_key = get_secret('external-api-key')
headers = {'Authorization': f'Bearer {api_key}'}
response = requests.get('https://api.external.com/data', headers=headers)
data = response.json()
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('solvento-data-prod', 'external-api-events')
for item in data:
publisher.publish(topic_path, json.dumps(item).encode('utf-8'))
return {'status': 'success', 'records': len(data)}
Consumo con Cloud Run
from flask import Flask
from google.cloud import bigquery
import requests
app = Flask(__name__)
@app.route('/sync', methods=['POST'])
def sync_external_data():
"""Sincroniza datos de API externa a BigQuery"""
api_data = fetch_from_api()
client = bigquery.Client(project='solvento-adv-analytics-prod')
table = client.get_table('dataset.external_data')
client.insert_rows_json(table, api_data)
return {'status': 'success', 'records': len(api_data)}
Monitoreo y Métricas
- Request Rate: Tasa de requests a APIs externas
- Success Rate: Tasa de éxito de requests
- Latency: Tiempo de respuesta de APIs
- Errors: Errores y fallos en integraciones
- Rate Limit Hits: Ocurrencias de rate limiting
Seguridad
- Secrets Management: Almacenamiento seguro de credenciales
- Network Security: Configuración de firewall y VPC si aplica
- Data Encryption: Encriptación de datos en tránsito y en reposo