Serverless + JS: Um bot de web-scrapping diário
Guilherme Stein
Posted on November 14, 2022
Introducao
Se você está procurando uma maneira eficiente de coletar informações da web e não quer se preocupar com a infraestrutura de servidores, você precisa conhecer o poder do Serverless. O Serverless é um framework que permite criar arquiteturas sem servidores orientadas a eventos. Isso significa que você pode se concentrar nos eventos e comportamentos esperados em seus projetos, em vez de se preocupar com as máquinas que devem executá-los.
Ao usar o Serverless, você pode economizar tempo e dinheiro, pois só paga pelos recursos que usa. Além disso, para os desenvolvedores iniciantes, o Serverless oferece a possibilidade de criar projetos sem ter que lidar com a complexidade da infraestrutura.
Neste post, mostrarei como criei um bot de web-scrapping diário usando Serverless e JavaScript para informar o cardápio do restaurante universitário da minha faculdade pelo Telegram. O projeto está disponível em meu repositório GitHub (https://github.com/guisteink/sls-menu-service), e vou presumir que você tenha um conhecimento básico em Serverless.
Configuracoes de infraestrutura
O maximo que voce vai precisar saber configurar de infra nesse projeto sera isso.
provider:
name: aws
runtime: nodejs12.x
memorySize: 128
stage: v2
region: sa-east-1
timeout: 30
Simples assim!
Duas funções são executadas diariamente às 10h45 e 15h45 para capturar o almoço e o jantar do dia, respectivamente. Essas funções são agendadas via Lambda e consomem o método de scraping do site que contém o cardápio diário. Em seguida, a mensagem é tratada com alguns regex para melhor identificação no Telegram e enviada para o bot, que direciona a mensagem para o grupo (https://t.me/cardapioufes).
Funcoes
O handler dispara o mecanismo citado, e pode ser ativado de duas maneiras:
- Pelo job agendado;
- Por uma chamada http (POST) na rota.
Tambem existe o endpoint para receber o cardapio diario via REST, dando um GET na rota. Em casos de consumo da API.
functions:
getMenuOfTheDay:
handler: src/endpoints/getMenuOfTheDay.handler
events:
- http:
method: GET
path: /menu
sendLunchMessageToGroup:
handler: src/endpoints/scheduleEvent.handler
events:
- http:
method: POST
path: /message/almoco
- schedule:
rate:
- cron(45 13 * * * *)
enabled: true
input:
dish: almoco
Conclusao
Esse é apenas um exemplo do que é possível fazer com a arquitetura Serverless. Com ela, você pode criar projetos escaláveis e eficientes, economizando tempo e dinheiro. Além disso, com o Serverless, você pode se concentrar na lógica do seu projeto, em vez de se preocupar com a infraestrutura de servidores.
Referencias
Posted on November 14, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.