POr Flávio Rescia e Gustavo Lima
Um ponto que sempre colocamos em pauta referente a AWS, é de como podemos reduzir custos. Ao iniciar esse debate, sempre apontamos em primeiro lugar o desligamento de recursos inutilizados. Um assunto normal quando falamos de aplicações escaláveis, ou auto escaláveis, mas e quando falamos de aplicações mais tradicionais, que rodam em servidores (instâncias ec2)? É aí que introduzimos o recurso de desligamento em determinados horários do dia, semana ou mês. Estamos falando do Instance Scheduler.
O que é o AWS Instance Scheduler?
O AWS Instance Scheduler é uma solução da AWS, que permite ligar e desligar serviços da AWS, como o EC2, RDS , por exemplo, de forma automática. Com o Instance Scheduler, você pode usar TAGs nas instâncias, e baseada nelas o desligamento e ligamento será feito.
Arquitetura
Como funciona?
A configuração é iniciada utilizando o CloudFormation, um serviço capaz de criar os componentes acima, e onde podemos definir algumas das seguintes informações: tags, regiões, tipo de serviços (EC2, RDS ou ambos), conta, frequência de execução e etc.
O CloudFormation (template) configura um evento no Eventbridge (antigo CloudWatch Events), que é disparado de tempos em tempos, acionando/chamando a função Lambda, que valida todas as instâncias EC2 e RDS, com base em uma determinada TAG. Além de fazer a comparação das máquinas com base na configuração do DynamoDB. Em seguida, ele executa a ação de iniciar ou desligar a instância.
Veja outras funções presentes na arquitetura:
Função IAM
Essa solução inclui um modelo que cria as funções do AWS Identity and Access Management (IAM) necessárias para iniciar e interromper instâncias em contas secundárias.
TAGs
O AWS Instance Scheduler pode adicionar tags automaticamente em todas as instâncias que ele inicia ou interrompe. A solução também inclui macros que permitem adicionar informações variáveis às tags.
CLI do Scheduler
Essa solução inclui uma interface de linhas de comando (CLI) que fornece comandos para configurar programações e períodos. A CLI permite aos clientes estimar a economia de custos para uma determinada programação.
SSM
Nas instâncias do EC2, o AWS Instance Scheduler pode usar janelas de manutenção do SSM definidas na mesma região que as instâncias e iniciar e interromper as instâncias da janela de manutenção.
Exemplo para Caso de Uso
Em um ambiente de desenvolvimento e/ou teste, pode-se aplicar a solução baseando somente no tempo de utilização (horário comercial) simplesmente adicionando TAGs especificas nos recursos de desenvolvimento.
Neste artigo, escrito por Gerson Itiro Hidaka Solutions Architect da AWS explica mais sobre esse assunto.
Benefícios
Em um cenário de uso dos recursos apenas durante o horário comercial, podemos economizar cerca de 70% comparando com a utilização das instâncias que ficam ligadas 24 horas por dia e em todos os dias da semana (7).
Recentemente a AWS fez o anúncio de uma novidade sobre a solução, onde foram adicionados documentos personalizados no AWS Systems Manager, que podem ser utilizados pela console do serviço, para iniciar e desligar as instâncias ECS e RDS. Esse novo recurso permite fazer customizações, como por exemplo criar runbooks para trocar o tipo da instância.
Fonte de referência:
Documentação oficial da Solução
Artigo com “how to” de como implementar o Instance Scheduler