DEV Community

Cover image for Serverless + JS: Um bot de web-scrapping diário
Guilherme Stein
Guilherme Stein

Posted on • Edited on

Serverless + JS: Um bot de web-scrapping diário

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
Enter fullscreen mode Exit fullscreen mode

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).

Image description

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
Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)