BLOG

Nuvem Cron: Usando a função como um serviço para controlar custos

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 11 de fevereiro de 2019

A Função como Serviço (FaaS) está rapidamente encontrando uso em uma variedade de contextos operacionais e de desenvolvimento.

Embora a estrela em ascensão da computação em nuvem seja frequentemente mencionada em conjunto com APIs, IoT e aplicativos móveis, há um uso significativo da tecnologia fora do desenvolvimento. No relatório " Guia para Serverless " do The New Stack, descobrimos que os casos de uso técnico para serverless abrangem um conjunto robusto de usos:

Casos de uso técnico para serverless 

  • 73% APIs REST HTTP e aplicativos da web
  • 68% Trabalhos em lote ou tarefas agendadas 
  • 60% Lógica de negócios
  • 34% Pipeline de integração contínua

Como esperado, os aplicativos dominam, com quase três quartos dos entrevistados fazendo uso de serverless para APIs REST e aplicativos web. Mas depois disso fica mais interessante. Trabalhos em lote e tarefas agendadas, bem como a nebulosa "lógica de negócios", ainda reúnem mais da metade dos casos de uso dos entrevistados.

Caindo na arena das "tarefas agendadas" está o uso de funções de nuvem para gerenciar ativos de nuvem. Um dos recursos que a nuvem e os contêineres oferecem às empresas é a possibilidade de otimizar o uso de recursos. Normalmente pensamos nisso em termos de escalabilidade, especialmente quando combinado com contêineres e microsserviços. Ao dimensionar apenas as partes de um aplicativo que exigem dimensionamento, você economiza recursos de computação (e, portanto, custos).

Mas o outro lado dessa equação é a capacidade de desligar recursos quando eles não estão em uso. O apelo, em parte, da função como serviço e sem servidor (não, eles não são necessariamente a mesma coisa) é o verdadeiro modelo de precificação de serviços públicos. Você realmente só paga pelo que usa. Como o ideal é que não haja recursos ociosos em um ambiente sem servidor/FaaS, você não paga por eles. Na nuvem, no entanto, você pode estar pagando por recursos ociosos pelo mesmo custo que pagaria se esses recursos estivessem executando algum aplicativo ou serviço. É um pequeno detalhe, mas que pode aumentar se você tiver muito tempo de inatividade para um aplicativo.

É aqui que as funções da nuvem podem ajudar. Ao aproveitar os recursos de função como serviço da nuvem em que você está executando, você pode agendar uma tarefa para desligar instâncias quando elas não estiverem em uso e reiniciá-las mais tarde. Isso pressupõe um cronograma bastante estático, como um aplicativo que é usado apenas durante um dia de trabalho bem definido. Esses aplicativos geralmente são aplicativos "empresariais" tradicionais, usados pelos funcionários apenas durante o dia e a semana de trabalho. Desligar as instâncias que compõem um aplicativo empresarial no fim de semana pode economizar custos consideráveis ao longo do tempo. 

Usar a função do seu provedor de nuvem como uma oferta de serviço pode lhe fornecer uma maneira de cortar o custo de manter esses aplicativos "aquecidos" durante a noite e durante o fim de semana. Mesmo que você trabalhe 12 horas por dia, você pode cortar seus custos pela metade desligando-os durante as outras 12 horas.

Se você estiver curioso sobre como implementar o que me parece uma versão nebulosa do cron, confira estes recursos: