stream based architecture

75
@_tommichiels_ #Devoxx #Streambased Stream Based Architecture punching and crunching [email protected]

Upload: tom-michiels

Post on 12-Apr-2017

609 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Stream Based Architecture punching and crunching

[email protected]

Page 2: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

During this talk I will try to convince you that we need to evolve to stream based architectures

Page 3: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Setting the stageOur actors

Punchers

Crunchers

Page 4: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Birth, First Encounter, The LoveStory

Page 5: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Crunchers life

Page 6: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

1950 1970 1990

Machine Code

Imperative

Crunchers life

Declarative

Page 7: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Page 8: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Punchers live

Page 9: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Data models

Flat

Hierarchical

Network

RelationalNavigational

Page 10: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Normalisation

Isolate data so that additions, deletions, and modifications can be made in just

one table and then propagated through the rest of the database using the defined foreign keys

Page 11: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

1950 1970 1990

Flat

Navigational

Punchers life

Relational

Page 12: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

The marriage, thx Edgar

Page 13: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Normalisation

Isolate data so that additions, deletions, and modifications can be made in just

one table and then propagated through the rest of the database using the defined foreign keys

Wedding vows

SQL +

Page 14: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Crunch(calculate)

Punch(store)

Logic

One happy family

Page 15: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

And then it started to get complicate

Perf

orm

ance

Complexity

Page 16: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

PerformanceConcurrent users/operations

Page 17: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Performance

Page 18: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Complexity(Re)act to changing world

Page 19: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

ComplexityHistorical reasons

Page 20: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

ComplexityLegacy

Page 21: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Puncher problems

Perf

orm

ance

• Persistence / IO ?•Model ?

Page 22: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Cruncher problems

Complexity

•Abstractions ?•Reuse?

Page 23: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Crunch(calculate)

Punch(store)

Logic

Scaling up(centralised)

Page 24: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Crunch(calculate)

Punch(store)

Logic

Scaling out(distributed)

Page 25: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Crunch(calculate)

Punch(store)

Logic

Scaling out(distributed)

Page 26: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Propagating Through

•File•DB•RPC•Message

Page 27: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Centralised vs distributed

Perf

orm

ance

Complexity

Distributed

Centralised

Page 28: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Layers

Crunch(calculate)

Punch(store)

Logic

Punch(store)

UI

Page 29: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

2 vs N tier

Perf

orm

ance

Complexity

Distributed

Centralised

2 tier N tier

Page 30: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

DataDriven

Perf

orm

ance

Complexity

Distributed

Centralised

DataDriven

2 tier N tier

Page 31: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Query

OLTP

ETLExtract

Transform

Load

OLAP

Page 32: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Abstraction

Reuse

Crunchers midlife crisis

Page 33: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

1950 1970 1990

Machine Code

ProceduralObject Oriented

Crunchers midlife crisis

Page 34: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

AppDriven

Perf

orm

ance

Complexity

Distributed

Centralised

AppDriven

2 tier N tier

Page 35: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

ORM Hell

Impedance Mismatch

Page 36: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Monolith Hell

Page 37: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Spaghetti integration

Page 38: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Service Oriented

Perf

orm

ance

Complexity

Distributed

CentralisedService Oriented

2 tier N tier

Page 39: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Satellite Services

client

Service interface

Data aggregates

O/R mapping

RDBMS

Page 40: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Punchers midlife crisis

©

Page 41: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Punchers midlife crisis

Page 42: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Punchers midlife crisis

•Partitions•Eventual Consistence

First Class Citizens

Page 43: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

MicroServices

client

NOSql

Service

Page 44: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

What about reports?

Page 45: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

DataLake

Page 46: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Distributed Data Driven

Perf

orm

ance

Complexity

Distributed

Centralised

2 tier N tier

Distributed DataDriven

Page 47: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Distributed Data Driven

Perf

orm

ance

Complexity

Distributed

Centralised

2 tier N tier

Distributed DataDriven

DataDrivenAppDriven

Service Oriented

Page 48: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

How did we end up here!!!!

Page 49: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

How did we end up here!!!!

Shared DB

Messaging

RPC

File

Page 50: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

The Divorce(ETL)

Page 51: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Remember our wedding vows

Isolate data so that additions, deletions, and modifications can be made in just

one table and then propagated through the rest of the database using the defined foreign keys

Page 52: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Get us out of this mess!

Page 53: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Immutable

an immutable object is an object whose state cannot be modified after it is created

10

Page 54: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Stream

10 10 - 10 10 8 vs

is a (ordered) sequence of immutable objects

Page 55: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Stream Computing

10 + 10+ (- 10) = 10

data

state is derivedintent

Page 56: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Back to Maths

•Associativity•Commutative

Page 57: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Back to Maths

10 + 10+ (- 10) = 10

Type

Binary Operation

Page 58: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Back to Maths

A ∪ B

Type

Binary Operation

Page 59: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Birth of a commutative monoid

(10 + 10)+ (- 10) = ((-10) +10) + 10

Calculation can be partitioned

How we combine intermediate results is not important

Page 60: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Programming with solid base in maths

Page 61: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Programming with solid base in maths

Page 62: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Examples of streams

•Logfiles•Journals/Ledgers•Atom Feeds

Page 63: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Propagating New Style

•Make stream available•Consumers keep track of consumed events

•Producers Schema on Write

Page 64: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Wedding vows renewed

Propagate immutable events by using streams and use stream crunching as local as possible.

Page 65: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Wedding vows renewed

Not Only ETL

Page 66: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Streams on Micro(Service) Level

•EventSourcing•CQRS

Page 67: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Streams on Micro Level

Page 68: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Streams on Macro level

Page 69: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Streams on Macro level

kappa architecture

Page 70: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Streams on Macro level

Page 71: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Reports vs Dashboards

Page 72: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Fast Data

Page 73: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

• BloomFilter

• HyperLogLog

• Count-MinSketch

• MinHash

Stream processing

Page 74: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Smack Stack https://github.com/killrweather/killrweather

Page 75: Stream Based Architecture

@_tommichiels_#Devoxx #Streambased

Happily Ever After