SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
Stream Processing
Grupo de Arquitetura
ThoughtWorks – Porto Alegre – 2017
Otávio Carvalho
2
Por que é necessário?
3
Dados em tempo real
4
Big Data – Ciclo de tendências
5
Por que
Stream Processing?
6
Batch Processing
● Batch Processing no sentido de grandes operações que
ocorrem sobre conjuntos de dados de forma não-interativa
● Processamento de folha de pagamento
MapReduce
7
Stream Processing
● Stream Processing no sentido de pipelines de dados para o
processamento de fluxos de dados contínuos
● Processamento dos Trending Topics do Twitter
13:00 14:008:00 9:00 10:00 11:00 12:00 Processing Time
8
Investimento em P&D
9
Arquitetura Lambda
● Duas camadas
● Batch layer
● Speed layer
10
Arquitetura Kappa
● Camada única
● Speed layer
11
Quais as principais
implementações?
12
Principais implementações
● Apache Foundation
● Apache Beam (2016)
● Apache NiFi (2015)
● Apache Apex (2016)
● Google
● Flume (2010)
● MillWheel (2013)
● Dataflow (2014)
● LinkedIn
● Apache Samza (2011)
● Kafka Streams (2016)
● TU Berlin
● Apache Flink (2010)
● Twitter
● Twitter Storm (2011)
● Twitter Heron (2016)
● Berkeley
● Spark Streaming (2013)
13
Como isso surgiu?
14
Como isso surgiu?
● Dataflow relacional
● Surge como uma evolução sobre os Bancos de Dados
Relacionais
● Solução de problemas específicos
● Operações financeiras
● Monitoramento de logística
● Monitoramento de fábricas
15
Explosão de abordagens relacionada
Devido às necessidades de processamento de larga escala das
empresas de internet (e.g. Google, LinkedIn, Twitter)
● Complex Event Processing (CEP)
● Event Sourcing
● Baseado nos conceitos de DDD do ambiente corporativo
● Reactive programming
● Reactive manifesto
“[…] queremos sistemas que sejam responsivos,
resilientes, elásticos e orientados a mensagens. Nós
chamamos esses sistemas de Sistemas Reativos”
16
Como realmente
funciona?
17
Como realmente funciona?
● Conceitos fundamentais
● Como processar a entrada/saída de dados?
● Data Source / Data Sink
● Como realizar transformações sobre os dados?
● PEs (Elementos processadores)
● Como representar os passos do processamento?
● DAG (Grafo direcionado acíclico)
● Como particionar o processamento? Janelas?
● Windowing
● Event time
● Processing time
18
Data Source / Data Sink
19
Data Source/Sink – Apache Kafka
20
Processing Elements - PEs
● Processamento encadeado
● Grafo Direcionado Acíclico de PEs
21
Processing Elements - PEs
● Transformações sobre os dados
Por elemento Agregação Composição
22
PEs – Apache Storm
23
Windowing
13:00 14:008:00 9:00 10:00 11:00 12:00 Processing Time
24
Windowing
25
Windowing – Event/Processing
● Event time
● Momento em que o evento foi gerado
● Processing time
● Momento do processamento efetivo do evento
26
Windowing – Event/Processing
Event Time
Processing
Time
11:0010:00 15:0014:0013:0012:00
11:0010:00 15:0014:0013:0012:00
Input
Output
Input
Output
27
Windowing – Tipos de Janelas
28
Windowing – Triggers/Watermarks
29
Como programamos?
30
Como programamos?
● Apache Beam
● Combinação de Batch e strEAM
● Projeto da Apache criado em Janeiro de 2016
● Esforço para unificar batch processing e stream processing
● API funcional suportada por diversos projetos:
● Apache Spark
● Apache Flink
● Google Dataflow
31
Resultados de um time por hora
gameEvents.
[… input …]
.apply(“LeaderBoardTeamFixedWindows”, Window
.<GameActionInfo>into(FixedWindows.of(
Duration.standardMinutes(Durations.minutes(60))))
.triggering(AfterWatermark.pastEndOfWindow()
.withEarlyFirings(
AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Durations.minutes(5)))
.withLateFirings(
AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Durations.minutes(10)))
.withAllowedLateness(
Duration.standardMinutes(120))
.accumulatingFiringPanes())
.apply(“ExtractTeamScore”,
new ExtractAndSumScore(“team”))
[… output …]
32
Como é usado em
produção?
33
Netflix
● Múltiplas ferramentas, seguindo o mantra de “Freedom and
Responsability” da empresa
● Utilizado massivamente para análise de dados, em múltiplos
casos de uso: Visualização de vídeos, Atividades na UI, Logs
de erros, dentre outros.
● Inicialmente, agrupamento de dados e jobs MapReduce
através do Apache Chukwa
● Métricas operacionais (telemetria) através do Netflix Atlas
(Time series database)
● Insights em real-time e exploração através do Netflix Mantis
● Mais recentemente, Keystone SPaaS (Stream Processing as a
service): Apache Samza / Apache Flink
34
35
36
37
38
39
Uber
● O Uber utiliza fortemente Stream Processing para gerar
visualizações e insights sobre seus dados
● Eles utilizam ferramentas open source conhecidas como
Apache Samza e Apache Spark
● Mais recentemente, foi criado o projeto AthenaX, que utiliza
a engine do Apache Flink para criar uma solução integrada
de Stream Processing que provê uma interface SQL-like para
as consultas
40
Uber – Real-time Analytics
41
Uber - Real-time Analytics
42
Uber - AthenaX
● 70% das consultas são feitas utilizando a interface SQL-like
● Agrupamento de ordens feitas para o Restaurant Manager
do Uber EATS em janelas fixas nos últimos 15 minutos
43
Uber - AthenaX
● Ganhos potenciais dos restaurantes no Restaurant
Manager do Uber EATS agrupados em janelas deslizantes
pelos últimos 15 minutos
44
45
Spotify
● Trabalham com arquitetura lambda, inicialmente com
Apache Storm (Stream) e Hadoop/Hive (Batch) e, após terem
movido a infraestrutura para o Google Cloud em 2014,
utilizam Dataflow (Stream) e BigQuery (Batch).
● Utilizavam Apache Kafka como mensageria e moveram-se
para o Pulsar (Google Cloud Pub/Sub)
● Utilizam Stream Processing para recomendação, detecção
de bugs através de análise de logs, targeting de ads, dentre
outros.
46
47
48
49
Zalando
● Uma das maiores empresas de retail da Europa, utiliza
Apache Flink para monitoramento de processos de negócio
● Monitoramento de eventos de ordem de compra
(ORDER_CREATED), onde as diversas partes
(PARCEL_SHIPPED) devem ser entregues respeitando um
certo threshold (e.g. 7 dias), caso contrário deve ser
disparado um evento de cancelamento
(THRESHOLD_EXCEEDED)
50
51
O que podemos
esperar para o futuro?
52
Importância & Desafios
● Importância
● Resolve diversos dos problemas no processamento de
dados de diversas tecnologias emergentes, tais como:
● Internet das coisas (IoT)
● Aplicações móveis em larga escala
● Desafios
● Como unificar as diferentes APIs/Vendors
● Como integrar diferentes abordagens de Stream
Processing
● Confiabilidade / Semântica / Tolerância a falhas
53
Tópicos para Discussão
● Sempre precisamos de batch jobs em nossos sistemas?
Quando utilizar uma arquitetura lambda ou uma arquitetura
kappa? Quais os prós-e-contras?
● Reactive Programming, Event Storming e Stream Processing,
como se relacionam?
● Realmente precisamos de frameworks de Stream
Processing? Quão difícil é construir sistemas reativos
customizados para os nossos clientes?
● Qual a diferença das frameworks de Stream Processing e
Time-series databases? Em quais casos de uso devemos
optar por um ou outro?
Obrigado!
Para mais perguntas e sugestões:
Otávio Carvalho
ocarvalh@thoughtworks.com
@otaviocarvalho
ThoughtWorks Brazil – Porto Alegre Office
55
Links & Referências
● https://dataintensive.net/
● http://shop.oreilly.com/product/0636920033448.do
● https://www.oreilly.com/ideas/questioning-the-lambda-architecture
● https://cloud.google.com/blog/big-data/2017/08/the-canonical-new-book-about-stream-proce
ssing
● https://cloud.google.com/blog/big-data/2017/05/after-lambda-exactly-once-processing-in-goog
le-cloud-dataflow-part-1
● https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101
● https://medium.com/netflix-techblog/evolution-of-the-netflix-data-pipeline-da246ca36905
● https://www.infoq.com/presentations/uber-stream-processing
● https://eng.uber.com/athenax/
● https://www.infoq.com/news/2016/10/zalando-stream-processing-flink
● https://labs.spotify.com/2016/03/10/spotifys-event-delivery-the-road-to-the-cloud-part-iii/

Mais conteúdo relacionado

Semelhante a Stream Processing: Visão Geral e Casos de Uso

Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataAmbiente Livre
 
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data tdc-globalcode
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...tdc-globalcode
 
Estaleiro o uso de kubernetes no serpro
Estaleiro   o uso de kubernetes no serproEstaleiro   o uso de kubernetes no serpro
Estaleiro o uso de kubernetes no serproRicardo Katz
 
Aplicações Web com Python e Google App Engine
Aplicações Web com Python e Google App EngineAplicações Web com Python e Google App Engine
Aplicações Web com Python e Google App EngineRodrigo Amaral
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningFelipe Santos
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big DataDeep Tech Brasil
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionaisRoberto Oliveira
 
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemAnálise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemOtávio Carvalho
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?Fabio Janiszevski
 
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...Éberli Cabistani Riella
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Ambiente Livre
 
TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...
TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...
TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...tdc-globalcode
 
Processamento de Eventos Complexos com Spark
Processamento de Eventos Complexos com SparkProcessamento de Eventos Complexos com Spark
Processamento de Eventos Complexos com SparkLeandro Mendes Ferreira
 
Construção da Plataforma de dados Autônoma e em Escala
Construção da Plataforma de dados Autônoma e em EscalaConstrução da Plataforma de dados Autônoma e em Escala
Construção da Plataforma de dados Autônoma e em Escalarkwseijuurou
 
CurriculumVitae_VictorXavier
CurriculumVitae_VictorXavierCurriculumVitae_VictorXavier
CurriculumVitae_VictorXavierVictor Xavier
 

Semelhante a Stream Processing: Visão Geral e Casos de Uso (20)

Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big Data
 
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
TDC2018SP | Trilha BigData - Apache Flink a Quarta Geracao do Big Data
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
 
Estaleiro o uso de kubernetes no serpro
Estaleiro   o uso de kubernetes no serproEstaleiro   o uso de kubernetes no serpro
Estaleiro o uso de kubernetes no serpro
 
Aplicações Web com Python e Google App Engine
Aplicações Web com Python e Google App EngineAplicações Web com Python e Google App Engine
Aplicações Web com Python e Google App Engine
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine Learning
 
Spring boot
Spring bootSpring boot
Spring boot
 
RHQ 4 Gerenciamento efetivo de servidores JBoss
RHQ 4 Gerenciamento efetivo de servidores JBossRHQ 4 Gerenciamento efetivo de servidores JBoss
RHQ 4 Gerenciamento efetivo de servidores JBoss
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemAnálise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre
 
TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...
TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...
TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...
 
Processamento de Eventos Complexos com Spark
Processamento de Eventos Complexos com SparkProcessamento de Eventos Complexos com Spark
Processamento de Eventos Complexos com Spark
 
Sql Server
Sql ServerSql Server
Sql Server
 
Construção da Plataforma de dados Autônoma e em Escala
Construção da Plataforma de dados Autônoma e em EscalaConstrução da Plataforma de dados Autônoma e em Escala
Construção da Plataforma de dados Autônoma e em Escala
 
CurriculumVitae_VictorXavier
CurriculumVitae_VictorXavierCurriculumVitae_VictorXavier
CurriculumVitae_VictorXavier
 

Mais de Otávio Carvalho

Non-Kafkaesque Apache Kafka - Yottabyte 2018
Non-Kafkaesque Apache Kafka - Yottabyte 2018Non-Kafkaesque Apache Kafka - Yottabyte 2018
Non-Kafkaesque Apache Kafka - Yottabyte 2018Otávio Carvalho
 
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...Otávio Carvalho
 
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...Otávio Carvalho
 
Apache Kafka - Free Friday
Apache Kafka - Free FridayApache Kafka - Free Friday
Apache Kafka - Free FridayOtávio Carvalho
 
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...Otávio Carvalho
 
A Survey of the State-of-the-art in Event Processing
A Survey of the State-of-the-art in Event ProcessingA Survey of the State-of-the-art in Event Processing
A Survey of the State-of-the-art in Event ProcessingOtávio Carvalho
 
Utilização de traços de execução para migração de aplicações para a nuvem
Utilização de traços de execução para migração de aplicações para a nuvemUtilização de traços de execução para migração de aplicações para a nuvem
Utilização de traços de execução para migração de aplicações para a nuvemOtávio Carvalho
 

Mais de Otávio Carvalho (7)

Non-Kafkaesque Apache Kafka - Yottabyte 2018
Non-Kafkaesque Apache Kafka - Yottabyte 2018Non-Kafkaesque Apache Kafka - Yottabyte 2018
Non-Kafkaesque Apache Kafka - Yottabyte 2018
 
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
 
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
 
Apache Kafka - Free Friday
Apache Kafka - Free FridayApache Kafka - Free Friday
Apache Kafka - Free Friday
 
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
 
A Survey of the State-of-the-art in Event Processing
A Survey of the State-of-the-art in Event ProcessingA Survey of the State-of-the-art in Event Processing
A Survey of the State-of-the-art in Event Processing
 
Utilização de traços de execução para migração de aplicações para a nuvem
Utilização de traços de execução para migração de aplicações para a nuvemUtilização de traços de execução para migração de aplicações para a nuvem
Utilização de traços de execução para migração de aplicações para a nuvem
 

Stream Processing: Visão Geral e Casos de Uso

  • 1. Stream Processing Grupo de Arquitetura ThoughtWorks – Porto Alegre – 2017 Otávio Carvalho
  • 2. 2 Por que é necessário?
  • 4. 4 Big Data – Ciclo de tendências
  • 6. 6 Batch Processing ● Batch Processing no sentido de grandes operações que ocorrem sobre conjuntos de dados de forma não-interativa ● Processamento de folha de pagamento MapReduce
  • 7. 7 Stream Processing ● Stream Processing no sentido de pipelines de dados para o processamento de fluxos de dados contínuos ● Processamento dos Trending Topics do Twitter 13:00 14:008:00 9:00 10:00 11:00 12:00 Processing Time
  • 9. 9 Arquitetura Lambda ● Duas camadas ● Batch layer ● Speed layer
  • 10. 10 Arquitetura Kappa ● Camada única ● Speed layer
  • 12. 12 Principais implementações ● Apache Foundation ● Apache Beam (2016) ● Apache NiFi (2015) ● Apache Apex (2016) ● Google ● Flume (2010) ● MillWheel (2013) ● Dataflow (2014) ● LinkedIn ● Apache Samza (2011) ● Kafka Streams (2016) ● TU Berlin ● Apache Flink (2010) ● Twitter ● Twitter Storm (2011) ● Twitter Heron (2016) ● Berkeley ● Spark Streaming (2013)
  • 14. 14 Como isso surgiu? ● Dataflow relacional ● Surge como uma evolução sobre os Bancos de Dados Relacionais ● Solução de problemas específicos ● Operações financeiras ● Monitoramento de logística ● Monitoramento de fábricas
  • 15. 15 Explosão de abordagens relacionada Devido às necessidades de processamento de larga escala das empresas de internet (e.g. Google, LinkedIn, Twitter) ● Complex Event Processing (CEP) ● Event Sourcing ● Baseado nos conceitos de DDD do ambiente corporativo ● Reactive programming ● Reactive manifesto “[…] queremos sistemas que sejam responsivos, resilientes, elásticos e orientados a mensagens. Nós chamamos esses sistemas de Sistemas Reativos”
  • 17. 17 Como realmente funciona? ● Conceitos fundamentais ● Como processar a entrada/saída de dados? ● Data Source / Data Sink ● Como realizar transformações sobre os dados? ● PEs (Elementos processadores) ● Como representar os passos do processamento? ● DAG (Grafo direcionado acíclico) ● Como particionar o processamento? Janelas? ● Windowing ● Event time ● Processing time
  • 18. 18 Data Source / Data Sink
  • 19. 19 Data Source/Sink – Apache Kafka
  • 20. 20 Processing Elements - PEs ● Processamento encadeado ● Grafo Direcionado Acíclico de PEs
  • 21. 21 Processing Elements - PEs ● Transformações sobre os dados Por elemento Agregação Composição
  • 23. 23 Windowing 13:00 14:008:00 9:00 10:00 11:00 12:00 Processing Time
  • 25. 25 Windowing – Event/Processing ● Event time ● Momento em que o evento foi gerado ● Processing time ● Momento do processamento efetivo do evento
  • 26. 26 Windowing – Event/Processing Event Time Processing Time 11:0010:00 15:0014:0013:0012:00 11:0010:00 15:0014:0013:0012:00 Input Output Input Output
  • 30. 30 Como programamos? ● Apache Beam ● Combinação de Batch e strEAM ● Projeto da Apache criado em Janeiro de 2016 ● Esforço para unificar batch processing e stream processing ● API funcional suportada por diversos projetos: ● Apache Spark ● Apache Flink ● Google Dataflow
  • 31. 31 Resultados de um time por hora gameEvents. [… input …] .apply(“LeaderBoardTeamFixedWindows”, Window .<GameActionInfo>into(FixedWindows.of( Duration.standardMinutes(Durations.minutes(60)))) .triggering(AfterWatermark.pastEndOfWindow() .withEarlyFirings( AfterProcessingTime.pastFirstElementInPane() .plusDelayOf(Durations.minutes(5))) .withLateFirings( AfterProcessingTime.pastFirstElementInPane() .plusDelayOf(Durations.minutes(10))) .withAllowedLateness( Duration.standardMinutes(120)) .accumulatingFiringPanes()) .apply(“ExtractTeamScore”, new ExtractAndSumScore(“team”)) [… output …]
  • 32. 32 Como é usado em produção?
  • 33. 33 Netflix ● Múltiplas ferramentas, seguindo o mantra de “Freedom and Responsability” da empresa ● Utilizado massivamente para análise de dados, em múltiplos casos de uso: Visualização de vídeos, Atividades na UI, Logs de erros, dentre outros. ● Inicialmente, agrupamento de dados e jobs MapReduce através do Apache Chukwa ● Métricas operacionais (telemetria) através do Netflix Atlas (Time series database) ● Insights em real-time e exploração através do Netflix Mantis ● Mais recentemente, Keystone SPaaS (Stream Processing as a service): Apache Samza / Apache Flink
  • 34. 34
  • 35. 35
  • 36. 36
  • 37. 37
  • 38. 38
  • 39. 39 Uber ● O Uber utiliza fortemente Stream Processing para gerar visualizações e insights sobre seus dados ● Eles utilizam ferramentas open source conhecidas como Apache Samza e Apache Spark ● Mais recentemente, foi criado o projeto AthenaX, que utiliza a engine do Apache Flink para criar uma solução integrada de Stream Processing que provê uma interface SQL-like para as consultas
  • 41. 41 Uber - Real-time Analytics
  • 42. 42 Uber - AthenaX ● 70% das consultas são feitas utilizando a interface SQL-like ● Agrupamento de ordens feitas para o Restaurant Manager do Uber EATS em janelas fixas nos últimos 15 minutos
  • 43. 43 Uber - AthenaX ● Ganhos potenciais dos restaurantes no Restaurant Manager do Uber EATS agrupados em janelas deslizantes pelos últimos 15 minutos
  • 44. 44
  • 45. 45 Spotify ● Trabalham com arquitetura lambda, inicialmente com Apache Storm (Stream) e Hadoop/Hive (Batch) e, após terem movido a infraestrutura para o Google Cloud em 2014, utilizam Dataflow (Stream) e BigQuery (Batch). ● Utilizavam Apache Kafka como mensageria e moveram-se para o Pulsar (Google Cloud Pub/Sub) ● Utilizam Stream Processing para recomendação, detecção de bugs através de análise de logs, targeting de ads, dentre outros.
  • 46. 46
  • 47. 47
  • 48. 48
  • 49. 49 Zalando ● Uma das maiores empresas de retail da Europa, utiliza Apache Flink para monitoramento de processos de negócio ● Monitoramento de eventos de ordem de compra (ORDER_CREATED), onde as diversas partes (PARCEL_SHIPPED) devem ser entregues respeitando um certo threshold (e.g. 7 dias), caso contrário deve ser disparado um evento de cancelamento (THRESHOLD_EXCEEDED)
  • 50. 50
  • 51. 51 O que podemos esperar para o futuro?
  • 52. 52 Importância & Desafios ● Importância ● Resolve diversos dos problemas no processamento de dados de diversas tecnologias emergentes, tais como: ● Internet das coisas (IoT) ● Aplicações móveis em larga escala ● Desafios ● Como unificar as diferentes APIs/Vendors ● Como integrar diferentes abordagens de Stream Processing ● Confiabilidade / Semântica / Tolerância a falhas
  • 53. 53 Tópicos para Discussão ● Sempre precisamos de batch jobs em nossos sistemas? Quando utilizar uma arquitetura lambda ou uma arquitetura kappa? Quais os prós-e-contras? ● Reactive Programming, Event Storming e Stream Processing, como se relacionam? ● Realmente precisamos de frameworks de Stream Processing? Quão difícil é construir sistemas reativos customizados para os nossos clientes? ● Qual a diferença das frameworks de Stream Processing e Time-series databases? Em quais casos de uso devemos optar por um ou outro?
  • 54. Obrigado! Para mais perguntas e sugestões: Otávio Carvalho ocarvalh@thoughtworks.com @otaviocarvalho ThoughtWorks Brazil – Porto Alegre Office
  • 55. 55 Links & Referências ● https://dataintensive.net/ ● http://shop.oreilly.com/product/0636920033448.do ● https://www.oreilly.com/ideas/questioning-the-lambda-architecture ● https://cloud.google.com/blog/big-data/2017/08/the-canonical-new-book-about-stream-proce ssing ● https://cloud.google.com/blog/big-data/2017/05/after-lambda-exactly-once-processing-in-goog le-cloud-dataflow-part-1 ● https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101 ● https://medium.com/netflix-techblog/evolution-of-the-netflix-data-pipeline-da246ca36905 ● https://www.infoq.com/presentations/uber-stream-processing ● https://eng.uber.com/athenax/ ● https://www.infoq.com/news/2016/10/zalando-stream-processing-flink ● https://labs.spotify.com/2016/03/10/spotifys-event-delivery-the-road-to-the-cloud-part-iii/