DEV Community

LeoJulieta
LeoJulieta

Posted on

Cómo migrar tus workloads de IA de Oracle a Azure sin downtime

🚀 Ruptura entre Microsoft y Oracle: Qué implica para tus workloads de IA y cómo migrar sin interrupciones

Introducción

Microsoft ha anunciado la finalización de su alianza con Oracle para ofrecer IA en la nube. En menos de 24 h la noticia se ha disparado en Google Trends y ha inundado foros como Stack Overflow y Reddit. Si tu empresa depende de los servicios de IA de Oracle, ahora mismo estás frente a una decisión crítica: ¿qué mover a Azure y cómo hacerlo sin downtime?

En este artículo encontrarás una guía paso a paso (≈ 2 200 palabras) que cubre:

  • Los servicios de IA de Oracle que quedan fuera de la colaboración.
  • Comparativa de precios y rendimiento entre Azure y OCI.
  • Scripts listos para ejecutar con Terraform y Azure CLI.
  • Playbook CI/CD con GitHub Actions y Azure Pipelines.
  • Checklist de seguridad y cumplimiento.
  • FAQ con respuestas concisas.

1. Servicios de IA de Oracle afectados

Servicio Función principal Dependencia con Azure
OCI Data Science notebooks, experiment tracking, entrenamiento distribuido Azure AD SSO y facturación conjunta
OCI Generative AI Studio creación y despliegue de modelos fundacionales Azure Container Registry (ACR) para imágenes
Oracle Digital Assistant chatbots y asistentes conversacionales Azure Bot Service como back‑end opcional
OCI Foundation Models modelos pre‑entrenados (LLM, visión) Azure OpenAI Service para sustitución

Tip: Si solo utilizas modelos pre‑entrenados, el cambio a Azure OpenAI puede completarse en minutos mediante la importación de pesos a Azure Machine Learning.


2. Comparativa de coste y rendimiento (abril 2024)

Métrica Azure ND A100 v4 OCI A100 Observaciones
Precio GPU‑hour $0,12 $0,15 Azure incluye descuentos por uso reservado (30 %) y Savings Plans
Almacenamiento frío $0,018 / GB‑mes (Blob) $0,020 / GB‑mes (Object Storage) Diferencia marginal
Latencia intra‑región (ms) 1‑2 ms (Azure East US) 2‑3 ms (OCI US‑East) Azure ligeramente más rápido
Escalado automático Azure VM Scale Sets + AKS OCI Autoscaling + OKE Ambos soportan GPU autoscaling, Azure tiene más integraciones nativas

3. Migración práctica sin downtime

3.1 Arquitectura de referencia (blue‑green)

graph LR
    subgraph OCI
        A[OCI Data Science] --> B[OCI Object Storage]
        C[OKE] --> D[OCI A100 GPUs]
    end
    subgraph Azure
        E[Azure ML] --> F[Azure Blob]
        G[AKS] --> H[Azure ND A100]
    end
    B -->|rsync| F
    D -->|Azure Arc| G
    style A fill:#ffcccc,stroke:#c00,stroke-width:2px
    style E fill:#ccffcc,stroke:#090,stroke-width:2px
  1. Sincroniza datos
   az storage sync \
       --source https://myociobjectstorage.blob.core.windows.net/dataset \
       --dest https://myazblob.blob.core.windows.net/dataset \
       --delete-destination true
Enter fullscreen mode Exit fullscreen mode
  1. Replica los contenedores
   # En OCI
   oci container image export --image-id <oci-image-id> --output mymodel.tar

   # En Azure
   az acr import \
       --name myacr \
       --source mymodel.tar \
       --image mymodel:latest
Enter fullscreen mode Exit fullscreen mode
  1. Despliegue blue‑green con AKS
   az aks create \
       --resource-group rg-ml \
       --name aks-ml \
       --node-count 3 \
       --enable-addons monitoring \
       --node-vm-size Standard_ND96asr_v4
   # Deploy green (new) version
   kubectl apply -f k8s/green-deployment.yaml
   # Switch traffic
   kubectl patch service ml-service -p '{"spec":{"selector":{"version":"green"}}}'
Enter fullscreen mode Exit fullscreen mode
  1. Validación y corte
    • Ejecuta pruebas de carga con k6 contra la nueva versión.
    • Si todo OK, elimina la versión azul: kubectl delete -f k8s/blue-deployment.yaml.

3.2 Terraform para infraestructura en Azure

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "ml" {
  name     = "rg-ml"
  location = "East US"
}

resource "azurerm_kubernetes_cluster" "aks" {
  name                = "aks-ml"
  location            = azurerm_resource_group.ml.location
  resource_group_name = azurerm_resource_group.ml.name
  dns_prefix          = "mlaks"

  default_node_pool {
    name       = "nodepool"
    vm_size    = "Standard_ND96asr_v4"
    node_count = 3
  }

  identity {
    type = "SystemAssigned"
  }
}
Enter fullscreen mode Exit fullscreen mode

Ejecuta: terraform init && terraform apply -auto-approve.


4. CI/CD con GitHub Actions y Azure Pipelines

4.1 GitHub Actions (build → push → deploy)

name: Deploy LLM to Azure

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Docker
        uses: docker/setup-buildx-action@v2
      - name: Build image
        run: |
          docker build -t myacr.azurecr.io/llm:${{ github.sha }} .
      - name: Log in to ACR
        uses: azure/docker-login@v1
        with:
          login-server: myacr.azurecr.io
          username: ${{ secrets.ACR_USER }}
          password: ${{ secrets.ACR_PASSWORD }}
      - name: Push image
        run: |
          docker push myacr.azurecr.io/llm:${{ github.sha }}

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Azure login
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}
      - name: Deploy to AKS
        run: |
          kubectl set image deployment/llm-deployment llm=myacr.azurecr.io/llm:${{ github.sha }} --record
Enter fullscreen mode Exit fullscreen mode

4.2 Azure Pipelines (alternativa)

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: Docker@2
  inputs:
    command: 'buildAndPush'
    repository: 'myacr.azurecr.io/llm'
    Dockerfile: '**/Dockerfile'
    tags: |
      $(Build.BuildId)

- task: Kubernetes@1
  inputs:
    connectionType: 'Azure Resource Manager'
    azureSubscription: 'MySubscription'
    azureResourceGroup: 'rg-ml'
    kubernetesCluster: 'aks-ml'
    command: 'apply'
    useConfigurationFile: true
    configuration: 'k8s/deployment.yaml'
Enter fullscreen mode Exit fullscreen mode

5. Checklist de seguridad y cumplimiento

✅ Ítem Comentario
1 Identidad unificada Migrar usuarios a Azure AD; revocar tokens de OCI IAM.
2 Cifrado en reposo Verificar que los blobs de Azure usan SSE‑AES256.
3 Cifrado en tránsito Habilitar TLS 1.3 en los endpoints de AKS y Azure ML.
4 Auditoría Activar Azure Monitor Logs y Azure Policy para GDPR/PCI.
5 Backup Configurar Azure Backup para discos de VM y bases de datos.
6 Control de acceso Aplicar RBAC en AKS y Azure ML Workspace.

6. Preguntas frecuentes

# Pregunta Respuesta breve
1 ¿Qué servicios de IA de Oracle se ven afectados? OCI Data Science, Generative AI Studio, Digital Assistant y los Foundation Models, todos ligados a Azure AD y facturación conjunta.
2 ¿Cuánto tiempo lleva migrar sin downtime? Con

Herramienta mencionada: Groq Cloud

Top comments (0)