< Return to Video

vimeo.com/.../1080186133

  • 0:08 - 0:12
    errE 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:22
    e também dados históricos
    e armazenar um grande volume
  • 0:22 - 0:27
    disso para usar o mesmo objetivo,
    no final das contas,
  • 0:27 - 0:32
    e ter que casar tudo isso
    em uma única arquitetura.
  • 0:32 - 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:56
    Então, fica claro
    que eu vou ter aqui,
  • 0:56 - 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:13
    Só recapitulando novamente
    o que seria o dado em tempo real.
  • 1:13 - 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:30
    exatamente no mesmo momento
    é disparado um gatilho,
  • 1:30 - 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:49
    Por mais que o tempo seja pequeno,
  • 1:52 - 1:56
    essa segunda alternativa
    de esperar os 5 segundos,
  • 1:56 - 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:04
    Aconteceu, é enviado.
  • 2:04 - 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:17
    mas, por exemplo, pode ser uma carga
    que aconteça diariamente,
  • 2:17 - 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:30
    E é disso que a gente vai falar
    um pouco mais e vamos explorar
  • 2:30 - 2:32
    um pouquinho mais aqui.
  • 2:32 - 2:35
    Então, quando falamos aqui
    de uma arquitetura lambda,
  • 2:35 - 2:39
    geralmente ela é composta
    por 3 componentes aqui.
  • 2:39 - 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:46
    e a camada de serving, tá?
  • 2:46 - 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:02
    eu tenho aqui no número 1,
    eu tenho o meu dado novo.
  • 3:02 - 3:05
    Eu tenho um dado entrante.
  • 3:05 - 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:15
    é aquele dado que ele tem
    um horário para chegar.
  • 3:15 - 3:19
    Então, assim, a cada uma hora
    eu tenho um processo que vai lá,
  • 3:19 - 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:31
    Aconteceu de novo,
    ele vem para o meu banco de dados.
  • 3:31 - 3:35
    Pode ser um dado dessas duas
    naturezas diferentes,
  • 3:35 - 3:40
    e cada uma vai ter
    o seu processamento diferente,
  • 3:40 - 3:44
    porque, assim, demanda ferramentas
    diferentes para fazer isso, tá?
  • 3:44 - 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:19
    e eu sou responsável
    por essa arquitetura.
  • 4:19 - 4:26
    Então, eu estou capturando dados
    que vêm em lote, dados em tempo real.
  • 4:26 - 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:38
    Então, essa camada de serving layer,
    é uma camada onde eu vou ter aqui
  • 4:38 - 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:51
    no item 5, as queries que vão dentro
    do batch view ali, né?
  • 4:51 - 4:54
    Que são as visualizações
    do in lote,
  • 4:54 - 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:28
    mais próximo da realidade,
    mais próximo não, na realidade.
  • 5:28 - 5:31
    Então, aqui eu trouxe uma arquitetura
  • 5:31 - 5:34
    que ela está em cima
    de um cloud provider,
  • 5:34 - 5:38
    então, ou seja, em cima
    de uma empresa que fornece cloud,
  • 5:38 - 5:39
    ferramentas, soluções de cloud
  • 5:39 - 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:47
    e eu também tenho dados em batch,
    dados em lote,
  • 5:47 - 5:50
    que estão sendo trabalhados aqui.
  • 5:50 - 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:59
    Vamos observar aqui o diagrama,
    onde eu tenho, por exemplo,
  • 5:59 - 6:00
    as minhas origens de dados.
  • 6:00 - 6:04
    Então, eu tenho aqui CRM,
    operações, finanças,
  • 6:04 - 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:29
    e o streaming data está conectado,
    saindo sozinho para cá, né?
  • 6:29 - 6:33
    Ou seja, eu tenho aqui
    o staging layer do meu data lake.
  • 6:33 - 6:39
    Ou seja, aqui ele faz,
    captura os dados em lote,
  • 6:39 - 6:43
    em batch e joga para cá,
    que é uma área de staging,
  • 6:43 - 6:45
    que a gente chama, onde o dado
    vem sem processamento.
  • 6:45 - 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:04
    Esse é o cara que dá o gatilho,
    ele vai lá e acontecer um dado,
  • 7:04 - 7:05
    um evento novo, ele captura.
  • 7:08 - 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:21
    Aqui embaixo eu tenho o Azure
    Event Hub, Amazon Kines,
  • 7:21 - 7:28
    Apache Kafka, que são ferramentas
    de captura de dados em tempo real, tá.
  • 7:28 - 7:30
    Jogamos aqui para a parte
    de processamento e query layer, né?
  • 7:30 - 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:46
    e eu armazeno aqui os dois dados?
  • 7:46 - 7:50
    E a partir daqui eu sigo
    com uma camada de visualização,
  • 7:50 - 7:56
    eu posso 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,
    ele também segue direto
  • 8:05 - 8:09
    para visualização e também
    para o consumption layer, né?
  • 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:32
    eu tenho um dado armazenado
    de até, poxa, 5 minutos atrás,
  • 8:32 - 8:34
    tudo bem.
  • 8:34 - 8:37
    E esse dado é usado
    para gerar gráficos,
  • 8:37 - 8:38
    para algumas coisas,
  • 8:38 - 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:49
    que vai ter uma regra,
    que vai ter uma análise,
  • 8:49 - 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:09
    o fluxo 2 é o meu dado
    em real time, e veja que eles são,
  • 9:09 - 9:11
    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:21
    ou seja por algum aplicativo
  • 9:21 - 9:24
    ou alguma outra camada
    que vai consumir isso.
  • 9:24 - 9:27
    De modo geral, falando
    de uma maneira bem simples,
  • 9:27 - 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:40
    Temos muitas ferramentas
    para fazer isso.
  • 9:40 - 9:43
    Isso pode ser feito com Python,
    pode ser feito com Spark,
  • 9:43 - 9:45
    pode ser feito com Scala,
  • 9:45 - 9:47
    pode ser feito com várias
    ferramentas de mercado.
  • 9:47 - 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:14
    Então, não tem um momento
    que ela vai lá e pega o que está pronto.
  • 10:14 - 10:15
    Ela tem que ficar monitorando.
  • 10:15 - 10:17
    Então, por isso que exige
    ferramentas distintas,
  • 10:17 - 10:22
    ferramentas que vão
    lidar com isso muito bem, tá?
  • 10:22 - 10:27
    Porque se não, novamente, se eu vou
    lá a cada 5 segundos pegar os dados,
  • 10:27 - 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: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:49
    até esse dado ser consumido.
  • 10:49 - 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: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?
  • 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:23
    se ele não vai ter um gatilho
    imediato dentro da sua arquitetura,
  • 11:23 - 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:36
    arquivos, e-mail, WhatsApp,
    várias fontes de dados.
  • 11:36 - 11:41
    Temos dados aqui de mídias sociais,
    temos dados de sistemas operacionais,
  • 11:41 - 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:55
    Então, nós temos aqui
    dados de tudo que é fonte,
  • 11:55 - 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:21
    E o gerenciamento de dados.
  • 12:21 - 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:37
    eu tenho banco colunar,
    eu tenho banco de grafo, né?
  • 12:37 - 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, 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,
  • 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: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, né?
  • 13:30 - 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, né?
  • 14:02 - 14:06
    Em batch para cada um deles, tá?
  • 14:06 - 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:19
    Aqui a gente tem, por exemplo,
    esse sandbox,
  • 14:19 - 14:24
    é como a gente cria hoje os ambientes
    de processamento de dados, 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:38
    Eu crio um sandbox para ele,
  • 14:38 - 14:41
    que vai ter um pouquinho
    de computação.
  • 14:41 - 14:46
    Então, por exemplo, 32GB
    de processamento, 4, 8V CPUs
  • 14:46 - 14:50
    e, às vezes, até GPU,
    porque ele vai precisar.
  • 14:50 - 14:52
    E as fontes de dados já conectadas.
  • 14:52 - 14:55
    Por isso que isso faz parte
    dessa arquitetura, tá?
  • 14:55 - 15:01
    Porque esses dados estão integrados
    a essa área aqui, esse sandbox, tá?
  • 15:01 - 15:05
    Então, os cientistas de dados
    conseguem lá trabalhar facilmente,
  • 15:05 - 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 permanente área,
    que são áreas de negócio
  • 15:18 - 15:20
    e sistemas integradores, tá?
  • 15:20 - 15:23
    Ou seja, qual que é a diferença
    entre elas?
  • 15:23 - 15:28
    Essa área de transição aqui
    do sandbox do cientista de dados
  • 15:28 - 15:30
    é por projeto, tá?
  • 15:30 - 15:33
    Ou seja, o cientista de dados
    veio trabalhar em um projeto,
  • 15:33 - 15:35
    vamos supor que seja de fraude.
  • 15:35 - 15:36
    Legal.
  • 15:36 - 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:53
    Esse sandbox morre, tá?
  • 15:53 - 15:55
    Nessa permanente área,
  • 15:55 - 15:57
    aqui a gente tem
    as áreas de negócio
  • 15:57 - 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 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: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:39
    automaticamente eu quero
    que ela vá para outro lugar.
  • 16:39 - 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:49
    Um caso bem interessante aqui, olha.
  • 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
  • 17:06 - 17:09
    ou você pode pegar ela
    só no final do dia?
  • 17:09 - 17:13
    Ou de uma e uma hora
    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:27
    Mudou um centavo que seja,
    você tem que receber uma notificação.
  • 17:27 - 17:30
    Você tem que ter esse dado
    para dar um gatilho, por exemplo,
  • 17:30 - 17:32
    nas suas negociações.
  • 17:32 - 17:35
    Então, vamos pegar um cenário aqui,
  • 17:35 - 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:54
    se ele subir muito,
  • 17:54 - 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:12
    o dado, o valor ali do dólar, né?
  • 18:12 - 18:16
    Então, automaticamente,
    o que acontece?
  • 18:16 - 18:17
    Alterou o dólar,
  • 18:17 - 18:21
    ele manda esse valor novo
    diretamente para o seu Power BI.
  • 18:21 - 18:26
    Seu Power BI tem uma regra
    que, se passar de x valor,
  • 18:26 - 18:34
    por exemplo, 5,50, o dólar, 5,50 reais,
    ele vai ficar tudo vermelho.
  • 18:34 - 18:39
    Se cair para baixo de 4 reais,
    por exemplo, ele vai ficar tudo verde,
  • 18:39 - 18:41
    os indicadores, tá?
  • 18:41 - 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:52
    E aí, por exemplo, aqui,
    nessa camada que eu trago aqui,
  • 18:52 - 18:56
    nesse diagrama, nós temos aqui
    um processamento muito maior, né?
  • 18:56 - 18:58
    Eu tenho a interface do usuário, tá?
  • 18:58 - 19:04
    Então, ele faz consulta
    e entrega aqui nos dados, tá?
  • 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:15
    Então, ele vai lá, checa, checou,
    captura os dados e traz.
  • 19:15 - 19:19
    Então, ele está fazendo aqui,
    capturando alguns pacotes, né?
  • 19:19 - 19:22
    Faz uma seleção de características.
  • 19:22 - 19:25
    Que joga aqui para um treinamento,
    né?
  • 19:25 - 19:28
    E aí, em tempo real, joga para cá
    os metadados,
  • 19:28 - 19:30
    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.
  • 19:40 - 19:43
    Traz alguma classificação aqui.
  • 19:43 - 19:46
    Faz aqui, joga aqui para busca
    e armazenamento
  • 19:46 - 19:51
    e a interface do usuário
    lê isso, tá?
  • 19:51 - 19:53
    Aqui está usando
    o Elasticsearch e Kibana, né?
  • 19:53 - 19:57
    Que são ferramentas
    que trabalham muito bem.
  • 19:57 - 20:01
    Com tudo, com esse dado
    em tempo real
  • 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,
  • 20:08 - 20:10
    no processamento aqui
    está usando Spark.
  • 20:10 - 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: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:32
    vai agregar algo nesse dado
    em tempo real.
  • 20:32 - 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, né?
  • 20:54 - 20:58
    Eu tenho a camada SpeedLayer,
    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:20
    E em batch também.
  • 21:20 - 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:32
    Então, olhando aqui
    o nosso diagrama.
  • 21:32 - 21:35
    Eu tenho um input de dados, tá?
  • 21:35 - 21:38
    E ele vai fazer o Map, ou seja,
    ele vai fazer o MapTasks aqui,
  • 21:38 - 21:41
    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:49
    Vamos colocar um exemplo
    para ficar mais fácil, tá?
  • 21:49 - 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:13
    Três blocos de dados.
  • 22:13 - 22:21
    Então, Leão, urso, rio, carro,
    carro, rio, Leão, carro e urso.
  • 22:21 - 22:22
    Observe que tem três.
  • 22:22 - 22:24
    Não é coincidência.
  • 22:24 - 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:37
    aparece uma vez,
    o urso uma vez, o rio uma vez.
  • 22:37 - 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:46
    Legal.
  • 22:46 - 22:49
    Aí eu faço agora o MAP, né?
  • 22:49 - 22:54
    Então, urso, um de um,
    carro, um, um, um,
  • 22:54 - 22:59
    leão, um em um, rio, um em um.
  • 22:59 - 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, ele veja
    que nessa camada anterior,
  • 23:10 - 23:14
    que ele faz urso um em um,
    o que que ele quer dizer?
  • 23:14 - 23:17
    Nos blocos,
    o urso aparece no primeiro,
  • 23:17 - 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:24
    Um mais um, basicamente.
  • 23:24 - 23:26
    O carro aparece um, um, um.
  • 23:26 - 23:28
    Ou seja, aparece três vezes.
  • 23:28 - 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 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 MAP Reduce.
  • 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, tá?
  • 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, tá?
  • 24:27 - 24:31
    E pense que cada um
    desses caras aqui, olha,
  • 24:31 - 24:34
    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:52
    A query que eu escrevi ali foi...
  • 24:52 - 24:54
    Quantas vezes aparece cada palavra?
  • 24:54 - 24:57
    Cada um dos nós aqui
    respondeu pra mim, olha...
  • 24:57 - 25:01
    Leão aparece uma vez,
    urso um, rio um.
  • 25:01 - 25:02
    O segundo nó, olha...
  • 25:02 - 25:06
    Carro um, carro um, rio um.
  • 25:06 - 25:11
    Terceiro nó, Leão um,
    carro um, urso um, né?
  • 25:11 - 25:13
    Então, eu tenho o quê?
  • 25:13 - 25:18
    Urso aparece um mais um,
    carro um mais um mais um,
  • 25:18 - 25:21
    Leão um mais um, rio um mais um.
  • 25:21 - 25:24
    O final, então, é isso daqui.
  • 25:24 - 25:28
    Então, cada nó deu a sua
    contribuição ali pra fazer, olha...
  • 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: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
  • 25:58 - 26:00
    em batch e vão armazenar.
  • 26:00 - 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 pra 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:14
    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