Fala ae dev, como sei que aqueles que já acessaram o HireMetrics tem perfil técnico ou são interessados na área de desenvolvimento, resolvi compartilhar com vocês a arquitetura do projeto. Penso que possa ser útil para aqueles que queiram aprender mais sobre a parte do design de soluções ou mesmo que estão pensando em fazer algo parecido.
(Para os apressados)
👉 Acesse a plataforma e descubra insights do mercado de TI agora
#1
O começo e o processo..

Fala galera, sou engenheiro de dados e estava um pouco cansado dessas plataformas de job listing todas iguais. Resolvi, então, dedicar um tempinho para construir uma plataforma para agregar dados de diferentes origens de publicações de vagas de TI e fazer algo diferente que seria acrescentar analytics relevantes (meu lado eng. dados xD) sobre as vagas publicadas para dar um panorama e insights da área.
Foi bem interessante o projeto do ponto de vista de desenvolvimento porque pude cobrir o ciclo de desenvolvimento como um todo: ideação, frontend, backend, data engineering, aplicar LLM, integrar com APIs externas, comprar domínio, alugar VPS, fazer deploy e resolver vários desafios. Meu trabalho atual é bem especializado na área de dados e já não estou mais tanto na parte hands-on, então eu não tinha essa visibilidade da complexidade do deploy de um SaaS completo. Aprendi muito no processo - e isso já valeu muito a pena.
Levei mais ou menos uns três meses para construir tudo, nos meus horários fora do trabalho, e lembro que no principio gastei um bom tempo pensando na arquitetura dessa plataforma. Imaginei, então, que pudesse ser útil eu compartilhar um diagrama completo da arquitetura da plataforma e minhas notas com vocês para o caso alguém que esteja interessado em fazer algo parecido, afinal já vai ser meio caminho andado xD..
#2
Arquitetura do Projeto e Notas
Segue o diagrama da arquitetura completo com alguns comentários meus logo abaixo:

Como disse, sou engenheiro de dados, então não tenho lá muita experiência com a parte de frontend/backend… Basicamente, como principais tecnologias dessa arquitetura ponderei o seguinte:
ETL layer:
aqui é parte que tenho mais domínio e aproveitei esse projeto para validar algumas tecnologias que tem sido muito faladas na minha área e não uso no dia-a-dia, sendo: DuckDB (pelo serviço MotherDuck) e o dbt - particularmente, gostei bastante de usar essas tecnologias porque são bem simples para começar e muito eficientes
usei Python como linguagem principal para construir o pipeline de dados e Prefect para fazer a orquestração - mais uma vez pautado naquilo que fosse mais simples e rápido para começar (e Python eu já conheço bem)
como base para as APIs usei o bom e velho Postgres (não tem muito erro) - fui no garantido de novo
API layer:
aqui já começa um pouco o território novo para mim, e então decidi usar Python (pq já conheço) com a lib FastAPI - acho que foi uma decisão acertada, uma vez que é só um projeto pessoal e evitou uma bela curva de aprendizagem se eu fosse para algo mais robusto
aqui eu também interajo com serviços externos e achei bem tranquilo a integração desses com a FastAPI
Frontend layer:
definitivamente a parte que menos conheço, fui de novo baseado naquilo que fosse o mais fácil e vi que dentre os frameworks de frontend Vue3 se mostrava como a opção mais simples - não sei se é o melhor para sistemas mais complexos mas para esse caso foi muito prático para mim
aqui em conjunto também utilizei Vite para o build e Pinia para gestão de estados
Para facilitar o deploy, já deixei os principais recursos em containers Docker e fiz a organização deles com Docker-Compose. Ah, para versionamento, Git.
#3
Considerações finais
Acho que para um projeto pessoal, e a principio pequeno, me parece que foi uma arquitetura acertada - talvez poderia de ajustado uma coisa aqui ou ali mas no geral estou satisfeito com o resultado. A aplicação está rodando bem e por hora sem nenhum crash
Bom, é isso, espero que o compartilhamento da arquitetura e minhas notas do projeto possam ser úteis ai para os amigos dev que estão pensando em fazer algo parecido ou mesmo querendo aprender com uma experiência prática de alguém.
Qualquer questão sobre o tema da arquitetura e da experiência em si do projeto manda ai que respondo assim que puder
