131
Arquitetura Neoway Da captura à disponibilização dos dados

Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

  • Upload
    others

  • View
    732

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Arquitetura NeowayDa captura à disponibilização dos dados

Page 2: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Kamila Hinckel Developer at Neoway

Data Platform Team

Ricardo LongaDeveloper at Neoway

Core Team

Page 3: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Sede em Floripa

GPTW:6ª melhor empresapara se trabalhar

Big Data Times independentes

Neoway

Page 4: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

O que a Neoway faz?

Page 5: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

DADOS

Em 2018, mais da metade das grandes organizações mundiais concorrerá utilizando análises

avançadas e algoritmos proprietários, provocando a ruptura de indústrias inteiras.*

*Fonte: Predicts 2016: Changes Coming in How We Buy Business Analytics Technology - Gartner

PaaS+400Clientes

+3000Bancos de dados

+30Parceiros de negócios

+250Colaboradores

+35 milhões de empresas

+194 milhões de pessoas no Brasil

+180 milhões de processos judiciais

+45 milhões de companies USA

Page 6: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Como processamos

mais de 6 milhões de dados

por dia?

Page 7: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Arquitetura

Page 8: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 9: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 10: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 11: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 12: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 13: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 14: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 15: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 16: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 17: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 18: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

200+ Crawlers!

Page 19: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 20: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 21: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Inputs

Exemplos:

● CNPJ -> 05.337.875/0001-05{ “cnpj”: “05337875000105” }

● Sequencial -> 061256-01{ “protocolo”: “06125601” }

● CNPJ + Razão Social:{ “cnpj”: “05337875000105”, “razaoSocial”: “NEOWAY” }

Page 22: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 23: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 24: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Exemplos:

● QCon São Paulo -> QCON SAO PAULO

● NEOWAY BUSINESS SOLUTIONS -> 05.337.875/0001-05

Tratamento e Enriquecimento

Page 25: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 26: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 27: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Exemplo:

Informações das empresas da Receita Federal+

Informações dos sócios das Juntas Comerciais=

Dados completos de empresas do Brasil

Integração

Page 28: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Exemplo:

● Dia 1: Nome da empresa -> Neoway LTDA

● Dia 2: Nome da empresa -> Neoway SA

Histórico

Page 29: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 30: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Golang

● Compilada, fortemente tipada

● Standard library completa

● Ferramentas Built-in (go test, go bench)

● Pausas do GC na escala de nanosegundos

Page 31: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Golang

● Produtividade

○ Simplista (less is more)

○ Fortemente tipada

● Performance

○ Goroutines (thread 1mb / goroutine 2kb)

● Economia de recursos

○ Baixo consumo de memória

Page 32: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Golangpackage main

import ( "fmt" "net/http")

func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hi there, I love this conference!")}

func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil)}

Page 33: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Testes de integração

Page 34: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Testes de integração

● Garante que os serviços funcionem de forma integrada

● Testes integrados com o banco e serviço de mensageria

● Desenvolvedor consegue executá-los em sua máquina

Page 35: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 36: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 37: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Exemplos:

● Nível de atividade de uma empresa

● Faturamento Presumido

Modelos Estatísticos

Page 38: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 39: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 40: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

● Conexão persistente

● Novos dados são empurrados pelo servidor

● Sem necessidade de polling

● Controle de processamento via timestamp

Stream API

Page 41: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 42: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 43: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 44: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

● Interessado em quaisquer tópicos com data-domains.*

● Na sequência, publica a mesma mensagem em domains.*

Persistência

Page 45: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

● Utilizado p/ pesquisas simples (sempre pelo _id)

● Réplica com três nós

● Sub-arrays separados em collections

MongoDB

Page 46: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

● empresas (database)

○ empresas (collection - parent)

○ funcionarios (collection - child)

○ socios (collection - child)

○ veiculos (collection - child)

○ arts (collection - child)

○ clientdata_x (collection - child / por cliente)

○ tags_x (collection - child / por cliente)

MongoDB

Page 47: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 48: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 49: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Como usamos:

● Convenção de nomes de tópicos

○ data-domains.empresas.funcionarios (-> Mongo)

○ domains.empresas.funcionarios (-> ES)

Mensageria

Page 50: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

● NSQ.io - Plataforma de mensageria

● Distribuída (without any centralized brokers)

● Admin UI

● Official Docker image

● Feito em Go

Mensageria

Page 51: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 52: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 53: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 54: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

● Interesse em quaisquer tópicos com domains.*

Indexação

Page 55: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Mapping:

● Estrutura similar ao Mongo (parent / child)

Elastic Search

Page 56: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Dados indexados:

● Empresas: 6,3 TB

● Pessoas: 3 TB

● Processos Judiciais: 2,2 TB

● Companies USA: 178 GB

Elastic Search

Page 57: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Um cluster com:

● 13 data nodes

● 3 master nodes

Elastic Search

Page 58: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 59: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 60: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Motivo:

● Abtração da síntaxe do Elastic Search

Neoway Search DSL

Page 61: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

{

"from": 0, "size": 10, "fields": ["cnpj", "razaoSocial"],

"query": {

"$or": [

{

"$and": [

{"endereco.uf": "SP"},

{"socios.cpf": "12611122211"}

]

},

{"totalFuncionarios": {"$lt": 100}}

]

}

}

Neoway Search DSL

Page 62: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 63: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 64: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 65: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Como usamos:

● http://vulcand.github.io

● Rotas configuradas via ETCD

Internal Router

“It uses Etcd as a configuration backend, so changes to configuration take effect immediately without restarting the service.”

Page 66: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 67: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 68: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 69: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 70: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 71: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 72: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Necessidade:

● Analisar a ligação entre registros de forma visual

Neo4J + Keylines

Page 73: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 74: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 75: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 76: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

● Outro serviço com VulcanD

● Rotas também configuradas via ETCD

● Custom middleware (redireciona p/ serviço de autenticação/autorização)

○ Autenticação

○ Autorização

External Auth./Auth./Router

Page 77: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 78: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 79: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 80: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Requisitos:

● Cliente marca empresas em lote

● Cliente busca as empresas com suas marcações

Marcadores

Page 81: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 82: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 83: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 84: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 85: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 86: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 87: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 88: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 89: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 90: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 91: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

E se as filas estiverem

congestionadas?

Page 92: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Requisito:

● Ao marcar uma empresa, a busca deve retorná-la imediatamente

Processamento síncrono

Page 93: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 94: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 95: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 96: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 97: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 98: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 99: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 100: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Motivos:

● Sem sessões no servidor

● Informações necessárias trafegam dentro do token

● https://jwt.io/

Json Web Tokens

Page 101: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 102: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 103: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Cliente feliz!

Page 104: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Aplicações

Page 105: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 106: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 107: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 108: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 109: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

DevOps

Page 110: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Infraestrutura

● 200+ crawlers capturando dados

● 70+ microservices

● 200+ instâncias no EC2

● 100+ instâncias na Azure

Page 111: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Linux Containers

● Empacotamento de dependências em “containers”

● Permite versionamento das imagens

● Docker compose

● Rkt (uma alternativa minimalista ao Docker)

● Feito em Go

Page 112: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

CoreOS

● Distro minimalista

● Focado em containers (Docker/Rkt)

● ETCD - Database (key/value) distribuído

● Rolling updates (facilita atualização de +300 instâncias)

● Cloud Config (provisionamento nativo)

Page 113: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 114: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Systemd Units

system PRODUCTION # cat tyr.service

[Unit]

After=skydns.service

Before=tyr-announce.service

[Service]

EnvironmentFile=/etc/profile.d/core

ExecStart=/usr/bin/rkt --insecure-options=all run --net=host --no-store=true \

--inherit-env \

--volume tmp,kind=host,source=/data/tyr \

${TYR_IMAGE} -- \

-port=${TYR_PORT} \

-etcdKey=tyr \

-etcd=http://127.0.0.1:4001

Page 115: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Environment Variables

system PRODUCTION # cat /etc/profile.d/core

#!/bin/sh

# Globals

GIN_MODE=release

LOGGER_LEVEL=error

LOGGER_OUTPUT=syslog

LOGGER_SYSLOG_ADDRESS=log.neoway.local:1514/udp

LOGGER_SYSLOG_DIR=core

SYSLOG_ADDRESS=log.neoway.local:1514

# Backends

MONGO_URL=mongo1.core.neoway.local:27017,mongo2.core.neoway.local:27017

ELASTICSEARCH_URL="http://x1.elasticsearch.core.neoway.local:9200,http://x2.elasticsearch.core.ne

oway.local:9200,http://x3.elasticsearch.core.neoway.local:9200"

Page 116: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Service Discovery

“SkyDNS is a distributed service for announcement and discovery of services built on top of etcd.”

Page 117: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Service Discovery

system PRODUCTION # cat tyr-announce.service

[Unit]

Description=Announce tyr

BindsTo=tyr.service

[Service]

EnvironmentFile=/etc/environment

EnvironmentFile=/etc/profile.d/core

ExecStart=/bin/sh -c "while true; do etcdctl set /skydns/local/neoway/core/api/%m '{\"host\":

\"'${COREOS_PRIVATE_IPV4}'\"}' --ttl 15 ;sleep 10;done"

ExecStop=/usr/bin/etcdctl rm /skydns/local/neoway/core/api/%m

[Install]

WantedBy=multi-user.target

Page 118: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Service Discovery

system PRODUCTION # etcdctl ls --recursive /skydns/local/neoway/core/api

/skydns/local/neoway/core/api/ 4b142d1ced0241a4bad59d4273f65a2e

/skydns/local/neoway/core/api/ 1104a38250cf48f8bb8daefc25bc40c0

system PRODUCTION # host api.core.neoway.local

api.core.neoway.local has address 10.11.12.95

api.core.neoway.local has address 10.11.11.219

Page 119: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Kubernetes

● Gerenciador de containers em cluster

● Criado pelo Google - Escrito em Go

● Fácil de escalar (cluster e serviços)

● Service discovery

● Atualização com zero downtime - Rolling Updates

Page 120: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Kubernetes

Page 121: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Monitoramento

Page 122: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Prometheus + Grafana

● Prometheus busca as métricas (pull based)

● https://github.com/google/cadvisor

● https://github.com/prometheus/node_exporter

● Armazena em um time series database

● Permite configuração de alertas

Page 123: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 124: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 125: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 127: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Neoway Open-source Projects

● https://github.com/NeowayLabs

○ nash: /nash

○ klb: /klb

Page 128: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Estamos contratando!

Page 129: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração
Page 130: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Apoio técnico! :)

Page 131: Arquitetura Neoway Da captura à disponibilização dos dados · Companies USA: Elastic Search178 GB. Um cluster com: 13 data nodes 3 master nodes Elastic Search. Motivo: Abtração

Obrigado! :)Kamila [email protected]

Ricardo [email protected]

@ricardolonga

ricardolonga

kamilash