SlideShare a Scribd company logo
1 of 37
Download to read offline
Arquitetura para processamento
de dados em stream
Utilizando MongoDB, RabbitMQ e Go
TDC . SP . 2016
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
Sede em
Floripa
Love Mondays:
3ª Melhor empresa
para se trabalhar
Big Data Times
independentes
Neoway
O que a NEOWAY faz?
Dados qualificados
+ de 19 bilhões
De documentos lidos, analisados e
disponibilizados para nossos clientes
Data Science
O que fazemos?
Scheduling de inputs para os BOTs
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
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
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
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
Arquitetura 1.0
➔ 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
Nova arquitetura!
Nova Arquitetura
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
Scheduling de Inputs
Tratamento e enriquecimento
Integração e disponibilização
Disponibilização do histórico capturado
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.
Testes
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
Testes end-to-end
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
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
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
Tests Dicas
- Table driven tests
- Test Fixtures
- Mock package
Table Driven Tests
Test Fixtures
Mock Package
sources/sources_mock.gocontrol/control_test.go
Golang exemplos
● Neoway
https://github.com/NeowayLabs
● Terraform
https://github.com/hashicorp/terraform
● Docker
https://github.com/docker/docker
● Kubernetes
https://github.com/kubernetes/kubernetes
Bóra trabalhar
em Floripa?
Obrigado!!!
:)

More Related Content

Viewers also liked

Viewers also liked (7)

эдуард юрьевич шим
эдуард  юрьевич  шимэдуард  юрьевич  шим
эдуард юрьевич шим
 
Respiro y me tranquilizo
Respiro y me tranquilizoRespiro y me tranquilizo
Respiro y me tranquilizo
 
BSidesDC - **** it, Do It Live (PowerShell Digital Forensics)
BSidesDC - **** it, Do It Live (PowerShell Digital Forensics)BSidesDC - **** it, Do It Live (PowerShell Digital Forensics)
BSidesDC - **** it, Do It Live (PowerShell Digital Forensics)
 
Plantilla de observación de una tertulia literaria
Plantilla de observación de una tertulia literariaPlantilla de observación de una tertulia literaria
Plantilla de observación de una tertulia literaria
 
Demonetization across the world
Demonetization across the worldDemonetization across the world
Demonetization across the world
 
Aula 1 Bernoulli SSA
Aula 1 Bernoulli SSAAula 1 Bernoulli SSA
Aula 1 Bernoulli SSA
 
Event Report - SAP Capital Markets and S/4HANA Cloud Update 2017
Event Report - SAP Capital Markets and S/4HANA Cloud Update 2017 Event Report - SAP Capital Markets and S/4HANA Cloud Update 2017
Event Report - SAP Capital Markets and S/4HANA Cloud Update 2017
 

Similar to Arquitetura de dados em stream

Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Éberli Cabistani Riella
 
Desafio de crescer
Desafio de crescerDesafio de crescer
Desafio de crescer
Guilherme
 
SaaS - RubyMastersConf.com.br
SaaS - RubyMastersConf.com.brSaaS - RubyMastersConf.com.br
SaaS - RubyMastersConf.com.br
Juan Maiz
 
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de FacebookTDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
tdc-globalcode
 

Similar to Arquitetura de dados em stream (20)

Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaTdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
 
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
 
Webinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros ÁgeisWebinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros Ágeis
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Desafio de crescer
Desafio de crescerDesafio de crescer
Desafio de crescer
 
SaaS - RubyMastersConf.com.br
SaaS - RubyMastersConf.com.brSaaS - RubyMastersConf.com.br
SaaS - RubyMastersConf.com.br
 
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de FacebookTDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
TDC 2013 SP | Trilha ALM: Desenvolvimento em Tempos de Facebook
 
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
 
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
 
Introdução Splunk Brasil
Introdução Splunk BrasilIntrodução Splunk Brasil
Introdução Splunk Brasil
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Webinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataWebinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big Data
 
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
 
Desenvolvimento de sistemas jurídicos
Desenvolvimento de sistemas jurídicosDesenvolvimento de sistemas jurídicos
Desenvolvimento de sistemas jurídicos
 
Oficina de Metodologias Ágeis
Oficina de Metodologias ÁgeisOficina de Metodologias Ágeis
Oficina de Metodologias Ágeis
 
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de Facebook
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de FacebookTDC2013 - Desenvolvimento de Software e Colaboração em tempos de Facebook
TDC2013 - Desenvolvimento de Software e Colaboração em tempos de Facebook
 
Como Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo RealComo Implementar a Análise de Dados em Tempo Real
Como Implementar a Análise de Dados em Tempo Real
 
F1502 p iman3-pt_v3.8_l
F1502 p iman3-pt_v3.8_lF1502 p iman3-pt_v3.8_l
F1502 p iman3-pt_v3.8_l
 
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...
 
Cafe & Open Source
Cafe & Open SourceCafe & Open Source
Cafe & Open Source
 

Arquitetura de dados em stream