- O prazo padrão para entrega da solução é de 7 dias corridos, contados a partir da data de recebimento do desafio. Caso você precise de mais tempo, entre em contato conosco e fechamos uma nova data para a entrega. Não se preocupe, somos super flexíveis ;)
- Não se preocupe em responder todos os pontos do desafio. Queremos ver até que ponto você consegue se aprofundar :)
Nós, da empresa TupiCrypto, temos um projeto onde iremos construir uma plataforma para comercializar fotos e cartões postais dos principais pontos turísticos brasileiros como Non-fungible tokens (NFTs). Um NFT é um ativo digital que representa objetos do mundo real, como arte, música, fotos, itens de jogos e vídeos. Eles são comprados e vendidos online, frequentemente com criptomoedas, e são baseados na tecnologia de Blockchain, como Ethereum. Para maiores informações podem visitar esse link. A comercialização dos NFTs está crescendo muito nos ultimos anos e um exemplo de sucesso são os CryptoPunks, onde um NFT foi vendido por 650 ETH (equivalente a US$ 1,24 milhões de dólares). E nós da TupiCrypto queremos surfar essa onda junto no mercado aqui pelas terras tupiniquins.
Você foi convocado pelo líder do time de Analytics para ajudar a coletar algumas informações para a construção de um relatório solicitado pelo CEO da TupiCrypto. Nesse relatório será necessário a cotação de duas criptomoedas em específico (Ethereum e Bitcoin) em Doláres (USD), Reais (BRL) e Euro (EUR).
Como a empresa ainda é nova, não existe nenhum padrão de conjunto de tecnologias que a empresa utiliza para suas aplicações e projetos (Tech Stack), como um data warehouse, uma ferramenta de ETL etc. Em um papo com o líder de tecnologia você também propôs que juntamente com o projeto da análise Ad-Hoc solicitado pelo squad de Analytics você irá sugerir um stack de dados para a empresa TupiCryto.
Devido a urgência do relatório para uma tomada de decisão importante o CEO da TupiCrypto solicitou para começar pelo projeto com o squad de Analytics. Para isso, você montou algumas perguntas para que possa conseguir a desenvolver o pipeline de dados:
Como é uma análise sazonal, vamos precisar acompanhar essas atualizações diariamente. E a sugestão é que os dados sejam armazenados no BigQuery e que sejam atualizados diariamente às 7h da manhã, horário de brasília (GMT-3). O banco de dados no BigQuery deverá conter informações somente a partir do dia 01-01-2021.
Conforme solicitado pelo squad de Analytics você precisará coletar as informações da cotação de duas criptomoedas em específico (Ethereum e Bitcoin) em Dólares (USD), Reais (BRL) e Euro (EUR). Deve-se coletar os dados através de uma API Gratuita chamada Coingecko.
Segue o exemplo da tabela solicitada, o arquivo deve conter exatamente essas colunas oriundas da API.
- id
- symbol
- name
- snapshot_date
- current_price_usd
- current_price_eur
- current_price_brl
ATENÇÃO Os dados deverão ser salvos no BigQuery em um projeto que criamos para você, no caso data-case-study-322621. Você poderá criar a tabela crypto_currency dentro do dataset com seu respectivo nome e sobrenome. Iremos criar um usuário para você realizar consultas e verificar o que está sendo salvo no BigQuery via interface, esse usuário será criado com o email fornecido por você. Para realizar as operações de inserção no banco você deverá usar uma Service Account, nós iremos compartilhar com você também por email. Por favor, não inclua qualquer credencial, service account ou password no seu repositório.
Como a TupiCrypto ainda não possui nenhuma estrutura definida do stack de dados e devido a urgência da necessidade do relatório você sugeriu que esse pipeline de dados seja feito usando o Airflow. O Airflow é uma ferramenta de orquestração e monitoramento de workflows, porém na comunidade é usado também como uma ferramenta completa de ETL (orquestração, monitoramento e execução do ETL). Neste post o autor explora como iniciar com o Airflow e os passos para criar sua primeira DAG, caso seja seu primeiro contato com o Airflow aqui você pode tirar algumas dicas de proximos passos.
O objetivo desta etapa é que você desenvolva uma DAG para executar, scheduling e monitoramento do pipeline de dados. No final, o arquivo contendo o código deverá ser compartilhado no repositório em algum provedor Git de sua escolha como (GitHub, BitBucket etc).
- Desenvolver uma DAG no Airflow para extrair os dados da API, transformar no formato requerido e inserir as informações no banco de dados no BigQuery. Além disso, essa DAG deve-se conter um Crontime para que rode todo dia na hora requisitada. Não se esqueça dos requisitos da tabela explicados acima.
- Compartilhar o arquivo ou arquivos auxiliares da DAG desenvolvida através de um repositório público em algum provedor Git de sua escolha como (GitHub, BitBucket etc).
Obs: Sabemos que é relativamente simples e possui N maneiras de realiza-lo, mas não se esqueça que é um momento para você demonstrar as suas skills!
ATENÇÃO - Não compartilhe Credenciais e/ou Service Accounts no repositório.
Nesta segunda etapa você deve propor um desenho arquitetural descritivo (tech stack), você terá que apresentar a sua solução proposta bem como as respostas das perguntas e não necessariamente necessita estar no repositorio da Parte 1, poderá ser feito em Slides, Excel, Cartolina o que se sentir mais confortável.
A proposta deve-se contemplar os seguintes cenários:
- Deve ser flexível para coletar dados de diferentes fontes de dados como databases, web applications, arquivos e APIs.
- Deve-se conter um data warehouse cloud-based (GCP, AWS, Azure) para armazenar as informações.
- Ferramenta de Transformação usada para limpar dados e aplicar regras de negócio.
- Ferramenta de visualização para criar reportes e coletar insights.
Segue um exemplo de uma imagem de um desenho arquitetural descritivo (tech stack). Segue uma imagem exemplo encontrado no link:
Após a apresentação da solução você deverá responder algumas perguntas:
Para a seção de perguntas, lembrando, não se preocupe em responder todos os pontos. Queremos ver até que ponto você consegue se aprofundar :)
- Um Cientista de Dados solicitou uma base no qual quer saber se existe relação entre o preço da Ethereum e Bitcoin. Ele prefere que seja um arquivo csv com 100 amostras aleatoriamente. Como você faria essa operação na arquitetura proposta?
- No final do ano, um outro Cientista de Dados solicitou melhorar o modelo de machine learning para prever a quantidade de transações (vendas), lembrando que pedidos podem ser cancelados depois de 90 dias, e precisa exatamente o mesmo dataset disponibilizado para a primeira versão. Como na arquitetura proposta isso poderá ocorrer?
- Uma das regras de negócio foi alterada e pediram para alterar os dados do data warehouse. Como isso poderia ser feito?
- Os líderes perceberam uma oportunidade no Canadá e pediram para adicionar a cotação do dólar canadense (CAD) no ETL construido na primeira parte. Quais alterações seriam necessárias nos scripts/códigos/conectores e nos bancos de dados?
- O excesso de requisições a infraestrutura está perdendo desempenho gradativamente, aumentando o tempo de resposta. Como você propõe analisar o desempenho? Existe alguma estratégia para escalar?
- Um requisito primordial é a integridade de todas as informações salvas no data lake. Como você trabalharia com backup e redundância?
- Temos um apreço muito grande pela qualidade e disponibilidade. Para isso, contamos com algumas métricas para ajudar a nos prevenir e/ou nos alertar sobre problemas. Como metrificar e monitorar as atividades na Arquitetura Proposta?
- Fomos questionados, por uma ação judicial, sobre dados que foram vazados. Como na sua arquitetura vamos proteger a confidencialidade de dados?
- A empresa TupiCrypto está crescendo exponencialmente e com isso diversos times de BI e Analista de dados estão explorando o seu tech stack de dados. Como você facilitaria a descoberta de dados e a documentação?
-
cenário: “Um Cientista de Dados solicitou uma base no qual quer saber se existe relação entre o preço da Ethereum e Bitcoin. Ele prefere que seja um arquivo csv com 100 amostras aleatoriamente. Como você faria essa operação na arquitetura proposta?”
- R: No modelo proposto com o Z esse dataset seria persistido de maneira XYZ e uma aplicação externa poderia se conectar a essa base para executar uma query extraindo a amostra de 100 itens e salva-lo em CSV...
-
cenário: “No final do ano, um outro Cientista de Dados solicitou melhorar o modelo de machine learning para prever a quantidade de transações (vendas), lembrando que pedidos podem ser cancelados depois de 90 dias, e precisa exatamente o mesmo dataset disponibilizado para a primeira versão. Como na arquitetura proposta isso poderá ocorrer?”
- R: No modelo proposto com o Z o dado bruto ficaria disponível de forma XPTO de forma permanente e incremental, sendo assim possibilita a criação de novos modelos aproveitando...