O blog da AWS

Job Scheduler: duas estratégias de adoção vindas do on premise para a AWS

Por Marco Ruiz, Arquiteto de Soluções, AWS Brasil Setor Público
Por Victor Pimenta Malof, Arquiteto de Soluções, AWS Brasil Setor Público

O que é Job Scheduler

Gerenciar processos e tarefas repetitivas manualmente pode se tornar um desafio e afetar a produtividade de qualquer negócio. Precisamos lembrar das atividades, executá-las nos horários corretos e ainda corremos o risco de eventuais falhas ou atrasos. Para resolver esse problema, ferramentas de agendamento de tarefas (job schedulers) são muito úteis para automatizar qualquer tipo de rotina, permitindo programar jobs para serem executados baseados em parâmetros como: prioridade de tarefa, tempo de execução da tarefa, disponibilidade de recursos computacionais, números de tarefas paralelas e frequência de ocorrência, trazendo mais eficiência e confiabilidade aos processos.

Além disso, alguns benefícios do uso de job schedulers incluem: eliminação da necessidade de múltiplas ferramentas e coordenação manual, centralizando o agendamento; redução de falhas e atrasos por depender menos de ações manuais; mais segurança e rastreabilidade das tarefas agendadas.

Job Scheduler na AWS

Dentro das 7 estratégias de migração da AWS, vamos abordar duas que apresentam abordagens distintas de movimentação. Explicaremos a seguir, as regras de Rehost e o Refactor.

Rehost

Essa estratégia também é conhecida como lift and shift. Usando essa estratégia, é possível mover a aplicação do ambiente de origem, para a nuvem AWS sem fazer nenhuma alteração, por exemplo, é possível migrar a pilha de aplicativos do ambiente on premise para nuvem AWS.

Para a estratégia, abordaremos a implementação da ferramenta BMC Control-M, que foi apresentada no AWS Re:invent de 2021 como ferramenta de apoio para o AWS Mainframe Migration. O Control-M integra, automatiza e orquestra fluxos de trabalho on premise e na nuvem da AWS.

Na arquitetura apresentada na Figura1, mostramos a integração do fluxo de trabalho do Control-M que está hospedado em uma instância do Amazon Elastic Compute Cloud (Amazon EC2) com alta disponibilidade e usa um banco de dados Microsoft SQL Server também em uma instancia Amazon EC2 com alta disponibilidade para manter as configurações necessárias para executar trabalhos em lote. Segundo o fabricante, a versão de Control-M deve ser 9.0.18 ou superior, Amazon Linux 2022, e instâncias EC2 da família M5.

Figura 1 – Desenho de arquitetura usando o Control-M em ambiente AWS

O serviço de AWS VPN site-to-site ou o serviço de AWS Direct Connect podem ser acionados pelo cliente para alcançar os ativos no ambiente on premise.

Vantagens e desvantagens de uma estratégia de Rehost

Vantagens:

  • Tempo de implementação
  • Menor tempo de interrupção da aplicação
  • Manter o lincenciamento já adiquirido

Desvantagens:

  • Sem otimização
  • Dificuldade de escalabilidade
  • Custo de manutenção de licenciamento

Refactor

Usando a estratégia do Refactor, é possível mover uma solução para a nuvem, modificando sua arquitetura e plataforma, aproveitando ao máximo os recursos nativos da nuvem, melhorando e ganhando agilidade além de desempenho e escalabilidade. Umas das possíveis abordagens em uma migração de uma solução de job scheduler para nuvem é o uso do AWS Batch.

Ao iniciar um processo de refatoração, é crucial entender que uma análise de compatibilidade completa deve ser feita. No caso de uma refatoração de uma solução de job scheduller devemos pensar desde a mudança de plataforma (solução on premise para o AWS Batch) até a restruturação (Refactor) dos códigos de automação escritos pra um melhor aproveitamento da solução nativa em nuvem. Por exemplo usando o AWS Batch as automações podem ser orientadas a eventos, o que traz um significativo ganho, para a solução, porém carece de adaptação da lógica anterior. Neste sentido, etapas adicionais de configuração e ajuste são necessárias para uma transição bem sucedida.

Citamos aqui:

  1. Avaliação e planejamento
  2. Reprojeto e adaptação
  3. Migração gradual
  4. Definir uma rotina de testes
  5. Treinamento da equipe
  6. Monitoramento, backup e recuperação
  7. Entrega e acompanhamento contínuo

Solução com AWS Batch

Buscando uma solução com maior quantidade de recursos, o AWS Batch ajuda a executar cargas de trabalho de computação em lote na nuvem. O AWS Batch contém funcionalidades importantes como: encadeamento de até 20 processos – sendo um processo em andamento e até 19 processos aguardando na fila de modo dependente – até suportar cargas de trabalho de HPC (High Performance Computing) usando funcionalidades de trabalhos paralelos de vários nós, para que possa executar trabalhos únicos, que abrangem várias instâncias do EC2.

O AWS Batch é o serviço da AWS que permite a execução com eficiência milhares de tarefas de computação em lote e em Machine Learning, enquanto otimizam recursos computacionais para que as empresas possam se concentrar na análise de resultados e na solução de problemas.

Componentes do AWS Batch

 O AWS Batch permite a criação de job definitions, que são muito similares às task definitions utilizadas em containerização. A job definitions especifica exatamente como um determinado job irá executar, incluindo as alocações de recursos computacionais necessários como CPU, memória, armazenamento e rede. Os jobs submetidos ao AWS Batch são colocados em uma job queue, que irá reter os jobs até que o ambiente computacional apropriado esteja disponível para executá-los. As filas de jobs lidam eficientemente com o escalonamento de milhares de jobs simultâneos, otimizando automaticamente para performance e custo. O ambiente computacional no AWS Batch pode ser provisionado sob demanda na forma de um cluster de instâncias EC2 ou então usar sua própria capacidade de computação na forma de um cluster Docker.

Contrário a abordagem de rehost apresentada anteriormente, o AWS Batch irá escalar horizontalmente o ambiente para acomodar picos de demanda. Uma grande vantagem de se utilizar o AWS Batch é a integração nativa com containers Docker, facilitando o empacotamento das cargas de trabalho. O AWS Batch abstrai toda a complexidade relacionada a provisionamento, escalonamento e gerenciamento da infraestrutura.

Apresentamos a seguir uma visão geral do AWS Batch:

Figura 2 – Visão geral do AWS Batch

Jobs e seus estados

O Job é caracterizado como submetido quando é aceito na fila, mas ainda não está apto para o scheduler executar. Ele pode seguir para o status de pendente* quando o Job tem dependências de outros Jobs e ainda não está completo. Quando o Job está apto para o scheduler executar, ele é designado executável.  Assim que o Job está em processo de agendamento para um recurso computacional, ele é modificado para o estado iniciando, passando para executando quando o Job está sendo executado por um recurso computacional. O Job pode apresentar alguma falha durante o processo de execução ou quando ainda está em estado de pendente para executar, devido a diversos fatores de dependências ou cancelamento, e atinge o estado de sucesso quando o mesmo é finalizado.

Figura 3 – Jobs e seus estados

 

*Se alguma dependência desse Job não acontece, ele automaticamente transita do status de Pendente para Falha, assim como se no caso se uma execução não for bem sucedida.

 

Vantagens e desvantagens de uma estratégia de Refactor

Vantagens:

  • Escalabilidade e otimização de custos
  • Cloud Native
  • Orientado a eventos

Desvantagens:

  • Curva de aprendizado
  • Tempo de implementação
  • Esforço de desenvolvimento

Conclusão

Conforme demonstrado no blogpost, o agendamento confiável e escalável de trabalhos é essencial para cargas de trabalho no ambiente de TI, incluindo ambientes em nuvem. A AWS oferece serviços gerenciados como o AWS Batch, que além de serem gerenciados e altamente escaláveis, tem a capacidade de facilitar o scheduling de pipelines de big data, processamento distribuído e fluxos de machine learning.  Porém é possível implementar soluções de mercado, sob estratégia de rehost, como vimos o BMC Control-M que estão disponíveis para executar em Amazon EC2, quando envolvem questões de velocidade de migração e questões de licenciamento.

No objetivo de apoiar a tomada de decisão sobre a melhor abordagem para Job Scheduler, considerando requisitos técnicos e de negócio, a estratégia de Refactor, que permite adotar serviços gerenciados de nuvem, é vantajosa quando o projeto tem condições de percorrer as fases citadas acima. Nesses casos, a utilização dessa solução deve ser preferencialmente seguida, uma vez que traz benefícios de automatização e escalabilidade. Dessa forma, conclui-se que a abordagem habilitada por serviços como o AWS Batch simplifica operações, reduz custos e permite focar em diferenciais de negócio das aplicações.


Sobre os autores

Marco Ruiz é arquiteto de Soluções Senior na Amazon Web Services para o setor público, atua com foco em desenvolvimento de parceiros. Ingressou na AWS em 2021.
Victor Pimenta Malof é arquiteto de Soluções da Amazon Web Services para o Setor Público, atua em clientes da vertical de Power & Utilites. Ingressou na AWS em 2022.