Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Deploy API Back End

Bom dia pessoal,

Não sei se criei essa dúvida no Forum certo. Eu criei uma API utilizando NodeJs, Express e SQLite para armazenar informações de tabela de preços. Até o momento, eu sempre fazia o deploy dos meus projetos backend pelo Render e quando eu trabalhava com Banco de Dados Relacional, eu subia o arquivo .db no meu Github.

Porém, como o arquivo .db tem mais de 100 MB, eu não consigo subir esse arquivo no meu Github. Logo, eu precisava de uma solução para fazer o deploy da minha API ou de colocar minha base de dados em nuvem e utiliza-la com minha API. Mas precisava de uma solução gratuita.

Alguém consegue me ajudar?

Tenho pouca prática com Back End, rsrs

2 respostas
solução!

Olá, Daniel.

Tudo bem?

Você abriu o seu tópico no fórum correto sim, nesse caso no fórum de DevOps :)

Em relação a sua dúvida: Quando o arquivo do banco de dados ultrapassa o limite permitido pelo GitHub, realmente precisamos buscar alternativas. Vou sugerir algumas opções que podem te ajudar:

  • Uma alternativa é utilizar um Serviço de Banco de Dados na Nuvem:

    • Heroku: O Heroku oferece um plano gratuito que pode ser útil. Você pode usar o Heroku Postgres, que é um serviço de banco de dados relacional. A migração do SQLite para Postgres pode exigir algumas adaptações no seu código, mas é uma solução viável.
    • ElephantSQL: Outro serviço que oferece um plano gratuito para PostgreSQL. É uma boa opção se você quiser manter a simplicidade.
  • Utilizar o Render com Banco de Dados Externo e aproveitar a sugestão acima:

    • Já que você está familiarizado com o Render, você pode continuar usando-o para o deploy da sua API e configurar a conexão com um banco de dados externo, como o Heroku Postgres ou ElephantSQL.
  • Google Firebase:

    • Se você estiver aberto a usar um banco de dados NoSQL, o Firebase oferece um plano gratuito e pode ser uma boa alternativa dependendo da estrutura dos seus dados.

Exemplo básico e prático com Heroku Postgres:

  1. Crie uma conta no Heroku.

  2. Crie um novo app no Heroku.

  3. Vá até a aba "Resources" e adicione o "Heroku Postgres" ao seu app.

  4. No seu código Node.js, instale o pacote pg:

    npm install pg
    
  5. Configure a conexão com o banco de dados Postgres no seu código:

    const { Pool } = require('pg');
    const pool = new Pool({
      connectionString: process.env.DATABASE_URL,
      ssl: {
        rejectUnauthorized: false
      }
    });
    
    pool.connect();
    
  6. Faça a migração dos dados do seu SQLite para o Postgres. Existem ferramentas que podem te ajudar com isso, como o pgloader.

Espero ter ajudado de alguma forma. Qualquer dúvida pode mandar aqui de novo. Bons estudos.

Boa tarde Renan! Tudo bem?

Eu achava que o Heroku não era mais gratuíto, por isso nem cheguei a olhar, mas vou dar uma olhada para saber quais as limitações do plano gratuito em relação ao pago, o mesmo vale para o ElephantSQL. Eu havia tentado com o MongoDB, mas a medida que eu enviava dados a base, a performance ia caindo. Então, se antes eu conseguia enviar de 700 itens a cada 6 min, a performance do MongoDB foi caindo até chegar um ponto em que eu só conseguia enviar 20 itens a cada 6 min. Eu estou fazendo um teste com o Firestone agora. Como o App Script não suporta que uma função ultrapasse 6 min de execução, eu utilizei o Colab para puxar os dados que estão no Google Sheets para enviar a base. O único problema é o limite de 20.000 envios diários e como eu tenho cada aba do Sheets com aproximadamente 100.000 linhas, eu levaria em torno de 5 dias para cada uma delas para conseguir enviar tudo. Então, vale a pena sim dar uma olhada no Heroku e ElephantSQL.

Te agradeço pela ajuda, pois ajudou a direcionar os próximos passos.

Grande abraço!