Este é um projeto desenvolvido como parte do desafio para uma vaga de desenvolvedor sênior TypeScript, que consiste em um crawler para acessar uma página específica e salvar informações detalhadas.
- Docker e Docker Compose instalados
- Observação: Se você estiver utilizando o MacOs, é necessário habilitar a opção
Rosetta for x86/amd64 emulation
na configuração do docker
- Clone o repositório
git clone https://github.com/seu-usuario/seu-projeto.git
- Configuração do Banco de Dados
- O Docker Compose sobe automaticamente um contêiner do PostgreSQL
- As configurações de conexão estão fixas no arquivo docker-compose.yml, porém pode ser utilizado um arquivo
.env
- Caso precise acessar o banco de dados, as configurações são as seguintes: Conexão: Postgres, Host: localhost, Usuário: dev, Senha: dev, Porta: 5432
- Instruções para Execução
- Acesse a pasta do projeto e execute o comando
docker-compose up -d
- Acesse a pasta do projeto e execute o comando
- Bibliotecas Utilizadas
- dotenv: Gerenciamento de variáveis de ambiente
- locate-chrome: Localização do binário do Chrome
- moment: Formatação de datas
- node-cron: Agendamento de tarefas periódicas
- sequelize`: ORM, para manipulação do banco de dados PostgreSQL, podendo criar migrations, seeders e models
- pg: Driver do postgres para o nodejs (Dependência do ORM sequelize)
- pg-hstore`: Serializando e desserialização do JSON para o formato hstore (Dependência do ORM sequelize)
- puppeteer: Automação do navegador para web scraping
Toda a preparação para o ambiente linux já foi feita no Dockerfile, qualquer sistema operacional que executar o docker-compose, subirá um container linux.
Todo o processo de deploy também já está configurado no Dockerfile e docker-compose.yml, basta executar o docker-compose up -d. Também é possível realizar o deploy em clouds utilizando o Dockerfile, alguns exemplos são: AWS, utilizando o produto Lambda ou na Google Cloud, utilizando o produto Clound Run.
- Monitoramento Contínuo
- O monitoramento pode ser feito pelos logs do container e também podendo ser integrado com plataformas de monitoramente para emissão de alertas e notificações, como por exemplo: sentry, datadog, new relic.
- Estratégias para Manutenção
- A estratégia para manuntenção pode ser feita em conjunto com o monitoramente, ao ser emitido um alerta de erro, os desenvolvedores irão investigar a causa raiz e corrigir
- O erro pode ser uma mudança na estrutura do HTML da página ou tipos de valores não esperados que dão erro ao inserir no banco de dados.
- Dockerfile e docker-compose.yml
- Ao executar o container docker, o script já estará em execução, já com a cron job configurada no container, executando o script automaticamente a cada 30 minutos
- Também é possível executar o script no ambiente de desenvolvimento, para isso é necessário criar um arquivo .env na raiz do projeto e definir as seguintes variáveis para informar o banco de dados:
DB_NAME
,DB_USER
,DB_PASS
,DB_HOST
eDB_PORT
. - Agora basta executar o comando
yarn dev
ounpn run dev
- Ao executar o script no ambiente de desenvolvimento, o navegador será aberto, exibindo todo o processo de web scraping