Banks are innovating. The purpose of this innovation is to transform bank services into meaningful and frictionless customer experiences. A key element in order to achieve that ambitious goal is by providing well tailored and reactive APIs and provide them as the building blocks for greater and smoother customer journeys and experiences. For these API’s to work, internal processes have to evolve as well from batch processing to real time event processing.
In this talk, after providing a brief introduction of the streaming computing landscape, we describe a RESTful API called “Coral” meant to design and deploy customized and flexible data flows. The user can compose data flow for a number of data streaming goals such as on-the-fly data clustering and classifiers, streaming analytics, per-event predictive analysis , real time recommenders. Once the events are processed, Coral passes the resulting analysis as auctionable events for alerting, messaging or further processing to other systems. Coral is a flexible and generic event processing platform to transform streaming data into actionable events via a RESTful API. Those data flows are defined via the Web API by connecting together basic streaming processing elements named “coral actors”. The Coral framework manages those coral actors on a distributed and scalable architecture.
Streaming and real time data processing and analytics are the key elements to an improved customer experience. In this way, you can get the most targeted processing for your domain (marketing customization, personalized recommenders, fraud detection, real time security alerting, etc.). This streaming “data flow” model implies processing customers’ events as soon as they enter via web APIs. This approach borrows a lot from distributed “data flow” concepts developed for processor architectures back in the 80’s. The “Coral” streaming processing engine is generic and built on top of world class libraries such as Akka and Spark, and fully exposed via a RESTful web API.
6. "Pedalboard (995939579)-2" by Pedalboard_(995939579).jpg: Michael
Morel from Barcelona, Spainderivative work: Atlantictire (talk) -
Pedalboard_(995939579).jpg. Licensed under Creative Commons
Attribution 2.0 via Wikimedia Commons -
7. It’s all about the right “sound”
@natalinobusa | linkedin.com/in/natalinobusa
8. It’s all about the right “sound”
@natalinobusa | linkedin.com/in/natalinobusa
Read from
Twitter stream
Sentiment
Analytics
Push
recommendations
9. These resources
can be modeled via a web API !
@natalinobusa | linkedin.com/in/natalinobusa
10. It’s all about the right “sound”
@natalinobusa | linkedin.com/in/natalinobusa
11. It’s all about the right “sound”
@natalinobusa | linkedin.com/in/natalinobusa
Two sort of resources:
- devices
- waves
12. resource type #1: Actors
Trigger Emit
Params
State
@natalinobusa | linkedin.com/in/natalinobusa
13. resource type #1: Actors
Trigger Emit
Params
State
POST http://coral/api/actors
{
"type":"stats",
"params":{
"field": "amount"
},
"group":{
"by":"tag"
}
}
@natalinobusa | linkedin.com/in/natalinobusa
16. resource type #2: Data quants/events
Data
events
data resources:
● RESTful
● Ephemeral
● Form Free
● Json
@natalinobusa | linkedin.com/in/natalinobusa
17. resource type #2: Data quants/events
Data
events
POST http://coral/api/actors/23/in
{
"amount":23.45,
"user": 76232,
"city": "Berlin"
}
@natalinobusa | linkedin.com/in/natalinobusa
18. resource type #2: Data quants/events
Data
events
POST http://coral/api/actors/23/in
The “in” endpoint describes not the
single events but the stream as a
ever-changing RESTful resource.
@natalinobusa | linkedin.com/in/natalinobusa
19. Connecting to the world
@natalinobusa | linkedin.com/in/natalinobusa
20. How do RESTful Actors produce and
consume data?
@natalinobusa | linkedin.com/in/natalinobusa
Actor can connect as a
● Client
● Server
21. How do RESTful Actors produce and
consume data?
Actor can communicate as
● http req/resp
● (long) polling
● Server Sent Events
● Web Sockets
@natalinobusa | linkedin.com/in/natalinobusa
22. Some examples:
API: REST server
Actor: REST client
API
Old Skool
polling
@natalinobusa | linkedin.com/in/natalinobusa
23. How to get streaming? Some examples:
API: REST server
Actor: REST client
API
API: SSE Streaming Server
Actor: Streaming client
API
Old Skool
polling
Streaming
Server-Sent-Events
@natalinobusa | linkedin.com/in/natalinobusa
24. Some examples:
API: REST server
Actor: REST client
API
Client Client: Http client
Actor: REST server
API: SSE Streaming Server
Actor: Streaming client
API
Old Skool
polling
Streaming
Server-Sent-Events
IoT scenario’s
@natalinobusa | linkedin.com/in/natalinobusa
25. 10 yrs 5 yrs 1 yr 1 month 1 day 1hour 1m
time
population:events,transactions,
sessions,customers,etc
Customer
Journey
Analytics
Recent data
streaming analytics
historical big data
Positioning Streaming and Real-Time
@natalinobusa | linkedin.com/in/natalinobusa
Stream
ing
and
R
eat-Tim
e
26. Some words about the architecture:
@natalinobusa | linkedin.com/in/natalinobusa
Why stop at http?
Enable Kafka, and datastores connections too ...
27. The Coral model
is a hybrid streaming/batch architecture:
● in process computing (akka)
● in memory state persistence (cassandra)
● in memory analytics (spark)
Some words about the architecture:
@natalinobusa | linkedin.com/in/natalinobusa
28. The Product: Coral
● a web api to define/manage/run streaming data-flows
● configuration over programming
● open source and community managed
● it's event processing as a service!
@natalinobusa | linkedin.com/in/natalinobusa
29. Star us on github!
@natalinobusa | linkedin.com/in/natalinobusa
https://github.com/coral-streaming