Skip to content

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

Referencias