Google Cloud Platform: Task Queue

Douglas Fernandes
bawilabs
Published in
2 min readSep 27, 2017

A proposta deste artigo é descrever um recurso bastante interessante do Google Cloud Platform as Task Queues (PUSH). As tasks queues permitem que uma aplicação execute seu trabalho (aka task) de forma assíncrona, ou seja, sem influenciar no tempo de resposta do cliente. Caso uma aplicação necessite executar uma tarefa em background ou agendar uma tarefa, basta adicioná-la em uma task queue.

Push Queues

Esse tipo de queue entrega suas requests em uma taxa “confiável”. Como essa taxa é determinada por configuração, você pode controlar o scaling da aplicação e consequentemente o custo.

Uma vez que a task esteja enfileirada, o GCP garante que ela será executada. Elas são executadas como requests do App Engine, com isso, estão sujeitas ao timeout do serviço. No caso do automatic scaling, a task deve terminar em até 10 minutos, já as task de basic ou manual scaling podem rodar por até 24 horas.

Todas as tasks são realizadas de forma assíncrona, as aplicações que as criam não são notificadas quando elas finalizam, assim essas aplicações não conseguem saber se as tarefas foram bem-sucedidas ou não. O próprio serviço de task queue fornece um mecanismo de retry, portanto, caso uma tarefa falhe, ela poderá ser executada um número finito de vezes.

Caso de Uso

Um bom caso de uso para push queues são operações demoradas, por exemplo, atualizar várias entidades em um DB ou gerar um relatório. Nesses cenários, a aplicação pode enfileirar as tasks para que um worker trabalhe de forma assíncrona. Outro caso de uso é o agendamento de tarefas. Por exemplo, uma campanha publicitária pode ser agendada para ser executada em um tempo futuro, quando a data de vencimento chegar a tarefa será executada.

https://github.com/douglasfsti/task-queue

--

--

Douglas Fernandes
bawilabs

Geek apaixonado por café e pelo tricolor do Morumbi