< Return to Video

vimeo.com/.../1080186133

  • 0:08 - 0:12
    E você já deve ter se deparado
    com algumas necessidades
  • 0:12 - 0:14
    diferentes no mesmo projeto,
  • 0:14 - 0:19
    onde você precisa capturar
    dados em tempo real
  • 0:19 - 0:23
    e também dados históricos
    e armazenar um grande volume disso
  • 0:23 - 0:27
    para usar o mesmo objetivo,
    no final das contas,
  • 0:27 - 0:31
    e ter que casar tudo isso
    em uma única arquitetura.
  • 0:31 - 0:33
    É disso que a gente vai falar agora,
  • 0:33 - 0:35
    falando um pouquinho
    de arquitetura lambda.
  • 0:35 - 0:36
    Quando a gente fala
    de arquitetura lambda,
  • 0:36 - 0:42
    eu estou falando de uma mescla
    aqui de propósitos diferentes,
  • 0:42 - 0:48
    onde uma única arquitetura,
    eu vou ter um único armazenamento,
  • 0:48 - 0:52
    mas eu vou atender
    a diferentes propósitos.
  • 0:52 - 0:55
    Então, fica claro
    que eu vou ter aqui,
  • 0:55 - 0:58
    provavelmente,
    ferramentas distintas.
  • 0:58 - 1:02
    Eu tenho uma visão
    que ela é a speed layer,
  • 1:02 - 1:05
    que a gente chama, ou seja,
    a camada rápida.
  • 1:05 - 1:09
    Essa camada rápida,
    eu capturo dados em tempo real.
  • 1:09 - 1:12
    Só recapitulando novamente
    o que seria o dado em tempo real.
  • 1:12 - 1:18
    Não é a cada 10 segundos,
    5 segundos, 3 segundos.
  • 1:18 - 1:23
    O dado em tempo real é, no momento
    em que acontece uma mudança
  • 1:23 - 1:25
    na minha origem,
  • 1:25 - 1:29
    exatamente no mesmo momento
    é disparado um gatilho,
  • 1:29 - 1:34
    que isso é levado
    para o meu banco de dados.
  • 1:34 - 1:36
    Diferente do batch,
    que, por exemplo,
  • 1:36 - 1:39
    se eu tiver uma carga
    a cada 5 segundos,
  • 1:39 - 1:43
    ele vai esperar 5 segundos,
    e tudo que aconteceu
  • 1:43 - 1:46
    nesses 5 segundos será levado
    para o outro lado.
  • 1:46 - 1:50
    Por mais que o tempo seja pequeno,
  • 1:51 - 1:55
    essa segunda alternativa
    de esperar os 5 segundos,
  • 1:55 - 1:57
    isso é uma carga em lote.
  • 1:57 - 1:59
    Não é tempo real.
  • 1:59 - 2:02
    Tempo real é, aconteceu, é enviado.
  • 2:02 - 2:05
    Aconteceu, é enviado.
  • 2:05 - 2:11
    E eu tenho também a carga em batch,
    que é exatamente essa segunda opção.
  • 2:11 - 2:13
    Eu dei o exemplo aqui de 5 segundos,
  • 2:13 - 2:16
    mas, por exemplo, pode ser uma carga
    que aconteça diariamente,
  • 2:16 - 2:18
    uma vez no dia.
  • 2:18 - 2:22
    Pode acontecer uma vez por semana,
    pode acontecer uma vez por mês,
  • 2:22 - 2:25
    assim como também pode acontecer
    de hora em hora.
  • 2:25 - 2:27
    Então, isso é a minha
    arquitetura lambda.
  • 2:27 - 2:29
    E é disso que a gente vai falar
    um pouco mais e vamos explorar
  • 2:29 - 2:31
    um pouquinho mais aqui.
  • 2:31 - 2:35
    Então, quando falamos aqui
    de uma arquitetura lambda,
  • 2:35 - 2:38
    geralmente ela é composta
    por 3 componentes aqui.
  • 2:38 - 2:42
    Aí eu tenho 3 camadas,
    que nós costumamos chamar,
  • 2:42 - 2:45
    que são a speed layer,
    a minha camada de batch
  • 2:45 - 2:47
    e a camada de serving, tá?
  • 2:47 - 2:50
    Vamos conhecer um pouquinho
    mais de detalhe cada uma delas agora.
  • 2:50 - 2:52
    Eu tenho aqui o meu...
  • 2:52 - 2:58
    seguindo esse fluxo de dados
    que nós temos aqui no nosso diagrama,
  • 2:58 - 3:01
    eu tenho aqui no número 1,
    eu tenho o meu dado novo.
  • 3:01 - 3:04
    Eu tenho um dado entrante.
  • 3:04 - 3:09
    Então, esse dado, ele pode ser
    tanto para a camada de batch layer,
  • 3:09 - 3:12
    que é a camada em lote, ou seja,
  • 3:12 - 3:14
    é aquele dado que ele tem
    um horário para chegar.
  • 3:14 - 3:18
    Então, assim, a cada uma hora
    eu tenho um processo que vai lá,
  • 3:18 - 3:20
    captura esse dado e traz ele.
  • 3:20 - 3:23
    E eu tenho a speed layer,
    que é a camada em tempo real,
  • 3:23 - 3:26
    ou seja, aconteceu um evento,
  • 3:26 - 3:28
    automaticamente
    vem para o meu banco de dados.
  • 3:28 - 3:30
    Aconteceu de novo,
    ele vem para o meu banco de dados.
  • 3:30 - 3:34
    Pode ser um dado dessas duas
    naturezas diferentes,
  • 3:34 - 3:39
    e cada uma vai ter
    o seu processamento diferente,
  • 3:39 - 3:45
    porque, assim, demanda ferramentas
    diferentes para fazer isso, tá?
  • 3:45 - 3:46
    Às vezes eu posso ter
    uma ferramenta
  • 3:46 - 3:50
    que vai tratar tanto o dado
    em batch quanto o dado em real-time?
  • 3:50 - 3:55
    Sim, na maioria das vezes
    as ferramentas têm essa capacidade.
  • 3:55 - 4:00
    No entanto, elas vão trabalhar
    de formas distintas aqui.
  • 4:00 - 4:04
    E, no final, eu tenho
    o meu serving layer,
  • 4:04 - 4:08
    a minha camada de onde
    eu vou servir esses dados,
  • 4:08 - 4:11
    onde eu vou disponibilizar
    esses dados.
  • 4:11 - 4:15
    Vamos supor que eu estou trabalhando
    aqui com cientistas de dados.
  • 4:15 - 4:17
    Eu sou aqui um engenheiro de dados
  • 4:17 - 4:20
    e eu sou responsável
    por essa arquitetura.
  • 4:20 - 4:25
    Então, eu estou capturando dados
    que vêm em lote, dados em tempo real.
  • 4:25 - 4:29
    E o meu cientista de dados
    precisa disponibilizar esses dados
  • 4:29 - 4:32
    para os modelos
    de machine learning dele, tá?
  • 4:32 - 4:37
    Então, essa camada de serving layer,
    é uma camada onde eu vou ter aqui
  • 4:37 - 4:40
    as pessoas que vão consumir
    esse dado, né?
  • 4:40 - 4:43
    Então, vocês podem ver aqui
    que eu tenho ali as queries,
  • 4:43 - 4:50
    no item 5, as queries que vão dentro
    do batch view ali, né?
  • 4:50 - 4:55
    Que são as visualizações
    do in lote,
  • 4:55 - 4:58
    que são visões que a gente criou
    da camada batch,
  • 4:58 - 5:03
    e eu também tenho a conexão
    com os dados em tempo real.
  • 5:03 - 5:07
    Então, essa pessoa que vai
    trabalhar ali no serving layer,
  • 5:07 - 5:12
    ele vai estar lendo esses dados,
    vai estar trabalhando com esses dados.
  • 5:12 - 5:15
    Então, geralmente, é um ambiente
    que a gente disponibiliza
  • 5:15 - 5:19
    que vai ter esse acesso a esses dados
    já configurados, já com tudo certo
  • 5:19 - 5:21
    para ele trabalhar com isso.
  • 5:21 - 5:24
    Vamos dar uma olhada
    em uma arquitetura
  • 5:24 - 5:26
    mais próximo da realidade.
  • 5:26 - 5:29
    Mais próximo não, na realidade.
  • 5:29 - 5:31
    Então, aqui eu trouxe uma arquitetura
  • 5:31 - 5:33
    que ela está em cima
    de um cloud provider,
  • 5:33 - 5:37
    ou seja, em cima
    de uma empresa que fornece cloud,
  • 5:37 - 5:40
    ferramentas, soluções de cloud
  • 5:40 - 5:42
    e nós temos exatamente
    uma arquitetura lambda aqui.
  • 5:42 - 5:45
    Eu tenho dados que está vindo
    em tempo real
  • 5:45 - 5:48
    e eu também tenho dados em batch,
    dados em lote,
  • 5:48 - 5:49
    que estão sendo trabalhados aqui.
  • 5:49 - 5:53
    Vamos dar uma olhadinha aqui
    como que funciona isso na prática,
  • 5:53 - 5:55
    em um ambiente de cloud.
  • 5:55 - 5:58
    Vamos observar aqui o diagrama,
    onde eu tenho, por exemplo,
  • 5:58 - 6:01
    as minhas origens de dados.
  • 6:01 - 6:03
    Então, eu tenho aqui CRM,
    operações, finanças,
  • 6:03 - 6:08
    recursos humanos
    e streaming data, tá?
  • 6:08 - 6:14
    Eu tenho aqui uma conexão saindo,
    para cá e outra aqui embaixo.
  • 6:14 - 6:18
    Veja que essa primeira conexão
    está ligada aqui em data sources
  • 6:18 - 6:24
    de modo geral que representa todas
    as outras quatro fontes de dados aqui
  • 6:24 - 6:28
    e o streaming data está conectado,
    saindo sozinho para cá, né?
  • 6:28 - 6:33
    Ou seja, eu tenho aqui
    o staging layer do meu data lake.
  • 6:33 - 6:40
    Ou seja, aqui ele captura
    os dados em lote, em batch
  • 6:40 - 6:43
    e joga para cá, que é uma área
    de staging, que a gente chama,
  • 6:43 - 6:46
    onde o dado vem
    sem processamento.
  • 6:46 - 6:49
    Eu vou processar ele ainda
    para armazenar ele arrumadinho,
  • 6:49 - 6:51
    bonitinho, tá?
  • 6:51 - 6:54
    E aqui embaixo eu tenho
    o streaming layer, né?
  • 6:54 - 7:00
    Ou seja, a camada de ingestão aqui
    que captura esse dado em tempo real.
  • 7:00 - 7:03
    Esse é o cara que dá o gatilho,
    ele vai lá e acontecer um dado,
  • 7:03 - 7:07
    um evento novo, ele captura.
  • 7:07 - 7:10
    Observem que as ferramentas
    aqui são diferentes, né?
  • 7:10 - 7:14
    Então, aqui em cima do data lake
    eu tenho Azure Data Lake Storage,
  • 7:14 - 7:16
    Amazon S3, Hadoop.
  • 7:16 - 7:19
    Aqui embaixo eu tenho
    o Azure Event Hub,
  • 7:19 - 7:22
    Amazon Kinesis, Apache Kafka,
  • 7:22 - 7:27
    que são ferramentas de captura
    de dados em tempo real, tá?
  • 7:27 - 7:31
    Jogamos aqui para a parte
    de processamento e query layer, né?
  • 7:31 - 7:33
    Então, eu tenho aqui
    o meu data warehouse,
  • 7:33 - 7:38
    onde eu tenho os dados estão
    sendo unidos aqui, tá?
  • 7:38 - 7:42
    Então, eu faço um processamento
    aqui, um analytic services,
  • 7:42 - 7:45
    e eu armazeno aqui os dois dados.
  • 7:45 - 7:50
    E a partir daqui eu sigo
    com uma camada de visualização.
  • 7:50 - 7:57
    Eu posso ter cubos aqui para poder
    ter esse dado mais trabalhado, tá?
  • 7:57 - 7:59
    Camada de consumo e visualização.
  • 7:59 - 8:03
    Veja também
    que do analytics service,
  • 8:03 - 8:06
    ele também segue direto
    para visualização
  • 8:06 - 8:09
    e também para o consumption layer.
  • 8:09 - 8:13
    Porque tem algumas coisas
    onde eu vou consumir
  • 8:13 - 8:17
    o meu dado que está vindo
    em tempo real, diretamente.
  • 8:17 - 8:21
    Por exemplo, eu posso ter uma camada
    de visualização como um Power BI,
  • 8:21 - 8:25
    que ele está conectado
    a um dado em real time, tá?
  • 8:25 - 8:28
    Então, eu tenho um dado
    que é histórico,
  • 8:28 - 8:31
    eu tenho um dado armazenado
    de até, poxa, 5 minutos atrás,
  • 8:31 - 8:34
    tudo bem.
  • 8:34 - 8:36
    E esse dado é usado
    para gerar gráficos,
  • 8:36 - 8:37
    para algumas coisas,
  • 8:37 - 8:41
    mas eu também tenho
    um dado em real time
  • 8:41 - 8:43
    que está sendo alimentado,
  • 8:43 - 8:47
    alimentando diretamente
    o meu dashboard, por exemplo,
  • 8:47 - 8:48
    que vai ter uma regra,
    que vai ter uma análise,
  • 8:48 - 8:54
    que vai ter algum indicador em cima
    desse dado em tempo real.
  • 8:54 - 8:58
    Então, aqui são os dois
    fluxos distintos, tá?
  • 8:58 - 9:03
    Então, veja que o fluxo 1 aqui
    é o meu dado em batch,
  • 9:03 - 9:06
    o fluxo 2 é o meu dado
    em real time,
  • 9:06 - 9:11
    e veja que eles se unem aqui
    em algum momento, né?
  • 9:11 - 9:15
    Então, eles estão juntos e misturados
    aqui para atender tanto
  • 9:15 - 9:19
    a parte de consumo aqui,
    seja por uma visualização
  • 9:19 - 9:20
    ou seja por algum aplicativo
  • 9:20 - 9:23
    ou alguma outra camada
    que vai consumir isso.
  • 9:23 - 9:26
    De modo geral, falando
    de uma maneira bem simples,
  • 9:26 - 9:31
    o que a gente tem do ponto de vista
    de ingestão de dados, tá?
  • 9:31 - 9:37
    Então, camada batch é o meu dado
    que eu vou pegar ele a cada X tempo.
  • 9:37 - 9:39
    Temos muitas ferramentas
    para fazer isso.
  • 9:39 - 9:43
    Isso pode ser feito com Python,
    pode ser feito com Spark,
  • 9:43 - 9:44
    pode ser feito com Scala,
  • 9:44 - 9:46
    pode ser feito com várias
    ferramentas de mercado.
  • 9:46 - 9:51
    Agora, quando eu estou falando
    de uma carga em tempo real,
  • 9:51 - 9:55
    ou um stream,
    isso já fica um pouco mais complexo.
  • 9:55 - 9:56
    Por quê?
  • 9:56 - 10:01
    Estou falando de uma carga
    aonde ela tem que acontecer
  • 10:01 - 10:04
    um evento de um lado,
    ele já trazer para mim.
  • 10:04 - 10:09
    Ou seja, essa ferramenta tem
    que ficar monitorando a origem, tá?
  • 10:09 - 10:13
    Então, não tem um momento
    que ela vai lá e pega o que está pronto.
  • 10:13 - 10:15
    Ela tem que ficar monitorando.
  • 10:15 - 10:17
    Então, por isso que exige
    ferramentas distintas,
  • 10:17 - 10:21
    ferramentas que vão
    lidar com isso muito bem, tá?
  • 10:21 - 10:26
    Porque se não, novamente, se eu vou
    lá a cada 5 segundos pegar os dados,
  • 10:26 - 10:29
    isso não é stream, não é dado real.
  • 10:29 - 10:31
    É batch também.
  • 10:31 - 10:31
    O tempo é pequeno?
  • 10:31 - 10:33
    Sim, mas ainda é batch.
  • 10:33 - 10:38
    Tratamentos diferentes e também
    propósitos diferentes, tá, pessoal?
  • 10:38 - 10:41
    Porque não adianta eu querer ter
    uma camada speed,
  • 10:41 - 10:44
    uma camada de dados
    em real-time,
  • 10:44 - 10:48
    aonde eu vou ter várias etapas
    de processamento e armazenamento
  • 10:48 - 10:50
    até esse dado ser consumido.
  • 10:50 - 10:54
    A hora que ele chegar lá
    na ponta para ser consumido,
  • 10:54 - 10:56
    já se passou um tempo.
  • 10:56 - 11:00
    A tomada de decisão que era
    para ser tomada naquele instante,
  • 11:00 - 11:03
    talvez já não adianta,
    já não seja mais tão efetiva.
  • 11:03 - 11:08
    Se você não precisa ter
    um dado em tempo real,
  • 11:08 - 11:11
    não vale a pena criar
    essa camada speed.
  • 11:11 - 11:16
    Porque é um custo alto,
    demanda ferramentas específicas,
  • 11:16 - 11:19
    e se você não vai consumir
    ele imediatamente,
  • 11:19 - 11:22
    se ele não vai ter um gatilho
    imediato dentro da sua arquitetura,
  • 11:22 - 11:26
    não vale a pena ter
    uma camada como essa.
  • 11:26 - 11:28
    Quando olhamos aqui dentro
    desse diagrama,
  • 11:28 - 11:31
    a gente vê várias fontes de dados
    que podem ser planilhas,
  • 11:31 - 11:35
    arquivos, e-mail, whatsApp,
    várias fontes de dados.
  • 11:35 - 11:42
    Temos dados aqui de mídias sociais,
    temos dados de sistemas operacionais,
  • 11:42 - 11:46
    bancos de dados,
    bancos de dados NoSQL,
  • 11:46 - 11:52
    diversas fontes de dados aqui
    integradas e também IoT.
  • 11:52 - 11:56
    Então, nós temos aqui
    dados de tudo que é fonte,
  • 11:56 - 12:00
    tudo que é formatos e fontes
    que vocês imaginarem.
  • 12:00 - 12:04
    Camada de ingestão,
    então, o modelo de ingestão aqui,
  • 12:04 - 12:10
    nós temos vários tipos,
    self-service, armazenados, streaming,
  • 12:10 - 12:14
    on-demand, semantic, data-driven.
  • 12:14 - 12:18
    Então, aqui são as camadas
    possíveis que a gente pode ter.
  • 12:18 - 12:20
    E o gerenciamento de dados.
  • 12:20 - 12:23
    Aqui, cada um deles vai ter...
  • 12:23 - 12:27
    Pode ser armazenado
    em um formato diferente, né?
  • 12:27 - 12:28
    Como assim?
  • 12:28 - 12:29
    Poxa, eu tenho aqui...
  • 12:29 - 12:33
    Eu tenho bancos de dados NoSQL,
    eu tenho MapReduce,
  • 12:33 - 12:36
    eu tenho banco colunar,
    eu tenho banco de grafo, né?
  • 12:36 - 12:39
    Eu tenho bancos em memory,
    por exemplo.
  • 12:39 - 12:42
    E eu tenho o nosso HDFS
    aqui também, tá?
  • 12:42 - 12:47
    Então, tudo isso daqui
    são possibilidades, né?
  • 12:47 - 12:52
    Eu posso ter cada uma dessas fontes
    aqui, cada um desses data sources.
  • 12:52 - 12:54
    Possivelmente, numa arquitetura,
  • 12:54 - 12:58
    ele vai exigir um tipo
    de armazenamento diferente, tá?
  • 12:58 - 13:03
    Dificilmente, apesar que hoje em dia
    a gente tem bancos multimodais,
  • 13:03 - 13:08
    como Oracle 23ai, por exemplo,
    que é tudo junto, né?
  • 13:08 - 13:12
    Então, eu tenho grafo,
    eu tenho colunar, eu tenho vetorial,
  • 13:12 - 13:13
    eu tenho banco relacional,
  • 13:13 - 13:17
    eu tenho vários
    tipos de bancos de dados, né?
  • 13:17 - 13:20
    Grafos, documentos,
    dentro de uma única ferramenta.
  • 13:20 - 13:25
    Então, substituiria todo esse
    data management aqui, né?
  • 13:25 - 13:27
    Substituiria ele, tá?
  • 13:27 - 13:31
    Mas isso é uma coisa
    bastante nova, né?
  • 13:31 - 13:35
    Hoje, o que a gente tem, na maioria
    das companhias, é ter a separação.
  • 13:35 - 13:37
    Então, dados de mídias sociais,
  • 13:37 - 13:41
    provavelmente vai parar
    em um banco NoSQL, tá?
  • 13:41 - 13:43
    Dados aqui de operacionais,
  • 13:43 - 13:50
    possivelmente vai parar
    em um banco mais estruturado, né?
  • 13:50 - 13:56
    Internet das coisas, possivelmente
    em um banco de grafos ou um colunar.
  • 13:56 - 13:59
    Então, a gente teria
    essa separaçãozinha aqui,
  • 13:59 - 14:02
    mas cada uma delas seria
    feita uma ingestão em batch
  • 14:02 - 14:05
    para cada um deles, tá?
  • 14:05 - 14:08
    Parte de query management, né?
  • 14:08 - 14:12
    Então, área de transição
  • 14:12 - 14:15
    que seria o sandbox
    e o data investigation.
  • 14:15 - 14:17
    Aqui a gente tem, por exemplo,
  • 14:17 - 14:21
    esse sandbox que é como
    a gente cria hoje os ambientes
  • 14:21 - 14:24
    de processamento de dados.
  • 14:24 - 14:26
    Então, por exemplo, fiz a carga,
  • 14:26 - 14:28
    carreguei para dentro
    de um banco de dados
  • 14:28 - 14:31
    ou vários bancos de dados
    dentro da minha cloud, né?
  • 14:31 - 14:35
    Então, vem um cientista de dados
    e ele vai trabalhar com esses dados.
  • 14:35 - 14:37
    Eu crio um sandbox para ele
  • 14:37 - 14:40
    que vai ter um pouquinho
    de computação.
  • 14:40 - 14:46
    Então, por exemplo, 32GB
    de processamento, 4, 8 vCPUs
  • 14:46 - 14:49
    e, às vezes, até GPU,
    porque ele vai precisar.
  • 14:49 - 14:51
    E as fontes de dados já conectadas.
  • 14:51 - 14:54
    Por isso que isso faz parte
    dessa arquitetura, tá?
  • 14:54 - 15:02
    Porque esses dados estão integrados
    a essa área aqui, esse sandbox, tá?
  • 15:02 - 15:04
    Então, os cientistas de dados
    conseguem lá trabalhar facilmente,
  • 15:04 - 15:07
    rapidamente, sem ter que fazer
    um monte de integrações,
  • 15:07 - 15:09
    sem nada disso, tá?
  • 15:09 - 15:14
    E a parte de data investigation
    também tem o mesmo propósito ali, tá?
  • 15:14 - 15:18
    E essa permanent area,
    que são áreas de negócio
  • 15:18 - 15:20
    e sistemas integradores, tá?
  • 15:20 - 15:23
    Ou seja, qual é a diferença
    entre elas?
  • 15:23 - 15:27
    Essa área de transição aqui
    do sandbox do cientista de dados
  • 15:27 - 15:30
    é por projeto, tá?
  • 15:30 - 15:32
    Ou seja, o cientista de dados
    veio trabalhar em um projeto,
  • 15:32 - 15:35
    vamos supor que seja de fraude.
  • 15:35 - 15:35
    Legal.
  • 15:35 - 15:38
    Quais dados ele precisa para trabalhar
    nesse projeto de fraude?
  • 15:38 - 15:40
    Essa, essa, essa e essa fonte.
  • 15:40 - 15:41
    Legal.
  • 15:41 - 15:43
    A gente vai criar
    esse ambiente para ele,
  • 15:43 - 15:45
    conectar essas fontes
    e ele vai trabalhar.
  • 15:45 - 15:48
    Acabou o projeto,
    isso aqui é apagado,
  • 15:48 - 15:49
    deixou de existir.
  • 15:49 - 15:52
    Esse sandbox morre, tá?
  • 15:52 - 15:54
    Nessa permanente area,
  • 15:54 - 15:56
    aqui a gente tem
    as áreas de negócio
  • 15:56 - 15:58
    e sistemas integradores.
  • 15:58 - 16:03
    Ou seja, são conectores de dados
    que a gente cria que vão ficar ali,
  • 16:03 - 16:07
    porque vai ter consumo
    contínuo disso.
  • 16:07 - 16:09
    E aí, vamos falar um pouquinho
    agora do speed layer, né?
  • 16:09 - 16:14
    Ou seja, aquela camada
    que o dado é em real time, tá?
  • 16:14 - 16:18
    Ele também tem as origens,
    pode ser uma rede social,
  • 16:18 - 16:22
    pode ser uma internet das coisas,
    pode ser sensores de máquinas, né?
  • 16:22 - 16:24
    E pode ser outros bancos de dados.
  • 16:24 - 16:26
    Vamos supor que eu tenha lá
    um mapeamento
  • 16:26 - 16:28
    que eu tenha que...
  • 16:28 - 16:32
    Apareceu uma compra nova, uma venda
    nova, eu fiz uma venda nova.
  • 16:32 - 16:35
    Então, entrou uma venda
    no meu sistema,
  • 16:35 - 16:38
    automaticamente eu quero
    que ela vá para outro lugar.
  • 16:38 - 16:42
    Então, tem um gatilho ali
    já de fazer isso aqui.
  • 16:42 - 16:47
    Automaticamente vendeu algo novo,
    já é disparado automaticamente, tá?
  • 16:47 - 16:48
    Um caso bem interessante aqui, olha.
  • 16:48 - 16:53
    Vamos supor que você tenha
    lá um monitoramento
  • 16:53 - 17:00
    de algumas partes comerciais
    ali de ações no pregão
  • 17:00 - 17:02
    e a cotação do dólar.
  • 17:02 - 17:06
    Você acha que é interessante ter
    a cotação do dólar em tempo real
  • 17:06 - 17:08
    ou você pode pegar ela
    só no final do dia?
  • 17:08 - 17:11
    Ou de uma e uma hora?
  • 17:11 - 17:13
    Em tempo real, certo?
  • 17:13 - 17:16
    Então, se você faz negociações,
    por exemplo, no pregão,
  • 17:16 - 17:19
    você tem que estar de olho
    no valor do dólar,
  • 17:19 - 17:22
    no valor das ações ali
    em tempo real.
  • 17:22 - 17:26
    Mudou um centavo que seja,
    você tem que receber uma notificação.
  • 17:26 - 17:29
    Você tem que ter esse dado
    para dar um gatilho, por exemplo,
  • 17:29 - 17:32
    nas suas negociações.
  • 17:32 - 17:34
    Então, vamos pegar um cenário aqui,
  • 17:34 - 17:39
    por exemplo, aonde você tenha
    um dashboard,
  • 17:39 - 17:41
    onde você acompanha
    diversas transações,
  • 17:41 - 17:45
    diversas coisas
    que estão acontecendo.
  • 17:45 - 17:51
    E uma delas, você quer que,
    dependendo do valor do dólar,
  • 17:51 - 17:53
    se ele subir muito,
  • 17:53 - 17:56
    suas transações podem
    ficar comprometidas.
  • 17:56 - 18:00
    E se ele cair muito, você precisa
    saber para, de repente,
  • 18:00 - 18:02
    acelerar as transações, tá?
  • 18:02 - 18:05
    E você tem um Power BI sobre isso.
  • 18:05 - 18:09
    Então, lá no Power BI, você conectou
    numa API que informa, em tempo real,
  • 18:09 - 18:13
    o dado, o valor ali do dólar, né?
  • 18:13 - 18:15
    Então, automaticamente,
    o que acontece?
  • 18:15 - 18:16
    Alterou o dólar,
  • 18:16 - 18:20
    ele manda esse valor novo
    diretamente para o seu Power BI.
  • 18:20 - 18:26
    Seu Power BI tem uma regra
    que, se passar de x valor,
  • 18:26 - 18:33
    por exemplo, R$5,50 o dólar,
    ele vai ficar tudo vermelho.
  • 18:33 - 18:38
    Se cair para baixo de R$4,00,
    por exemplo, ele vai ficar tudo verde,
  • 18:38 - 18:40
    os indicadores, tá?
  • 18:40 - 18:42
    É isso que vai acontecer.
  • 18:42 - 18:45
    Então, ele vai automaticamente
    capturar esse dado
  • 18:45 - 18:48
    e já vai ter uma ação
    aqui dentro, né?
  • 18:48 - 18:51
    E aí, por exemplo, aqui,
    nessa camada que eu trago aqui,
  • 18:51 - 18:56
    nesse diagrama, nós temos aqui
    um processamento muito maior, né?
  • 18:56 - 18:59
    Eu tenho a interface do usuário, tá?
  • 18:59 - 19:04
    Então, ele faz consulta
    e entrega aqui nos dados.
  • 19:04 - 19:06
    Aqui, ele vai fazer o Kafka.
  • 19:06 - 19:11
    Faz o serviço de mensageria,
    ou seja, captura os dados, né?
  • 19:11 - 19:13
    Então, ele vai lá, checa.
  • 19:13 - 19:13
    Checou?
  • 19:13 - 19:15
    Ele captura os dados e traz.
  • 19:15 - 19:19
    Então, ele está fazendo aqui,
    capturando alguns pacotes, né?
  • 19:19 - 19:24
    Faz uma seleção de características
    que joga aqui para um treinamento.
  • 19:24 - 19:27
    E aí, em tempo real, joga para cá
    os metadados,
  • 19:27 - 19:29
    que faz um enriquecimento.
  • 19:29 - 19:33
    Então, assim, não só o valor do dólar,
    mas ele pega o valor do dólar
  • 19:33 - 19:38
    e adiciona mais algum contexto,
    mais alguma informação, né?
  • 19:38 - 19:40
    Classifica isso de alguma forma.
  • 19:40 - 19:43
    Traz alguma classificação aqui.
  • 19:43 - 19:46
    Faz aqui, joga aqui para busca
    e armazenamento
  • 19:46 - 19:50
    e a interface do usuário
    lê isso, tá?
  • 19:50 - 19:53
    Aqui está usando
    o Elasticsearch e o Kibana,
  • 19:53 - 19:57
    que são ferramentas
    que trabalham muito bem.
  • 19:57 - 20:00
    Contudo, com esse dado
    em tempo real,
  • 20:00 - 20:03
    são plataformas
    bastante pesada,
  • 20:03 - 20:06
    bastante dura para trabalhar
    com isso, né?
  • 20:06 - 20:08
    Na captura está usando o Kafka,
  • 20:08 - 20:10
    no processamento aqui
    está usando o Spark.
  • 20:10 - 20:14
    Então, essa aqui é uma arquitetura
    que a gente pode ter.
  • 20:14 - 20:20
    E esse dado, veja que ele não vai
    direto para a visualização.
  • 20:20 - 20:22
    Ele passa por alguns steps.
  • 20:22 - 20:26
    Só que são steps que têm
    que ser muito rápido, tá?
  • 20:26 - 20:30
    Tem que ser muito rápido
    e vai trazer mais informação,
  • 20:30 - 20:33
    vai agregar algo nesse dado
    em tempo real.
  • 20:33 - 20:37
    E agora eu vou falar um pouquinho
    sobre o algoritmo do MapReduce.
  • 20:37 - 20:40
    E como ele participa de tudo isso, né?
  • 20:40 - 20:43
    Então, nós temos aqui o MapReduce
    dentro da arquitetura Lambda.
  • 20:43 - 20:48
    Ele vai ser o cara que vai também
    ajudar a gente a processar
  • 20:48 - 20:50
    e buscar esse dado, né?
  • 20:50 - 20:54
    Então, eu posso ter, por exemplo,
    dentro daquele diagrama...
  • 20:54 - 20:58
    Eu tenho a camada speed layer,
    que pode processar
  • 20:58 - 21:00
    um pouco disso mais para frente.
  • 21:00 - 21:02
    Ele não vai ter a captura dos dados.
  • 21:02 - 21:06
    Ele não seria o responsável por isso,
    mas vamos dizer que eu tenha lá
  • 21:06 - 21:09
    um Kafka que capturou
    o dado em tempo real
  • 21:09 - 21:11
    e jogou para dentro de casa.
  • 21:11 - 21:15
    A partir daqui, talvez eu tenha
    um MapReduce para distribuir isso,
  • 21:15 - 21:19
    para processar e entregar
    na camada de front, né?
  • 21:19 - 21:21
    E em batch também.
  • 21:21 - 21:25
    E aí, vamos entender
    mais ou menos como funciona
  • 21:25 - 21:28
    esse Map e depois o Reduce.
  • 21:28 - 21:31
    Então, olhando aqui
    o nosso diagrama.
  • 21:31 - 21:34
    Eu tenho um input de dados, tá?
  • 21:34 - 21:38
    E ele vai fazer o Map, ou seja,
    ele vai fazer o MapTasks aqui,
  • 21:38 - 21:40
    ele vai mapear tudo
    que tem sobre isso,
  • 21:40 - 21:45
    depois ele vai reduzir isso
    até fazer uma saída, ok?
  • 21:45 - 21:48
    Vamos colocar um exemplo
    para ficar mais fácil, tá?
  • 21:48 - 21:54
    Eu tenho um bloco de dados aqui,
    de entrada.
  • 21:54 - 22:01
    Tenho leão, urso, rio, carro, carro,
    rio, leão, carro e urso.
  • 22:01 - 22:06
    Isso é o que eu tenho de dados.
  • 22:06 - 22:11
    Ele faz uma primeira abertura,
    então, divide ali em três listas.
  • 22:11 - 22:12
    Três blocos de dados.
  • 22:12 - 22:20
    Então, leão, urso, rio, carro,
    carro, rio, leão, carro e urso.
  • 22:20 - 22:22
    Observe que tem três.
  • 22:22 - 22:23
    Não é coincidência.
  • 22:23 - 22:28
    Eu tenho três blocos de dados,
    três replicações, tá?
  • 22:28 - 22:29
    Legal.
  • 22:29 - 22:33
    E aí eu tenho lá, olha, o leão,
    nesse primeiro bloquinho,
  • 22:33 - 22:36
    aparece uma vez,
    o urso uma vez, o rio uma vez.
  • 22:36 - 22:41
    O carro uma vez, carro mais uma vez,
    rio mais uma vez.
  • 22:41 - 22:44
    Leão, um, carro, um, urso, um.
  • 22:44 - 22:45
    Legal.
  • 22:45 - 22:48
    Aí eu faço agora o map, né?
  • 22:48 - 22:54
    Então, urso, um de um,
    carro, um, um, um,
  • 22:54 - 22:58
    leão, um em um, rio, um em um.
  • 22:58 - 23:00
    O reduce.
  • 23:00 - 23:04
    Urso aparece dois,
    carro três, leão dois, rio dois.
  • 23:06 - 23:10
    Então, assim, veja que nessa
    camada anterior,
  • 23:10 - 23:14
    que ele faz urso um e um,
    o que ele quer dizer?
  • 23:14 - 23:16
    Nos blocos,
    o urso aparece no primeiro,
  • 23:16 - 23:19
    ele aparece uma vez,
    e lá no último ele aparece uma vez.
  • 23:19 - 23:21
    Então, um e um.
  • 23:21 - 23:23
    Um mais um, basicamente.
  • 23:23 - 23:26
    O carro aparece um, um, um.
  • 23:26 - 23:27
    Ou seja, aparece três vezes.
  • 23:27 - 23:34
    Porque aparece duas vezes no segundo
    bloco e uma vez no terceiro bloco.
  • 23:34 - 23:37
    Ou seja, a camada final ali
    é um processamento,
  • 23:37 - 23:41
    é uma contagem de quantas vezes
    essas palavras apareceram nos blocos.
  • 23:41 - 23:43
    O que eu tenho de saída?
  • 23:43 - 23:47
    Eu tenho urso que aparece duas vezes,
    carro aparece três vezes,
  • 23:47 - 23:51
    leão aparece duas vezes,
    e rio aparece duas vezes.
  • 23:51 - 23:56
    Essa é uma forma da gente olhar como
    funciona o algoritmo do MapReduce.
  • 23:56 - 23:58
    Eu tenho uma entrada de dados.
  • 23:58 - 24:02
    Aqui, foram textos,
    foram palavras, tá?
  • 24:02 - 24:05
    Agora, poderia ser
    quantidade de vendas,
  • 24:05 - 24:09
    poderia ser uma série
    de outras coisas
  • 24:09 - 24:13
    que eu faria esse split
    desses dados,né?
  • 24:13 - 24:16
    Esses chunks aqui,
    separaria em blocos.
  • 24:16 - 24:21
    E eu teria ali o mapeamento
    do que tem, tá?
  • 24:21 - 24:23
    E faria um Reduce, né?
  • 24:23 - 24:27
    Seguindo toda essa contagem aqui,
    essa separação e contagem.
  • 24:27 - 24:31
    E pense que cada um
    desses caras aqui, olha,
  • 24:31 - 24:35
    desses verdes aqui, é um nó.
  • 24:36 - 24:40
    Então, cada um daria
    a sua contribuição, né?
  • 24:40 - 24:43
    Vamos dizer que a pergunta
    inicial aqui é...
  • 24:43 - 24:46
    Quantas vezes aparece cada palavra?
  • 24:46 - 24:47
    Essa é a pergunta.
  • 24:47 - 24:49
    Essa foi a minha query, né?
  • 24:49 - 24:51
    A query que eu escrevi ali foi...
  • 24:51 - 24:54
    Quantas vezes aparece cada palavra?
  • 24:54 - 24:57
    Cada um dos nós aqui
    respondeu para mim, olha.
  • 24:57 - 25:00
    Leão aparece uma vez,
    urso um, rio um.
  • 25:00 - 25:02
    O segundo nó, olha.
  • 25:02 - 25:06
    Carro um, carro um, rio um.
  • 25:06 - 25:10
    Terceiro nó, leão um,
    carro um, urso um, né?
  • 25:10 - 25:13
    Então, eu tenho o quê?
  • 25:13 - 25:17
    Urso aparece um mais um,
    carro um mais um mais um,
  • 25:17 - 25:21
    Leão um mais um, rio um mais um.
  • 25:21 - 25:23
    O final, então, é isso daqui.
  • 25:23 - 25:27
    Então, cada nó deu a sua
    contribuição ali pra fazer, olha,
  • 25:27 - 25:32
    tipo, cara, comigo aqui nos meus
    blocos de dados, eu tenho isso.
  • 25:32 - 25:33
    Eu tenho isso.
  • 25:33 - 25:34
    Eu tenho isso.
  • 25:34 - 25:36
    Juntou tudo e entregou o final.
  • 25:36 - 25:41
    Então, toda vez que a gente fala
    de uma arquitetura lambda,
  • 25:41 - 25:43
    a gente tem um processamento misto.
  • 25:43 - 25:46
    Ou seja, eu tenho dados
    que vem em tempo real,
  • 25:46 - 25:49
    eu tenho dados que vem em lote, tá?
  • 25:49 - 25:53
    E o MapReduce é uma ferramenta
    que ajuda a gente a ter o processamento
  • 25:53 - 25:55
    no meio disso, tá?
  • 25:55 - 25:58
    Eu vou ter ferramentas que vão
    capturar o meu dado em batch
  • 25:58 - 25:59
    e vão armazenar.
  • 25:59 - 26:00
    Eu vou ter ferramentas
  • 26:00 - 26:03
    que vai capturar
    o meu dado em tempo real
  • 26:03 - 26:06
    e vai trazer para dentro
    da arquitetura, né?
  • 26:06 - 26:08
    O MapReduce pode ser
    a ferramenta aqui
  • 26:08 - 26:12
    no meio disso que vai ler tudo isso,
  • 26:12 - 26:15
    processar e trazer
    uma informação no final.
Title:
vimeo.com/.../1080186133
Video Language:
Portuguese, Brazilian
Duration:
26:18

Portuguese, Brazilian subtitles

Revisions Compare revisions