Implantar Cargas de Trabalho em Lote Nativas da Nuvem Usando o Serviço em Lote do Oracle Cloud Infrastructure

Introdução

As aplicações modernas dependem muito do processamento em segundo plano para lidar com tarefas como transformação de dados, geração de relatórios, processamento de mídia e simulações em larga escala. Essas cargas de trabalho geralmente consomem muitos recursos de computação, são executadas de forma assíncrona e podem variar significativamente em escala e frequência. O gerenciamento dessas cargas de trabalho usando abordagens tradicionais pode ser complexo, exigindo que as equipes provisionem infraestrutura, criem sistemas de programação e manipulem o dimensionamento manualmente.

O Serviço em Lote da Oracle Cloud Infrastructure (OCI) foi projetado para simplificar esse processo. Ele fornece uma maneira totalmente gerenciada de executar cargas de trabalho em lote em escala, permitindo que você se concentre na definição de seus trabalhos enquanto a plataforma lida com a execução e o gerenciamento de recursos.

Neste tutorial, vamos explorar como o OCI Batch funciona, sua arquitetura e como ele pode ser usado de forma eficaz em cenários do mundo real.

Qual Problema o OCI Batch Resolve?

A execução de cargas de trabalho em lote tradicionalmente envolve várias camadas de complexidade. As equipes geralmente precisam provisionar recursos de computação com antecedência, implementar seus próprios mecanismos de programação de jobs e criar lógica para lidar com repetições, falhas e dimensionamento. Mesmo ao usar plataformas como o Kubernetes, é necessário um esforço significativo para configurar e manter o ambiente. Isso aumenta a sobrecarga operacional e retarda o desenvolvimento.

O OCI Batch aborda esses desafios fornecendo um serviço unificado que gerencia o ciclo de vida das cargas de trabalho em lote. Ele elimina a necessidade de criar programadores personalizados ou gerenciar a infraestrutura, permitindo que as equipes executem trabalhos em larga escala com mais eficiência e menos esforço operacional.

Visão Geral do Serviço OCI Batch

O OCI Batch atua como um serviço centralizado para gerenciar e executar cargas de trabalho em lote. Quando um job é enviado, ele é colocado em uma fila e processado com base nas decisões de programação e na disponibilidade de recursos. O serviço avalia os requisitos do job e provisiona a capacidade de computação dinamicamente para executar tarefas. Cada tarefa é executada em um ambiente conteinerizado, garantindo consistência e isolamento. Uma vez concluída a execução, as saídas são armazenadas e os logs são gerados para monitoramento e solução de problemas.

Essa abordagem fornece um fluxo de trabalho simplificado em que o envio, a programação, a execução e a observabilidade de tarefas são tratados em um único serviço gerenciado.

Aprofundamento da Arquitetura

A arquitetura do Lote do OCI segue um fluxo claro do envio do job para a execução e a saída, conforme mostrado no diagrama.

OCIBatchArch

O processo começa quando um usuário envia um job usando a Console, a CLI ou a API do OCI. Essa solicitação está associada a um Batch Context, que atua como a camada de configuração básica. O contexto define as principais configurações, como rede, frotas de computação e registro em log, garantindo que todos os jobs sejam executados em um ambiente consistente.

Em seguida, os jobs são organizados em Job Pools, que fornecem agrupamento lógico e ajudam a controlar o comportamento de programação. Isso é particularmente útil ao gerenciar cargas de trabalho em diferentes equipes ou ambientes, pois permite priorização e isolamento. Cada Tarefa enviada representa uma unidade de trabalho completa e pode incluir uma ou mais Tarefas. As tarefas são as menores unidades executáveis e são executadas usando um Ambiente de Tarefas definido. Isso permite que os jobs sejam divididos em partes menores que podem ser executadas de forma independente ou em sequência, dependendo das dependências definidas.

Uma vez submetidos, os jobs são colocados em um Queue, no qual eles aguardam até que os recursos estejam disponíveis. O scheduler avalia continuamente a fila e seleciona jobs com base na prioridade e na capacidade. Isso garante que as cargas de trabalho sejam processadas de forma eficiente sem sobrecarregar o sistema.

Para executar essas tarefas, o OCI Batch usa o Compute Fleets, que representa a capacidade de computação subjacente. Essas frotas são provisionadas dinamicamente com base na demanda de carga de trabalho. À medida que mais empregos são submetidos, a capacidade adicional é alocada; quando a demanda diminui, os recursos são reduzidos. Isso garante um uso eficiente sem exigir intervenção manual.

Após a execução, os resultados são armazenados em OCI storage services e os logs e métricas são capturados para visibilidade. Isso fornece uma visão completa da execução do job e do desempenho do sistema.

Por que essa arquitetura é importante

Um dos principais pontos fortes do OCI Batch reside na separação entre o envio e a execução do job. Em vez de executar imediatamente todos os trabalhos, o sistema usa filas e lógica de agendamento para gerenciar cargas de trabalho com eficiência. Esse design permite que o OCI Batch lide com picos repentinos de demanda sem exigir infraestrutura pré-provisionada. Isso também garante que os jobs de maior prioridade possam ser executados primeiro, melhorando a previsibilidade em ambientes compartilhados.

Ao gerenciar a alocação de recursos dinamicamente e controlar a execução por meio de filas, o serviço fornece um equilíbrio entre desempenho, escalabilidade e economia.

Principais componentes do OCI Batch

O OCI Batch é criado com base em um conjunto de componentes principais que trabalham juntos para fornecer recursos de processamento em lote.

Exemplo do Mundo Real: Pipeline de Processamento de Vídeo

Considere um cenário em que milhares de vídeos precisam ser processados. Por exemplo, converter formatos, gerar miniaturas ou aplicar filtros.

Usando o OCI Batch, cada vídeo pode ser tratado como uma tarefa separada dentro de um job. Essas tarefas podem ser executadas em paralelo em vários recursos de computação, reduzindo significativamente o tempo total de processamento. À medida que a demanda por carga de trabalho aumenta, o OCI Batch provisiona automaticamente capacidade de computação adicional para lidar com as tarefas. Após a conclusão do processamento, os resultados são armazenados e os logs são gerados para monitoramento. Esse padrão pode ser aplicado a muitos outros casos de uso, incluindo pipelines de dados, cargas de trabalho de machine learning e simulações de engenharia.

Pré-requisitos

Siga Exemplos de Política do IAM para permitir que o serviço OCI Batch acesse os serviços do OCI necessários.

Você também precisará fazer download da CLI do OCI se for usá-la para criar jobs.

Tarefa 1. Criar Contexto do Lote

O Contexto de Batch é a camada de configuração de nível superior para suas cargas de trabalho em batch. Inclui rede, frotas, direitos, definições de prioridade do job e configuração de log.

Para criar um contexto de batch, vá para o serviço Batch e selecione Contextos de Batch e, em seguida, selecione Criar Contexto de Batch. Preencha os seguintes detalhes com base no seu ambiente.

  1. Nome
  2. Compartimento
  3. Descrição
  4. VCN
  5. Sub-rede
  6. Frota
  7. Direitos (Opcional)
  8. Configuração de prioridade da tarefa (opcional)
  9. Configuração de Registro em Log

    Criar Contexto do Lote

Tarefa 2. Criar Pool de Jobs

Um Pool de Jobs é simplesmente um contêiner lógico para jobs. Ao executar um job, você selecionará um pool de jobs para criá-lo. Para criar um pool de jobs, você só precisa das configurações a seguir.

  1. Nome
  2. Descrição
  3. Compartimento

    Criar pool de jobs

Tarefa 3. Criar Perfil de Tarefa

Um Perfil de Tarefa é uma configuração reutilizável que define os recursos mínimos de computação necessários para tarefas, como 1 OCPU e 16 GB de memória. É possível criar vários perfis, cada um correspondendo a um requisito de recurso diferente. Para criar um perfil de tarefa, você precisa das seguintes configurações:

  1. Nome
  2. Descrição
  3. Mínimo de OCPUs - Você pode definir isso como 1 para este exemplo
  4. Memória mínima em GBs - Você pode definir isso como 8 para este exemplo

    Criar perfil de tarefa

Tarefa 4. Configurar Ambiente Local e Enviar Imagens do Contêiner

  1. Extraia o código do GitHub e mova para o diretório correto.

     git clone https://github.com/oracle-devrel/technology-engineering.git
     cd technology-engineering/app-dev/developer-tools-and-lowcode/batch/video-transcoding/ 
    
  2. Criar um repositório no OCI Container Registry (OCIR).

    Criar registro de contêiner

  3. Enviar a imagem do contêiner para o OCIR. O caminho da imagem deve corresponder à sua região, namespace da tenancy, nome do repositório e tag de imagem, ou seja, iad.ocir.io/<tenancy-namespace>/convert_mp4_to_avi:latest

     docker build -t <image>:<tag> .
     docker push <image>:<tag>
    

    Enviar contêiner para o OCIR

  4. Criar buckets do Object Storage para vídeos de entrada e saída.

    Criar bucket de entrada

    Criar bucket de saída

  5. Fazer upload de arquivo de vídeo para o Object Storage

Tarefa 5. Criar Ambiente de Tarefas

Um Ambiente de Tarefa é a configuração de runtime das suas tarefas. Para configurar um ambiente de tarefa, você precisará:

  1. Nome
  2. Descrição
  3. Contexto de Segurança:
    1. ID do Usuário: Definir como 1
    2. ID do Grupo: Definir como 1
    3. ID do grupo do sistema de arquivos: Defina como 1
  4. Diretório de trabalho: Definir como /video

    Criar Ambiente de Tarefas

Tarefa 6. Submeter Job

Há várias maneiras de enviar um job para o serviço Batch. Para este tutorial, usaremos a CLI do OCI.

  1. Criar um arquivo chamado video_conversion_job.json
  2. Copie e cole o seguinte no video_conversion_job.json
     {
     "batchJobPoolId": "JOB_POOL_OCID",
     "compartmentId": "COMPARTMENT_ID",
     "description": "Task to convert video from MP4 to AVI format",
     "displayName": "convert_video",
     "maxWaitSeconds": 0,
     "tasks": [
         {
         "batchJobPoolId": "JOB_POOL_OCID",
         "compartmentId": "COMPARTMENT_ID",
         "description": "Task to convert video from MP4 to AVI format",
         "displayName": "convert_video",
         "maxWaitSeconds": 0,
         "tasks": [
             {
               "batchTaskEnvironmentId": "TASK_ENVIRONMENT_OCID",
               "batchTaskProfileId": "TASK_PROFILE_OCID",
               "description": "Task to convert video from MP4 to AVI format",
               "environmentVariables": [
                 {
                   "name": "INPUT_BUCKET",
                   "value": "input_bucket"
                 },
                 {
                   "name": "INPUT_OBJECT",
                   "value": "input.mp4"
                 },
               {
                   "name": "OCI_BUCKET",
                   "value": "output_bucket"
               },
               {
                   "name": "OUTPUT_FILENAME",
                   "value": "output.avi"
               },
               {
                   "name": "OCI_NAMESPACE",
                   "value": "TENANCY_NAMESPACE"
               },
               {
                   "name": "OCI_REGION",
                   "value": "REGION"
               }
               ],
               "fleetAssignmentPolicy":
               {
                   "type": "BEST_FIT"
                 },
               "name": "convert_video",
               "type": "COMPUTE"
             }
         ],
         "waitForState": [
           "ACCEPTED"
         ],
         "waitIntervalSeconds": 0
              
    

    Substitua o seguinte de acordo com seu ambiente:

    • JOB_POOL_OCID
    • COMPARTMENT_ID
    • TASK_ENVIRONMENT_OCID
    • TASK_PROFILE_OCID
    • TENANCY_NAMESPACE
    • REGION
  3. Execute o seguinte comando:

     oci batch batch-job create --from-json file://video_conversion_job.json
    

    O trabalho levará até 10 minutos para ser concluído. Observe o job na Console do OCI para ver em qual estágio ele está.

Tarefa 7. Validar Resultados

  1. Na Console do OCI, vá para Object Storage.
  2. Localize o bucket de saída e valide se o vídeo transcodificado está presente.

OCI Batch x Abordagens Tradicionais

As soluções tradicionais de processamento em lote geralmente exigem gerenciamento de infraestrutura, configuração de schedulers e tratamento manual do dimensionamento. Isso aumenta a complexidade e a sobrecarga operacional. No entanto, o OCI Batch elimina esses desafios fornecendo um ambiente gerenciado no qual a programação, a execução e o provisionamento de recursos são tratados automaticamente. Isso facilita a execução de cargas de trabalho em larga escala sem experiência profunda em infraestrutura.

Melhores Práticas

Para usar o Lote da OCI de forma eficaz, as cargas de trabalho devem ser projetadas com escalabilidade em mente. A divisão de tarefas grandes em tarefas menores permite uma melhor execução paralela e melhor desempenho. Também é importante definir perfis de tarefa apropriados para que os recursos sejam alocados de forma eficiente. O registro e o monitoramento adequados devem ser ativados para garantir a visibilidade da execução do job. O uso de pools de jobs e prioridades ajuda a garantir que cargas de trabalho críticas sejam executadas no prazo, especialmente em ambientes compartilhados.

Conclusão

O Serviço OCI Batch fornece uma maneira simplificada e escalável de executar cargas de trabalho em lote na nuvem. Ao lidar com a orquestração, a programação e o provisionamento de computação de tarefas em um único serviço, ele reduz a complexidade operacional e melhora a eficiência. Para organizações que lidam com cargas de trabalho de grande escala e com uso intensivo de computação, o OCI Batch oferece uma solução confiável e flexível que permite que as equipes se concentrem em fornecer resultados, em vez de gerenciar a infraestrutura.

Links Relacionados

Confirmações

Mais Recursos de Aprendizado

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning no YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.