Return to Video

EBD CAP03 VA04 FAST DATA COM STREAM PROCESSING

  • 0:08 - 0:11
    Bem-vindo ao novo
    mundo Fast Data.
  • 0:11 - 0:15
    A velocidade com que acontecem
    as mudanças hoje, contínuas,
  • 0:15 - 0:18
    num mundo de negócio
    e na sociedade como um todo,
  • 0:18 - 0:21
    exige que a computação
    tenha novos padrões
  • 0:21 - 0:27
    e acompanhe todo esse ritmo
    com que acontece toda essa evolução.
  • 0:27 - 0:29
    Então, para que possamos
    entender um pouco
  • 0:29 - 0:34
    de como a maturidade da computação
    distribuída vem evoluindo
  • 0:34 - 0:37
    e dando conta de impulsionar
    toda essa transformação,
  • 0:37 - 0:40
    nós vamos acompanhar
    alguns tópicos aqui
  • 0:40 - 0:43
    em relação à computação
    baseada em streaming,
  • 0:43 - 0:47
    baseada em processamento
    real time,
  • 0:47 - 0:49
    entendendo um pouco
    desses conceitos e soluções
  • 0:49 - 0:53
    que estão sendo criadas
    para resolver esses problemas.
  • 0:53 - 0:57
    Então, uma das melhores definições
    para esse processamento real time,
  • 0:57 - 0:59
    é um processamento
    de dados em movimento.
  • 0:59 - 1:01
    E esse dado
    é processado
  • 1:01 - 1:04
    o mais próximo do momento
    que ele é produzido ou recebido.
  • 1:04 - 1:07
    Então, é fluxo
    contínuo de dados,
  • 1:07 - 1:11
    onde esse processamento
    se torna mais near on-line.
  • 1:11 - 1:15
    É difícil trabalhar
    com uma visão real time
  • 1:15 - 1:18
    porque é uma fração
    de milésimos de segundos,
  • 1:18 - 1:21
    mas é muito simples entender
    que ele está sendo processado
  • 1:21 - 1:23
    à medida que ele está
    sendo produzido.
  • 1:23 - 1:25
    Então, essa seria
    a melhor definição.
  • 1:26 - 1:30
    Esse fluxo também pode ser
    definido como fluxo de eventos.
  • 1:30 - 1:32
    Então, nós produzimos
    muitos eventos,
  • 1:32 - 1:35
    seja um evento para uma transação
    financeira no e-commerce,
  • 1:35 - 1:40
    um evento de transação
    usando uma instituição bancária,
  • 1:40 - 1:44
    pode ser um evento de log
    numa operação de Telecom,
  • 1:44 - 1:48
    podem ser hoje vários tipos de comunicação
    em redes sociais, em mídias,
  • 1:48 - 1:52
    que geram arquivos de log
    ou mensagens de eventos.
  • 1:52 - 1:56
    Então, nós começamos a criar
    um modelo orientado a eventos,
  • 1:56 - 1:59
    e esses eventos, que são
    os dados produzidos,
  • 1:59 - 2:06
    passam por um fluxo, porque existe
    ali uma plataforma, uma solução,
  • 2:06 - 2:10
    com uma capacidade bem grande
    de fazer esse processamento.
  • 2:10 - 2:12
    Então, é comum quando
    nós olhamos...
  • 2:12 - 2:15
    Vamos pegar, por exemplo,
    um case como o Uber.
  • 2:15 - 2:17
    O Uber gera vários eventos,
    são eventos de corridas,
  • 2:17 - 2:21
    eventos do Uber Eats
    para fazer entrega de alimentos.
  • 2:21 - 2:24
    E, assim, nós temos
    uma quantidade enorme de eventos
  • 2:24 - 2:27
    sendo gerados em várias
    partes pelo mundo.
  • 2:27 - 2:29
    É uma aplicação
    que é fácil entender
  • 2:29 - 2:33
    a necessidade de fazer esse
    processamento mais real time.
  • 2:33 - 2:37
    Então, praticamente todas
    as interações do Uber
  • 2:37 - 2:41
    dependem desse processamento
    mais real time.
  • 2:41 - 2:45
    Acompanhando essa capacidade,
    que trabalha em grande escala,
  • 2:45 - 2:49
    e várias aplicações
    estão evoluindo dessa forma,
  • 2:49 - 2:53
    nós precisamos de soluções
    que suportem todo esse padrão
  • 2:53 - 2:55
    da computação
    distribuída.
  • 2:55 - 2:59
    Então, nós vamos começar a entender
    um pouco desse fluxo de eventos
  • 2:59 - 3:02
    baseado em um processamento
    usando streaming.
  • 3:02 - 3:06
    Então, streaming seria esse fluxo
    contínuo de processamento.
  • 3:06 - 3:09
    Às vezes nós usamos
    o termo streaming
  • 3:09 - 3:13
    para falar de transmissão de vídeo,
    transmissão de áudio,
  • 3:13 - 3:16
    que também é um fluxo
    contínuo de eventos
  • 3:16 - 3:18
    ou de processamento
    de dados.
  • 3:19 - 3:22
    Nesse exemplo,
    nós temos o input,
  • 3:22 - 3:25
    esse input vai passar
    dentro de um fluxo
  • 3:25 - 3:29
    que evita a persistência
    em um banco de dados.
  • 3:29 - 3:32
    Então, perceba que o fluxo,
    à medida que ele é gerado,
  • 3:32 - 3:37
    já é empurrado para ser processado
    de alguma forma com essa engine,
  • 3:37 - 3:40
    e, no final, nós estamos buscando
    resolver algum problema.
  • 3:40 - 3:44
    Pode ser um problema de transformação
    de dados na engenharia de dados,
  • 3:44 - 3:48
    pode ser uma necessidade
    de tomada de decisão
  • 3:48 - 3:51
    com um algoritmo
    que vai usar esses dados
  • 3:51 - 3:55
    para fazer uma recomendação,
    para fazer uma análise de fraude.
  • 3:55 - 3:58
    E, assim, nós conseguimos
    fazer um pipeline,
  • 3:58 - 4:01
    que seria toda
    essa visão do fluxo
  • 4:01 - 4:04
    funcionando sem
    a necessidade de passar
  • 4:04 - 4:07
    por algumas camadas
    lentas de persistência.
  • 4:07 - 4:10
    Então, nós saímos daquele
    modelo batch, que é o padrão,
  • 4:10 - 4:14
    onde começamos a trabalhar
    com grandes volumes de Big Data.
  • 4:14 - 4:17
    Foi aí que começaram
    as soluções como o Hadoop,
  • 4:17 - 4:20
    soluções mais
    conhecidas,
  • 4:20 - 4:22
    que trabalham o armazenamento
    de grande escala
  • 4:22 - 4:24
    para depois
    processar o dado.
  • 4:24 - 4:30
    E o uso de muito recurso,
    principalmente de memória,
  • 4:30 - 4:35
    possibilita fazermos todo
    esse fluxo sem esfriar o dado,
  • 4:35 - 4:39
    ou seja, sem colocar esse dado
    numa camada mais fria de persistência.
  • 4:39 - 4:42
    Então, é isso que permite
    ele responder
  • 4:42 - 4:45
    com alta performance
    e com menor latência.
  • 4:46 - 4:51
    Um dos fatores que viabilizam
    trabalhar com esse fluxo pesado
  • 4:51 - 4:55
    de processamento de muitos
    eventos real time,
  • 4:55 - 4:58
    é porque nós vemos na linha
    do tempo que o custo de memória,
  • 4:58 - 5:00
    o uso de memória,
    caiu,
  • 5:00 - 5:04
    e, com isso, nós conseguimos
    não só processar grande volume,
  • 5:04 - 5:07
    mas manter esse
    volume nesse pipeline
  • 5:07 - 5:11
    usando uma capacidade
    de memória maior.
  • 5:11 - 5:15
    E a tendência é que trabalhemos
    cada vez mais in memory,
  • 5:15 - 5:20
    com soluções que armazenem
    de forma contínua esse dado em memória
  • 5:20 - 5:25
    o tempo suficiente para resolver
    algum problema nesse pipeline.
  • 5:25 - 5:28
    Então, isso também é
    uma viabilidade recente.
  • 5:28 - 5:31
    Não era viável tentarmos resolver
    esses problemas em real time
  • 5:31 - 5:35
    a algum tempo atrás por causa
    da maturidade da computação distribuída
  • 5:35 - 5:40
    associada ao custo
    dos recursos computacionais.
  • 5:40 - 5:43
    Nós já usamos vários exemplos
    de casos de usos aplicados
  • 5:43 - 5:46
    a processamento
    real time.
  • 5:46 - 5:47
    Então, temos exemplos
    mais clássicos
  • 5:47 - 5:52
    como recomendação para vendas,
    por exemplo, no e-commerce,
  • 5:52 - 5:55
    temos exemplos no setor financeiro,
    com análise de fraude.
  • 5:55 - 5:58
    E, assim, nós temos
    criado cada vez mais
  • 5:58 - 6:01
    essa capacidade de responder
    à necessidade de negócio
  • 6:01 - 6:04
    com soluções
    real time.
  • 6:04 - 6:07
    Então, evento da indústria 4.0,
    por exemplo,
  • 6:07 - 6:11
    que depende de vários sensores
    coletando dados num processo produtivo,
  • 6:11 - 6:14
    e esses processos podem
    passar por um streaming,
  • 6:14 - 6:19
    onde vai ter um algoritmo
    de detecção de anomalias
  • 6:19 - 6:24
    para entender a possibilidade de ter
    um problema nesse processo produtivo
  • 6:24 - 6:28
    e indicar isso como uma falha
    nos próximos cinco minutos.
  • 6:28 - 6:32
    Então, quanto menor a janela
    de tomada de decisão, maior o valor.
  • 6:32 - 6:36
    E, com isso, toda essa viabilidade
    vai mudando o mindset
  • 6:36 - 6:40
    de como as áreas de negócio pensam
    no problema e pensam na solução,
  • 6:40 - 6:44
    buscando cada vez mais
    aproximar esse time to market
  • 6:44 - 6:47
    para tomada de decisão
    no real time.
  • 6:47 - 6:51
    E nós temos
    uma evolução natural
  • 6:51 - 6:53
    sobre o conceito
    dos microsserviços.
  • 6:53 - 6:56
    Na engenharia de softwares,
    nós começamos a desacoplar
  • 6:56 - 6:58
    vários componentes
    computacionais
  • 6:58 - 7:03
    e criar soluções mais flexíveis,
    mais ágeis e mais evolutivas
  • 7:03 - 7:05
    com o conceito
    de microsserviços.
  • 7:05 - 7:09
    E quando nós falamos
    de processamento streaming,
  • 7:09 - 7:11
    esse processamento
    distribuído,
  • 7:11 - 7:13
    principalmente
    para tomada de decisão,
  • 7:13 - 7:17
    nós começamos a usar
    o termo event-driven,
  • 7:17 - 7:21
    que seria você usar vários
    pontos de medição.
  • 7:21 - 7:25
    Pode ser controle de log,
    controle de mensagem,
  • 7:25 - 7:31
    controle de eventos, que são
    os registros captados por IoT,
  • 7:31 - 7:37
    e através desses eventos nós
    vamos direcionando vários fluxos.
  • 7:37 - 7:41
    Então, esses fluxos podem ser
    encadeados num pipeline,
  • 7:41 - 7:44
    e, com isso, nós passamos
    por transformação,
  • 7:44 - 7:47
    por detecção,
    por discovery,
  • 7:47 - 7:51
    e por tomadas de decisões
    cada vez mais inteligentes.
  • 7:51 - 7:55
    Então, construir esses pipelines
    dentro desse modelo
  • 7:55 - 7:58
    também muda algumas características
    no desenvolvimento.
  • 7:58 - 8:02
    Então, à medida que nós não
    dependemos da persistência,
  • 8:02 - 8:06
    nós temos um estado que vai
    acompanhando todo o fluxo,
  • 8:06 - 8:09
    e, a partir dali, fica
    um pouco mais simples
  • 8:09 - 8:13
    para que o código não
    tenha uma dependência
  • 8:13 - 8:17
    desse processo
    de armazenamento.
  • 8:17 - 8:19
    Então, ele fica um pouco
    mais independente
  • 8:19 - 8:26
    e ele consegue seguir
    o fluxo do início ao fim
  • 8:26 - 8:28
    para resolver
    um determinado problema,
  • 8:28 - 8:31
    como esses casos de usos
    que nós mencionamos.
  • 8:32 - 8:35
    Trabalhando dessa forma,
    nós começamos a ver
  • 8:35 - 8:38
    essa evolução de como
    os eventos acontecem
  • 8:38 - 8:42
    dentro de um processo
    sequencial.
  • 8:42 - 8:46
    Por exemplo: nessa imagem aqui
    nós podemos ver uma sequência.
  • 8:46 - 8:51
    E simplificando aqui, nós temos
    eventos que estão numa ordem,
  • 8:51 - 8:56
    e essa ordem vai chegando
    na camada de processamento
  • 8:56 - 8:58
    e vai sendo
    processada.
  • 8:58 - 9:00
    Independentemente
    da ordem que chegou,
  • 9:00 - 9:04
    existe um controle para ele
    saber qual é a ordem correta
  • 9:04 - 9:07
    para manter
    essa sequência.
  • 9:07 - 9:11
    Então, o próprio código,
    o próprio controle da arquitetura,
  • 9:11 - 9:16
    se encarrega de organizar
    esse processamento
  • 9:16 - 9:20
    sem depender de uma indexação
    física da persistência.
  • 9:21 - 9:23
    E, aqui, nós temos esse exemplo
    de uma camada superior,
  • 9:23 - 9:25
    que são
    os "producers".
  • 9:25 - 9:29
    É um nome usado
    para a entrada do dado.
  • 9:29 - 9:30
    Então, esse dado está
    sendo produzido,
  • 9:30 - 9:33
    e, de alguma forma,
    ele está sendo organizado.
  • 9:33 - 9:39
    Pode ser, por exemplo,
    através de uma camada de broker.
  • 9:39 - 9:42
    E um exemplo de broker
    bastante comum hoje é o Kafka.
  • 9:42 - 9:45
    Então, o Kafka faz
    um armazenamento intermediário,
  • 9:45 - 9:48
    e ele serve outras
    camadas de consumo,
  • 9:48 - 9:52
    que são aplicações
    ou fluxos de processamento
  • 9:52 - 9:55
    que vão buscar esse
    dado no broker
  • 9:55 - 9:59
    e usar esses dados para fazer
    processamentos com várias finalidades.
  • 9:59 - 10:04
    Então, na parte inferior aqui,
    nós temos dois consumers
  • 10:04 - 10:07
    que estão buscando esse dado
    em ordens aleatórias,
  • 10:07 - 10:09
    de acordo com a necessidade
    da aplicação,
  • 10:09 - 10:11
    para fazer alguns
    processamentos.
  • 10:11 - 10:13
    Então, vamos imaginar
    aqui que nós temos
  • 10:13 - 10:16
    o evento que saiu lá do log,
    que saiu do sensor,
  • 10:16 - 10:19
    ele entrou nessa camada
    intermediária, que é o broker,
  • 10:19 - 10:23
    que está organizando
    e garantindo uma persistência
  • 10:23 - 10:25
    mesmo que ainda
    com alta velocidade,
  • 10:25 - 10:28
    usando memória
    distribuída, por exemplo.
  • 10:28 - 10:31
    Nós temos na imagem aqui,
    na parte superior,
  • 10:31 - 10:35
    esses eventos acontecendo
    com o input de alguns registros.
  • 10:35 - 10:39
    E, de forma simples, nós estamos
    contando aqui esses eventos,
  • 10:39 - 10:41
    que tem
    um timestamp,
  • 10:41 - 10:47
    e ele está contando os animais
    relacionados à cada registro.
  • 10:47 - 10:50
    Então, à medida que esse
    fluxo está acontecendo,
  • 10:50 - 10:52
    nós temos essa
    linha do tempo,
  • 10:52 - 10:56
    que é o streaming recebendo esses
    dados e fazendo o processamento.
  • 10:56 - 10:59
    E na camada inferior
    nós temos o pipeline,
  • 10:59 - 11:04
    que pode ser, num caso
    um pouco mais simplificado,
  • 11:04 - 11:06
    um incremento
    dessa contagem.
  • 11:06 - 11:10
    Então, no estágio
    de um determinado horário,
  • 11:10 - 11:12
    ele coloca janelas aqui
    para facilitar.
  • 11:12 - 11:15
    Esses eventos
    são processados,
  • 11:15 - 11:18
    e, eventualmente, pode ser
    que um desses eventos
  • 11:18 - 11:21
    tenha chegado
    com um delta de tempo
  • 11:21 - 11:25
    e está com o time atrasado
    dentro da sequência.
  • 11:25 - 11:29
    Isso não tem importância porque ele vai
    conseguir resolver esse processamento
  • 11:29 - 11:31
    e encaixar isso
    dentro do pipeline.
  • 11:31 - 11:35
    Esse conceito de watermarking
    consegue resolver isso na arquitetura.
  • 11:35 - 11:39
    Então, a arquitetura também está
    preparada para alta resiliência.
  • 11:39 - 11:45
    Ou seja, é difícil você quebrar
    esse processamento distribuído
  • 11:45 - 11:51
    porque as próprias soluções
    vão resolver isso com alta resiliência,
  • 11:51 - 11:57
    e também garantir esses
    controles de sequência, por exemplo,
  • 11:57 - 11:59
    num fluxo
    de processamento.
  • 12:00 - 12:03
    Nós temos uma visão
    de uma arquitetura moderna
  • 12:03 - 12:06
    porque muita coisa foi
    criada na última década.
  • 12:06 - 12:08
    Então, as soluções que resolvem
    isso em grande escala
  • 12:08 - 12:12
    na computação distribuída
    foram criadas recentemente
  • 12:12 - 12:15
    e estão evoluindo cada vez mais
    para trabalhar real time.
  • 12:15 - 12:18
    E nós temos aqui, por exemplo,
    no centro dessa visão,
  • 12:18 - 12:21
    desse design,
    um broker,
  • 12:21 - 12:26
    e esse broker tem esse armazenamento
    de eventos que escala.
  • 12:26 - 12:30
    No caso aqui, se nós olharmos
    o principal, que é o Kafka,
  • 12:30 - 12:34
    escala com um número
    de acessos muito alto
  • 12:34 - 12:38
    tanto para fazer a escrita
    quanto para fazer a leitura.
  • 12:38 - 12:41
    Nós podemos fazer aqui
    um número de TPS
  • 12:41 - 12:45
    maior que qualquer outro tipo
    de broker de mensagem, por exemplo,
  • 12:45 - 12:47
    que nós
    tínhamos antes.
  • 12:47 - 12:50
    Então, uma característica
    é essa alta escalabilidade.
  • 12:50 - 12:52
    E, com isso, nós
    podemos atender
  • 12:52 - 12:56
    soluções de Big Data
    e conectar o legado,
  • 12:56 - 13:00
    que já cria eventos de forma
    contínua através de SOA,
  • 13:00 - 13:02
    através de algumas
    arquiteturas,
  • 13:02 - 13:06
    para resolver esse problema
    de uma forma integrada.
  • 13:06 - 13:10
    Então, o pipeline tanto
    para a parte operacional,
  • 13:10 - 13:12
    transacional,
    quanto analítico,
  • 13:12 - 13:17
    vai seguir para esse padrão
    de arquitetura moderna com real time.
  • 13:17 - 13:22
    E o Kafka, que é um exemplo,
    fica no meio dessa camada
  • 13:22 - 13:28
    servindo como um organizador
    de tópicos desses eventos,
  • 13:28 - 13:31
    e, com isso, nós conseguimos
    atender várias aplicações
  • 13:31 - 13:32
    e vários
    casos de uso,
  • 13:32 - 13:37
    com o producer e o consumer
    sendo integrados nesse ambiente.
  • 13:37 - 13:40
    Então, é uma aplicação
    amplamente usada.
  • 13:40 - 13:43
    Praticamente todas as grandes
    organizações e as startups
  • 13:43 - 13:47
    estão evoluindo usando
    esse tipo de solução.
  • 13:47 - 13:53
    O Apache Spark, que é o principal componente
    hoje de computação distribuída,
  • 13:53 - 13:57
    também tem como
    uma das principais características
  • 13:57 - 14:00
    o processamento de streaming,
    além de outros processamentos.
  • 14:00 - 14:03
    Apesar de ele ter sido construído
    para trabalhar em batch,
  • 14:03 - 14:06
    ele tem esse
    componente streaming,
  • 14:06 - 14:10
    que é um dos mais usados
    e o mais difundido na comunidade,
  • 14:10 - 14:14
    tanto nos movimentos open sources
    quanto na criação de soluções
  • 14:14 - 14:16
    para Big Data
    Analytics.
  • 14:16 - 14:18
    A engenharia de dados
    também tem usado bastante
  • 14:18 - 14:22
    para fazer transformação
    em processamento distribuído.
  • 14:22 - 14:26
    Então, com certeza ele é hoje
    um dos principais componentes
  • 14:26 - 14:29
    da computação distribuída
    baseada em streaming.
  • 14:29 - 14:34
    O Apache Flink tem uma história
    que também é recente.
  • 14:34 - 14:37
    Ele foi criado quase junto
    com o Spark na linha do tempo,
  • 14:37 - 14:40
    2009, 2010.
  • 14:40 - 14:45
    Ele foi criado na Alemanha e evoluiu
    com a comunidade open source em 2014.
  • 14:45 - 14:50
    Virou um projeto do Apache
    junto com o Spark.
  • 14:50 - 14:52
    E a principal diferença
    é que o Apache Flink
  • 14:52 - 14:55
    foi construído para ser
    um processamento streaming,
  • 14:55 - 14:58
    diferentemente do Spark,
    que nasceu batch,
  • 14:58 - 15:01
    e o streaming e o Spark
    trabalham com microbatch.
  • 15:01 - 15:05
    O Flink é o mais
    nativo possível
  • 15:05 - 15:08
    para fazer esse processamento
    real time num padrão streaming.
  • 15:08 - 15:10
    Então, tem algumas
    particularidades.
  • 15:10 - 15:12
    Ele também não é
    tão difundido.
  • 15:12 - 15:16
    Apesar de ser bastante usado,
    ele tem uma aplicabilidade menor
  • 15:16 - 15:20
    comparado com o Spark, porque o Spark
    tem muitas outras funcionalidades
  • 15:20 - 15:22
    além de um processamento
    streaming.
  • 15:22 - 15:26
    Então, também é considerado
    um dos principais componentes
  • 15:26 - 15:30
    a serem avaliados por essa
    computação distribuída.
  • 15:30 - 15:33
    Então, nós temos um futuro
    que vai depender muito
  • 15:33 - 15:35
    dessa computação
    real time.
  • 15:35 - 15:37
    Isto está
    só começando.
  • 15:37 - 15:42
    Cada vez mais as soluções vão ser
    criadas e orientadas a eventos,
  • 15:42 - 15:47
    e esses eventos impulsionados
    pela tomada de decisão de negócio,
  • 15:47 - 15:51
    que é acelerada pela
    velocidade natural
  • 15:51 - 15:56
    com que o mundo
    tem sido desafiado.
  • 15:56 - 15:59
    Nós dependemos dessa
    evolução computacional,
  • 15:59 - 16:00
    que não ficou
    para trás.
  • 16:00 - 16:04
    Na verdade, a tendência
    é que a computação
  • 16:04 - 16:07
    vai direcionar
    a velocidade do mundo.
  • 16:07 - 16:10
    Assim como está acontecendo,
    nós vemos a computação quântica
  • 16:10 - 16:13
    e muita coisa
    que vem pela frente,
  • 16:13 - 16:15
    e nós só estamos
    começando
  • 16:15 - 16:17
    toda essa jornada
    para o Fast Data.
Title:
EBD CAP03 VA04 FAST DATA COM STREAM PROCESSING
Video Language:
Portuguese, Brazilian
Duration:
16:22

Portuguese, Brazilian subtitles

Incomplete

Revisions