Skip to content

Arquitetura de Dados Xavier

Wesley Almeida edited this page Nov 3, 2021 · 3 revisions

Aqui iremos apresentar a arquitetura de dados do Xavier.

A proposta inicial está descrita na figura abaixo. É uma visão ampla que poderá ser alterada com o tempo durante o refinamento das atividades do projeto.

Visão Geral da Arquitetura de Dados

Arquitetura de Dados Xavier

Componentes da Arquitetura

Origem dos dados

O projeto será desenhado para receber dados de diferentes fontes de sistemas, tanto em relação a sua origem, como em relação ao seu formato.

Uma característica importante do projeto é que teremos algumas fontes não estruturadas ou semi-estruturadas que serão extraídas usando técnicas de web scaping.

Com o tempo, poderemos também interagir com APIs de diferentes sistemas que também poderão fornecer dados para o Xavier.

Extração dos Dados

No primeiro instante, o foco será sobretudo na parte de extração de dados usando web scraping.

A linguagem de programação será Python 3.9 e a principal biblioteca usado para referência será o Selenium.

Os scripts quando estiverem prontos serão executados usando o serviço AWS Lambda. A execução desses scripts será iniciada pelo serviço AWS CloudWatch.

Para ambiente de dev, poderá ser usado container docker usando as imagens da AWS para simplificar o deploy.

Data Lake

Os dados brutos serão armazenados em um bucket do serviço AWS S3. De preferência usando o formato parquet. Caso não haja a disponibilidade ou inviabilidade de usar esse formato, poderá ser usado outros como .csv ou .json.

Os dados brutos serão regularmente analisados, limpos, transformados (processados) e então carregados em um banco de dados relacional MariaDB usando o serviço AWS RDS.

O script de processamento desses dados serão executados usando o AWS Lambda que será iniciado por chamadas do AWS CloudWatch.

Data Viz

Usaremos uma ferramenta open source para visualizar os dados que estão armazenados no banco de dados relacional. algumas das opções são:

Eventualmente, essa ferramenta pode evoluir para ser uma das interações dos usuários finais. Mas inicialmente é uma ferramenta para validar a analise dos dados em um backend.

Pode ser criado um container que é compartilhado via github para que todos possam visualizar os dados.

Backend

Usaremos a biblioteca FastAPI para python para desenvolver os endpoints que farão a interação com o banco de dados relacional.

O ambiente de deploy desse componente ainda está em aberto. Poderá ser um AWS Lambda ou AWS EC2 ou AWS EKS ou AWS API Gateway.

Dependerá muito da evolução e das descobertas do projeto.

O fastapi é simples e permite uma interação muito simples com banco de dados relacionais como MariaDB, Postgres, ou outros.

Frontend

A definir. Dependerá de experiência que iremos criar com os usuários. Hoje algumas das possibilidades são:

Advanced Analytics

A medida que o projeto conseguir coletar e organizar dados, eventualmente, poderemos encontrar um modelo de ML que possa gerar inteligência ao processo.

Se for o caso, poderemos fazer o deploy do modelo usando FastAPI.