Conheça o PocketBase: um BaaS Alternativo ao Firebase

Conheça o PocketBase: um BaaS Alternativo ao Firebase

Uma alternativa Open Source ao Firebase, Supabase, e outros serviços BaaS (Backend as a Service)

Olá, neste artigo daremos uma olhada no PocketBase, um BaaS (Backend as a Service) alternativo ao Firebase, Supabase e outros serviços. Que roda somente com hospedagem própria (self-hosting).

O que exatamente é o PocketBase

Como mencionado acima, PocketBase é um serviço de backend similar ao FIrebase, contando com um ambiente com diversas ferramentas para facilitar e agilizar o desenvolvimento do seu projeto, abstraindo boa parte do backend.
A principal diferença é que o PocketBase não oferece hospedagem, você precisa fazer a hospedagem do serviço em algum serviço de hospedagem.

Quais ferramentas possui?

O PocketBase conta com algumas ferramentas/funções para uso:

  • Banco de Dados

  • Authenticator (Gerenciamento de Usuários)

  • Storage (Armazenamento de arquivos)

  • Dashboard

Banco de dados

O banco de dados disponibilizado pelo PocketBase é o SQLite, um banco de dados relacional como PostgreSQL ou MySQL, que você pode usar usando a API fornecida.
A sintaxe da API é bem parecida com a do Firestore, como no exemplo abaixo, usado para buscar um registro da coleção “exemplo”:

const record = await pb.collection('exemplo').getOne('ID_REGISTRO');

E como todos os recursos, você pode visualizar e gerenciar os dados através da Dashboard:

Authenticator

O PocketBase também disponibiliza recursos para gerenciamento dos usuários da sua aplicação.
O PocketBase armazena os dados dos usuários em uma tabela do banco de dados, que você pode editar conforme as suas necessidades. E utiliza tokens JWT para a segurança e encriptação dos usuários.
O PocketBase também tem a opção de utilizar login com outros serviços, como Google ou Github.
Código para realizar login com usuário e senha:

const authData = await pb.collection('users').authWithPassword('USUARIO_OU_EMAIL', 'SENHA');

Storage

Um recurso muito legal do PocketBase é o storage, para armazenamento de arquivos.
Por padrão, o storage armazena os arquivos na máquina em que está rodando (como mencionado, o PocketBase precisa ser hospedado individualmente). Mas você tem a opção de utilizar o Amazon S3 caso deseje um storage dedicado.
Os arquivos são vinculados às tabelas do banco de dados, um mesmo campo de arquivo pode conter mais de um arquivo, ou conter nenhum arquivo.

Dashboard Administrativo

Como mostrado em algumas funções acima, o PocketBase conta com uma Dashboard para visualização e gerenciamento dos dados, configurações do serviço, etc. Você pode acessar uma demo online da dashboard aqui.

Custos

Como mencionado, o PocketBase não conta com a hospedagem do serviço, ou seja, você precisa rodar ele localmente (para testes ou experimentos), ou utilizar algum serviço de hospedagem, e o seu custo sai justamente desta hospedagem.

Você pode gerar um único executável e executar o serviço normalmente numa máquina reservada, ou pode gerar um arquivo docker e rodar em um container.
Ambas as opções têm diversos serviços disponíveis para isso.

Segundo o PocketBase, uma VPS com 2vCPU e 4 GB de RAM consegue suportar 10.000 ou mais conexões simultâneas e persistentes (média de R$50 a R$80 reais no Brasil, ou US$5 a US$10 dólares em servidores internacionais).

Você também pode hospedar gratuitamente para projetos menores usando o fly.io.

Siga esta documentação para fazer o deploy do seu PocketBase.

Conclusão

PocketBase é uma alternativa muito interessante aos concorrentes, principalmente caso você tenha o requisito de usar um servidor próprio ou do cliente.

Também é uma boa opção para projetos próprios ou com demandas específicas que tornariam o custo atraente por não ser cobrado por uso, como o Firebase.
Além é claro de para projetos de portfólio, uma vez que é muito simples rodar localmente para testar e visualizar o projeto.

É isso, muito obrigado por ler até aqui. Sinta-se à vontade para opinar, dar sugestões ou fazer perguntas nos comentários. :)

Ótimo post! Mas só corrigindo o título, se é gratuito e você precisa hostear então não é um BaaS é só um produto mesmo

Obrigado pelo feedback :) Realmente, não parei pra pensar na parte do serviço do BaaS, não tem como editar (ao menos eu acho que não, vou conferir depois de novo), mas realmente você tá certo. Peço perdão pelo equívoco
Por ser gratuito e self hosting deixa de ser um BaaS? Por quê?
Baas significa backend as a service, basicamente quando uma empresa oferece um serviço que supre as necessidades de backend para seu app para que vc foque apenas no front (firebase, aws, supabase), mas se é gratuito e você tem hostear então não é um serviço e muito menos um BaaS
vc tá confundindo baas com baas provider, o fato de ser gratuito e self hosting não anula o fato de que as principais tarefas repetitivas de um serviço back-end estão sendo abstraídas pelo pocketbase, no final das contas esse é o papel de um baas, não importa se é pago ou gratuito, inclusive se vc pesquisar por "open source baas" encontrará outros serviços self hosting do mesmo tipo
Realmente, erro meu

Exelente indicação! Esses pequenos serviços fazem toda a diferença quando você precisa montar um protótipo ou projeto muito simples. Já me vi louco no passado por precisar de uma alternativa para o firebase no passado, parabéns por compartilhar.

Obrigado pelo feedback! :) Com certeza é muito bom ter alternativas (principalmente open source) aos grandes serviços centralizados. Tem também o [supabase](https://supabase.com/), muito massa, open source. E em teoria também tem como fazer self-hosting, porém quando eu tentei (faz um tempinho já) era um buraco bem fundo, pode ser que já esteja mais fácil, mas ainda assim é legal conhecer as alternativas.
Não testei, mas pelo que vi está fácil hoje em dia. Já tem [docker](https://supabase.com/docs/guides/self-hosting/docker) pré configurado. Só usei pelo site deles mesmo, muito bom. Pra autenticação de usuários é perfeito. Fiz uma implementação usando NestJS, ficou perfeito. O legal é que dá pra você compartilhar essa base de usuário com outras aplicações suas.

A título de conhecimento, "semelhante" ao Firebase e PocktetBase, também são bem interessantes o Supebase e o appwrite

Esse AppWrite parece ser bem legal também, supabase já tinha testado. Mas esse AppWrite não conhecia, muito massa. Obrigado pelas indicações!
O appwrite está mais próximo do Pocketbase, nessa ideia de produto. Já o Supabase está mais próximo do Firebase, seguindo na linha de serviço. Eu particularmente nunca usei nenhum deles, exceto o Firebase, cujo eu tenho eu pequeno projeto em produção.
Usei o firebase em alguns projetos de produção também. Supabase usei num projetinho pra testar ele, achei bem legal quando um banco relacional faz mais sentido pro projeto, mas complica ter só um projeto gratuito :( PocketBase tô desenvolvedondo um simples pra testar, planejo fazer uns posts com as etapas de desenvolvimento também, tô fazendo com flutter.

bom d+! excelente alternativa a vários produtos que tem no mercado.

Ótimo post! Sou dev front e to agora estudando back, posts assim ajudam muito. Uma dúvida que tenho é, a aws e o heroku seriam BaaS também? Qual a diferença de um BaaS pra uma hospedagem comum? Não seria mais barato um host comum?

Opa, tudo bem? Obrigado pelo feedback :) Então, na verdade o termo BaaS foi equívocado, uma vez que o pocketbase não fornece o ecossistema de cloud em si (como firebase). Sobre a diferença do pocketbase pra uma hospedagem comum, considerando uma hospedagem comum como somente um servidor (estilo uma VPS), é que com somente um servidor hospedado, você precisaria desenvolver seu backend e subir ele você mesmo, nesse caso o backend fica abstraído pelo pocketbass, que já trata a questão de autenticação, comunicação com banco de dados e etc. Não sei se ficou claro, mas qualqu duvida fica a vontade pra perguntar ;)

Muito bom, obrigado pelo conteudo