O blog da AWS
Automatizando, interrompendo e iniciando ambientes Amazon MWAA para reduzir custos
Esta postagem do blog mostra como você pode economizar custos automatizando a interrupção e a inicialização de um ambiente Amazon Managed Workflows for Apache Airflow (Amazon MWAA). Ele descreve como você pode reter os dados armazenados em um banco de dados de metadados e apresenta uma solução automatizada que você pode usar em sua conta da AWS.
Os clientes gerenciam pipelines de dados de ponta a ponta em grande escala com o MWAA. É uma prática recomendada comum executar ambientes que não sejam de produção para desenvolvimento e teste. Um ambiente de não produção geralmente não precisa ser executado durante todo o dia devido a fatores como o horário de trabalho da equipe de desenvolvimento. Como não há uma maneira automática de interromper um ambiente MWAA quando não está em uso e a exclusão de um ambiente causa perda de metadados, os clientes geralmente o executam continuamente e pagam o custo total.
Visão geral
O Amazon MWAA possui uma arquitetura distribuída com vários componentes, como scheduler, worker, servidor web, fila e banco de dados. Os clientes criam pipelines de dados como gráficos acíclicos direcionados (DAGs) e executam no Amazon MWAA. Os DAGs usam variáveis e conexões do banco de dados de metadados Amazon MWAA. O histórico das execuções do DAG e os dados relacionados são armazenados no mesmo banco de dados de metadados. O banco de dados também armazena outras informações, como funções e permissões do usuário.
Quando você exclui o ambiente Amazon MWAA, todos os componentes, incluindo o banco de dados, são excluídos para que você não incorra em nenhum custo. Como essa exclusão normal resulta na perda de metadados, você precisa de uma solução personalizada para fazer backup dos dados e automatizar a exclusão e a recriação.
O aplicativo de exemplo exclui e recria seu ambiente MWAA em um intervalo programado definido por você usando o Amazon EventBridge Scheduler. Ele exporta todos os metadados para um bucket do Amazon S3 antes da exclusão e importa os metadados de volta para o ambiente após a criação. Como esse é um banco de dados gerenciado e você não pode acessá-lo fora do ambiente Amazon MWAA, ele usa DAGs para importar e exportar os dados. Todo o processo é orquestrado usando o AWS Step Functions.
Arquitetura de implantação
O aplicativo de amostra está em um repositório do GitHub. Use as instruções no readme para implantar o aplicativo.
O aplicativo de exemplo implanta os seguintes recursos —
- Uma máquina de estado do Step Functions para orquestrar as etapas necessárias para excluir o ambiente MWAA.
- Uma máquina de estado do Step Functions para orquestrar as etapas necessárias para recriar o ambiente MWAA.
- Regras do EventBridge Scheduler para acionar as máquinas de estado no horário agendado.
- Um bucket S3 para armazenar detalhes do ambiente e do backup do banco de dados de metadados.
- Dois arquivos DAG carregados no bucket S3 de origem configurado com o ambiente MWAA. O DAG de exportação exporta metadados do banco de dados de metadados MWAA para fazer backup do bucket S3. O DAG de importação restaura os metadados do bucket S3 de backup para o ambiente MWAA recém-criado.
- O AWS Lambda funciona para acionar os DAGs usando a API MWAA CLI.
- Uma máquina de estado do Step Functions para aguardar o longo processo de criação e exclusão do MWAA.
- Regra do Amazon EventBridge para notificar sobre falhas de máquina de estado.
- Tópico do Amazon Simple Notification Service (Amazon SNS) como alvo da regra do EventBridge para notificações de falhas.
- Amazon Interface VPC Endpoint for Step Functions para ambiente MWAA implantado no modo privado.
Parar fluxo de trabalho
Em um horário programado, o Amazon EventBridge Scheduler aciona uma máquina de estado do Step Functions para interromper o ambiente MWAA. A máquina de estado executa as seguintes ações:
- Obtenha detalhes do ambiente Amazon MWAA, como configurações do airflow, função de execução do IAM, configurações de registro e detalhes da VPC.
- Se o ambiente não estiver no status “DISPONÍVEL”, ele falhará no fluxo de trabalho ao se ramificar para o estado “Pausa sem sucesso”.
- Caso contrário, ele executa o fluxo de trabalho normal e armazena os detalhes do ambiente em um bucket do S3 para que o fluxo de trabalho Start possa recriar o ambiente com esses dados.
- Acione um DAG do MWAA usando a função AWS Lambda para exportar metadados para o bucket do Amazon S3. Essa etapa usa o Step Functions para aguardar a integração do token de retorno de chamada.
- Retome o fluxo de trabalho quando o token de tarefa for retornado do MWAA DAG.
- Exclua o ambiente Amazon MWAA.
- Aguarde para confirmar a exclusão.
Iniciar fluxo de trabalho
Em um horário agendado, o EventBridge Scheduler aciona a máquina de estado do Step Functions para recriar o ambiente MWAA. As etapas na máquina de estado executam as seguintes ações:
- Recupere os detalhes do ambiente armazenados no bucket do Amazon S3 pelo fluxo de trabalho de parada.
- Crie um ambiente MWAA com a mesma configuração do original.
- Acione um DAG MWAA por meio da função Lambda para restaurar os metadados do bucket do S3 para o ambiente recém-criado.
Economia de custos
Considere um pequeno ambiente MWAA em us-east-2 com no mínimo um worker, no máximo um worker e 1 GB de armazenamento de dados. No momento em que este artigo foi escrito, o custo mensal do meio ambiente era de $357,80. Vamos supor que você use esse ambiente entre 6h e 18h nos dias de semana.
A programação no arquivo env do aplicativo de amostra se parece com:
Como a criação do ambiente MWAA leva entre 20 e 30 minutos, o MWAA_RESUME_CRON_SCHEDULE é definido às 17h30.
Supondo 21 dias da semana por mês, o custo mensal do ambiente é de USD 123,48 e é 65,46% menor em comparação com a execução contínua do ambiente:
- 21 weekdays * 12 hours * 0.49 USD per hour = $123.48
Considerações adicionais
O aplicativo de exemplo restaura somente os dados “at-store”. Embora o processo de exclusão pause todos os DAGs antes de fazer o backup, ele não pode interromper nenhuma tarefa em execução ou mensagem em andamento na fila. Ele também não faz backup de tarefas que não estejam concluídas. Isso pode resultar na perda do histórico de tarefas que estavam sendo executadas durante o backup.
Com o tempo, o tamanho dos metadados aumenta, o que pode aumentar a latência no desempenho da consulta. Você pode usar um DAG, conforme mostrado no exemplo, para limpar o banco de dados regularmente.
Evite definir o catchup pelo sinalizador de configuração padrão na configuração do ambiente como verdadeiro ou na definição do DAG, a menos que seja necessário. O recurso Catch up executa todas as execuções do DAG que foram perdidas em qualquer intervalo de dados. Quando o ambiente é criado novamente, se o sinalizador for verdadeiro, ele acompanha as execuções perdidas do DAG e pode sobrecarregar o ambiente.
Conclusão
Automatizar a exclusão e a recriação de ambientes Amazon MWAA é uma solução poderosa para otimização de custos e gerenciamento eficiente de recursos. Seguindo as etapas descritas nesta postagem do blog, você pode garantir que seu ambiente MWAA seja excluído e recriado sem perder nenhum metadado ou configuração. Isso permite que você implante novas alterações e atualizações de código com mais rapidez e facilidade, sem precisar configurar seu ambiente todas as vezes manualmente.
A possível economia de custos de operar seu ambiente MWAA por apenas 12 horas nos dias de semana é significativa. O exemplo mostra como você pode economizar até 65% de seus custos mensais escolhendo essa opção. Isso o torna uma solução atraente para organizações que buscam reduzir custos e, ao mesmo tempo, manter um alto nível de desempenho.
Visite o repositório de exemplos para saber mais sobre o Amazon MWAA. Ele contém uma grande variedade de exemplos e modelos que você pode usar para criar seus próprios aplicativos.
Para obter mais recursos de aprendizado Serverless, visite Serverless Land.
Este artigo foi traduzido do Blog da AWS em Inglês.
Sobre o autor
Uma Ramadoss é uma especialista em serviços de integração
Chandan Rupakheti é arquiteto de soluções
Tradutor
Rodrigo Peres é um Solutions Architect na AWS, com mais de 20 anos trabalhando com arquitetura de soluções, desenvolvimento de sistemas e modernização de sistemas legados.