Arquitetura de dados em stream
-
Upload
matheus-vill -
Category
Software
-
view
189 -
download
2
Transcript of Arquitetura de dados em stream
![Page 1: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/1.jpg)
Arquitetura para processamento de dados em stream
Utilizando MongoDB, RabbitMQ e Go
TDC . SP . 2016
![Page 2: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/2.jpg)
Kamila Hinckel
Desenvolvedora na Neoway
Graduada em Sistemas Eletrônicos (IF-SC)
5 anos de experiência na área de desenvolvimento de software
Desenvolvedor na Neoway
Graduado em Sistemas de Informação (UFSC)
6 anos de experiência na área de desenvolvimento de software
Olá!
Matheus Vill
![Page 3: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/3.jpg)
Sede em Floripa
Love Mondays:3ª Melhor empresapara se trabalhar
Big Data Times independentes
Neoway
![Page 4: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/4.jpg)
O que a NEOWAY faz?
![Page 5: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/5.jpg)
Dados qualificados
+ de 19 bilhõesDe documentos lidos, analisados e
disponibilizados para nossos clientes
![Page 6: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/6.jpg)
Data Science
![Page 7: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/7.jpg)
O que fazemos?
Scheduling de inputs para os BOTs
![Page 8: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/8.jpg)
O que fazemos?
Serviços de tratamento e enriquecimento de dados
Exemplos:Apresentação do TDC -> APRESENTACAO DO TDC
DILMA VANA ROUSSEFF -> 133.267.246-91
![Page 9: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/9.jpg)
O que fazemos?
Integração e disponibilização de dados
Exemplo:Informações das empresas da Receita Federal
+Informações dos sócios das Juntas Comerciais
![Page 10: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/10.jpg)
O que fazemos?
Geração de histórico das fontes capturadas
Exemplos:Dia 1: Nome da empresa -> Neoway
Dia 2: Nome da empresa -> Neoway Business
![Page 11: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/11.jpg)
O que fazemos?
Criação de modelos estatísticos para qualificação e predição
Exemplos:- Nível de atividade de uma empresa- Faturamento Presumido
![Page 12: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/12.jpg)
Arquitetura 1.0
![Page 13: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/13.jpg)
➔ Custo elevado e dificuldades para escalar;
➔ Atraso na disponibilização dos dados para as aplicações;
➔ Dificuldades para simular o ambiente existente;
➔ Dificuldade de mapear os impactos de alterações.
Problemas
![Page 14: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/14.jpg)
Nova arquitetura!
![Page 15: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/15.jpg)
Nova Arquitetura
![Page 16: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/16.jpg)
Go, Rabbit e Mongo
Go
- Simples e leve
- Concorrência/paralelismo
- É demais!!!! :)
Rabbit
- Servidor de mensageria
- Filas e tópicos
- Persistência de mensagens
Mongo
- NoSQL
- Orientado à documento
- Não possui schema definido
- JSON como protocolo
![Page 17: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/17.jpg)
Scheduling de Inputs
![Page 18: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/18.jpg)
Tratamento e enriquecimento
![Page 19: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/19.jpg)
Integração e disponibilização
![Page 20: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/20.jpg)
Disponibilização do histórico capturado
![Page 21: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/21.jpg)
O que ganhamos?
Tempo: Disponibilização dos dados de forma contínua e integrada entre todas as aplicações.
Escalabilidade: Necessidade de escalar horizontalmente devido ao aumento do número de fontes capturadas.
Infraestrutura imutável: Scripts automatizados, evitando máquinas “flocos de neve”.
Qualidade: Arquitetura orientada à testes automatizados.
Custo: Possibilidade de redução de custos de infra.
![Page 22: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/22.jpg)
Testes
![Page 23: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/23.jpg)
Testes Unitários
Vantagens:
- Executam em poucos segundos
- Segurança para implementar novas features
- Teste de erros e exceções
Desvantagens:
- Alguns problemas com Mongo e Rabbit não eram percebidos e só foram descobertos nos primeiros deploys
![Page 24: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/24.jpg)
Testes end-to-end
![Page 25: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/25.jpg)
Testes end-to-end
Vantagens:
- Garante que todos os serviços funcionem de forma integrada
- Ideia futura de integrar os bots nesses testes também
Desvantagens:
- Mais lento
- Mais díficil de encontrar onde está o problema
![Page 26: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/26.jpg)
Testes de integração
Vantagens:
- Necessidade de ter uma meio termo entre os testes unitários e os testes end-to-end
- Permitiram testes integrados com o Mongo e o Rabbit, porém com cases específicos de cada serviço
Desvantagens:
- Setup desses testes são mais complexos que os testes unitários
- Mais difícil garantir o isolamento dos testes
![Page 27: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/27.jpg)
Testes de carga
Características:
- Possível verificar se novas features não impactaram na performace do stream de dados
- Verificar qual dos microserviços pode estar dimuindo a velocidade do fluxo de dados
Ferramentas:
- rabbit-mq-stress-tester: https://github.com/backstop/rabbit-mq-stress-tester
- boom: https://github.com/rakyll/boom
![Page 28: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/28.jpg)
Tests Dicas
- Table driven tests
- Test Fixtures
- Mock package
![Page 29: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/29.jpg)
Table Driven Tests
![Page 30: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/30.jpg)
Test Fixtures
![Page 31: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/31.jpg)
Mock Package
sources/sources_mock.gocontrol/control_test.go
![Page 32: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/32.jpg)
![Page 33: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/33.jpg)
Golang exemplos
● Neowayhttps://github.com/NeowayLabs
● Terraformhttps://github.com/hashicorp/terraform
● Dockerhttps://github.com/docker/docker
● Kuberneteshttps://github.com/kubernetes/kubernetes
![Page 34: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/34.jpg)
![Page 35: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/35.jpg)
Bóra trabalhar em Floripa?
![Page 36: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/36.jpg)
![Page 37: Arquitetura de dados em stream](https://reader034.fdocumentos.tips/reader034/viewer/2022052514/58a2fba91a28ab5d1c8b69a3/html5/thumbnails/37.jpg)
Obrigado!!!:)