Como tornamos o Amazon QuickSight a principal ferramenta de DataViz na Dafiti

Os dados, e seus mais variados usos, estão a cada dia mais em evidência nas empresas e cada profissional tem suas preferências de quais tecnologias utilizar para visualizá-los, o que não necessariamente é aderente as necessidades e infraestrutura tecnológica de uma companhia. Na Dafiti não era diferente, cinco ferramentas eram usadas por diferentes setores da empresa, o que nos trazia alguns desafios e, neste contexto, elegemos o QuickSight como solução corporativa para a visualização de dados.

Valdiney Vieira Gomes
7 min readMar 22, 2023

Sobre democratização de dados

A democratização dos dados é um dos principais objetivos da Dafiti, acreditamos que permitir que todos possam analisar os dados, com respeito à LGPD, desbloqueia um potencial enorme de melhoria na tomada de decisão por meio de extração de valor dos dados gerados pela companhia. Entretanto, a democratização dos dados esbarra na utilização responsável de recursos. Sim, queremos que todos os usuários possam acessar e extrair valor dos dados, mas o custo nunca pode ser maior do que o valor que isto gera.

Por que escolhemos o QuickSight?

Para a escolha da ferramenta, fizemos uma comparação entre as principais opções do mercado e confesso, o QuickSight não figurava entre os principais candidatos. Atualmente, temos muitos players no mercado e o QuickSight é uma das ferramentas mais jovens e ainda pouco explorada se comparada às demais, porém os seguintes fatores guiaram nossa decisão:

Era importante ter a ferramenta de DataViz o mais próximo possível dos dados. Na Dafiti, toda a infraestrutura está na AWS e utilizamos o Redshift como nosso Data Warehouse. O QuickSight, quando utilizamos o SPICE, extrai os dados do Redshift da maneira mais eficiente possível, utilizando UNLOAD, o que otimiza o uso do Redshift.

Ter uma ferramenta altamente disponível e acessível por meio de interface web ou mobile, além da possibilidade de fazer praticamente qualquer coisa por meio de API.

Uma solução serverless era outro objetivo, todas as outras soluções de DataViz que eram utilizadas na Dafiti eram on-premise, o que nos gerava custo e esforço desnecessário para a manutenção destes serviços, tirando o foco do que era mais importante para nós: os dados.

Um modelo de cobrança flexível, que nos permitisse dar acesso a todas as pessoas da empresa e que, conhecendo o perfil do nosso usuário e sabendo que nem todos acessam a ferramenta com a mesma frequência, tivesse o preço definido pelo uso e não por licença. Neste ponto, o QuickSight nos surpreendeu e hoje, com mais do que o dobro de usuários que tínhamos na nossa principal solução de DataViz anterior, temos um custo cerca de 10 vezes menor.

Uma documentação disponível e clara. Embora a comunidade de usuários da ferramenta ainda não seja tão grande quanto a dos concorrentes, o material fornecido pela AWS se mostrou bom o suficiente para permitir que nosso time colocasse o projeto em produção.

Como organizamos o projeto?

Conforme mencionado anteriormente, a democratização de dados é tema central na Dafiti e na implantação do QuickSight a obsessão em ser uma empresa data-driven (falamos sobre isto aqui) e ter os dados cada vez mais acessíveis foi o que guiou o projeto.

O QuickSight foi organizado por pastas, como pode ser observado na Figura 1, sendo que cada pasta representa uma área de negócio, isso facilita a concessão de acesso e garante que todas as pessoas de uma mesma área tenham acesso a exatamente o mesmo conjunto de dados e relatórios.

Figura 1 — Organização do projeto por pastas e modelo de concessão de acesso

Neste modelo, as pessoas da área de dados corporativa podem ver e/ou editar qualquer recurso de qualquer área, enquanto os usuário do SAC podem ver e/ou editar os recursos apenas do SAC.

Figura 2 — Modelo de compartilhamento de recursos

Expandindo um pouco o modelo, os relatórios criados por uma área podem ser compartilhados com outras, como podemos ver na Figura 2, onde o relatório do SAC foi compartilhado com o Support, criando o que apelidamos de portfólio de relatórios. Desta forma, todos os usuários que ingressarem em qualquer um dos grupos terão exatamente a mesma visão que qualquer um dos seus pares, eliminando privilégios no acesso aos dados; além do que, o portfólio vai sendo enriquecido a cada dia com relatórios que são criados e mantidos por outras áreas, mas que podem ser de interesse de áreas diferentes daquela responsável por ele.

Para que isto funcione corretamente é necessário uma certa rigidez em relação aos poucos padrões de nomenclatura e documentação que foram definidos. Em contrapartida, os designers têm total liberdade para definir as características de seus relatórios.

Um outro ponto importante neste modelo é que nenhum relatório pode ser compartilhado diretamente com um usuário específico, esta restrição foi definida utilizando as permissões customizadas do QuickSight. Sendo assim, os relatórios sempre são compartilhados apenas por meio das pastas, afinal queremos que os dados sejam acessíveis de forma igualitária para todos na companhia.

E a parte técnica?

O QuickSight oferece uma API abrangente e todas as atividades que realizamos no dia-a-dia ocorrem por meio destas APIs, dentre estas atividades destacamos a concessão de acesso e o monitoramento de diversos aspectos da ferramenta.

A interface visual do QuickSight permite a realização da maioria das atividades de manutenção da ferramenta e é possível a integração com AD ou a utilização de usuários do IAM, mas entendemos que não seria a escolha ideal para realizar a concessão de acessos. Sendo assim, definimos um fluxo de concessão de acesso para usuários e grupos baseado na API do QuickSight, como pode ser observado na Figura 3. Neste modelo a criação e remoção de usuários é feita por meio de um arquivo JSON com a seguinte estrutura:

{
"Version":"1.0.0",
"Namespace":"default",
"AwsAccountId":"<AwsAccountId>",
"AwsRegion":"<AwsRegion>",
"Permission":{
"GroupList":[
{"GroupName":"QUICKSIGHT_DATA_EDITOR"},
{"GroupName":"QUICKSIGHT_DATA_VIEWER"},
{"GroupName":"QUICKSIGHT_DATA_DESIGNER"},
{"GroupName":"QUICKSIGHT_SAC_VIEWER"},
{"GroupName":"QUICKSIGHT_SAC_DESIGNER"},
...
],
"UserList":[
{"UserName":"abc@dafiti.com.br","Active":"True","GroupList":[{"GroupName":"QUICKSIGHT_DATA_EDITOR"}]},
{"UserName":"xyz@dafiti.com.br","Active":"True","GroupList":[{"GroupName":"QUICKSIGHT_SAC_VIEWER"}]},
...
]
}
}

Sempre que um usuário precisa ser incluído ou alterado, o arquivo é editado e um pull request submetido ao GitHub, se aprovado é disparada uma action para enviar o arquivo para um bucket do S3; a partir disto, é disparada uma função Lambda que realiza duas atividades, a primeira é a manutenção de usuários e grupos e a segunda é o envio do convite, por meio do SES, para os usuários ingressarem no QuickSight. No nosso caso, optamos por um modelo de convite personalizado que desse ênfase para a iniciativa de democratização de dados que está sendo conduzida.

Figura 3 — Processo de concessão de acesso

Para o monitoramento da ferramenta implementamos a arquitetura exibida na Figura 4, onde utilizamos o CloudTrail para extrair os logs do QuickSight e a API do QuickSight para extrair informações dos recursos da ferramenta, como relatórios, usuários, datasets, datasources, etc. Todos estes dados são processados pelo Glove, nossa ferramenta de integração de dados, armazenados no Redshift e analisados no próprio QuickSight. Isto nos permite conhecer o comportamento do nosso usuário e concentrar esforços nos recursos mais utilizados, além de possibilitar um ótimo controle de custos e utilização do SPICE.

Figura 4— Processo de extração de dados para monitoramento

Para a atualização dos datasets não utilizamos o scheduler interno do QuickSight, devido ao grande volume de dados e da complexidade das DAGs, preferimos incluir a atualização dos datasets dentro do nosso fluxo de orquestração de processos de ETL/ELT, para isto utilizamos o Hanger, nossa ferramenta de orquestração. Esta abordagem faz com que os datasets sejam atualizados somente quando a fonte de dados é alterada e os processos data quality executados, este modelo é representado pela Figura 5.

Figura 5 — Orquestração da atualização dos datasets

Conclusão

A escolha de uma ferramenta de DataViz não é uma tarefa simples, envolve muitas paixões e é necessário que vários aspectos sejam analisados para que a escolha seja racional, levando em conta as características da empresa, e que seja aderente ao perfil dos usuários de negócio.

No caso da Dafiti, o QuickSight foi uma escolha quase que natural a partir do momento em que conhecemos suas características. Estar na mesma nuvem das nossas principais fontes de dados, ser extremamente rápida com a utilização do SPICE e resolver o problema de manutenção e custo de aplicações on-premise pesou muito na nossa escolha. Em termos de funcionalidades, considerando o que realmente era necessário para o nosso negócio, não fica atrás de nenhum dos concorrentes estabelecidos há mais tempo no mercado.

No entanto, é necessário analisar todos os aspectos do seu negócio antes de decidir qual ferramenta utilizar e, caso escolha o QuickSight como nós, qual arquitetura utilizar para atender a expectativa dos seus clientes e criar uma iniciativa própria de democratização de dados na sua empresa.

Me ajudaram a contar esta história a Flavia Lima e o Helio Leal. Quer saber mais sobre o que estamos fazendo na área de dados aqui na Dafiti?

Dafiti, habilitando uma Empresa Data Driven na AWS

Caso de sucesso: Dafiti reduz custos em 70% e otimiza tomadas de decisões com dados na nuvem da AWS

--

--