
Já há algum tempo tenho estado a aprender Python, uma linguagem de programação fácil de aprender e a preferida para os engenheiros de redes dando os primeiros passos em automação. Vou lendo uns livros, uns videozitos no youtube, criando uns programas burros. Mas o bom mesmo é criar um projecto, por mais pequeno que seja, e fazê-lo até ao fim. Como projecto, decidi fazer um bot.
Um bot é um software que faz alguma tarefa repetitiva de forma automatizada e sem necessidade de interacção humana. Neste caso específico, fiz um bot que publica 2 no twitter vezes por dia as estatísticas da Covid-19 em Angola. Pode vê-lo em acção na conta @Covid19AO_Stats. Os dados são capturados do site oficial angolano em http://www.covid19.gov.ao.

Para este projecto decidi juntar o estudo de Python à minha curiosidade sobre a facilidade de construir aplicações na cloud. Muita gente diz que é fácil, muita gente diz que custa pouco. Nada melhor do que chegar às minhas próprias conclusões.
Arquitectura
A figura abaixo mostra a arquitectura para o projecto. Para fazer o bot utilizei os serviços da Amazon Web Services (AWS) mas acredito que nada impede que seja feita com serviços equivalentes em outros provedores de serviços cloud.

Poderia criar uma instância (nome que a AWS dá às máquinas virtuais) funcionando 24h por dia e que executava o código em horários definidos com um cronjob por exemplo. Mas isso é muito old school. O serviço central do projecto é AWS Lambda. AWS Lambda é um serviço que permite executar código sem necessidade de aprovisionar ou gerir servidores. É esta última característica que define os serviços denominados serverless (sem servidores).
Configurei o Lambda com runtime Python 3.6. O código conecta-se ao servidor, baixa a página, processa os valores e publica no twitter usando a API do twitter. Com Cloudwatch Events faço o código “disparar” à hora que quiser ou em intervalos regulares sem ter que o fazer manualmente. Simples neh?
E daí para frente?
Este pequeno bot foi feito simplesmente como um exercício didático ligando vários elementos que incitam a minha curiosidade: Python, webscraping, serverless e cloud. Não tenho por enquanto quaisquer outros objectivos, financeiros por exemplo.
Que achou deste pequeno projecto? Algo a melhorar? Sente-se inspirado a fazer algo parecido?