< Return to Video

vimeo.com/.../1080186133

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

Portuguese, Brazilian subtitles

Revisions Compare revisions