strata software architecture ny: the data dichotomy
TRANSCRIPT
![Page 1: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/1.jpg)
The Data Dichotomy: Rethinking Data and Services
with Streams Ben Stopford @benstopford
![Page 2: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/2.jpg)
![Page 3: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/3.jpg)
What are microservices really about?
![Page 4: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/4.jpg)
GUI
UI Service
Orders Service
Returns Service
Fulfilment Service
Payment Service
Stock Service
Splitting the Monolith? Single Process /Code base
/Deployment
Many Processes /Code bases
/Deployments
![Page 5: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/5.jpg)
Orders Service
Autonomy?
![Page 6: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/6.jpg)
Orders Service
Stock Service
Email Service
Fulfillment Service
Independently Deployable
Independently Deployable
Independently Deployable
Independently Deployable
![Page 7: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/7.jpg)
Independence is where services get
their value
![Page 8: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/8.jpg)
Allows Scaling
![Page 9: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/9.jpg)
Scaling in terms of people
What happens when we grow?
![Page 10: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/10.jpg)
Companies are inevitably a collection of applications They must work together to some degree
![Page 11: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/11.jpg)
Interconnection is an afterthought
FTP / Enterprise Messaging etc
![Page 12: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/12.jpg)
Internal World
External world
External world
External World
External world
Service Boundary
Services Force Us To Consider The External World
![Page 13: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/13.jpg)
Internal World
External world
External world
External World
External world
Service Boundary
External World is something we should Design For
![Page 14: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/14.jpg)
But this independence
comes at a cost $$$
![Page 15: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/15.jpg)
Orders Object
Statement Object getOpenOrders(),
Less Surface Area = Less Coupling
Encapsulate State
Encapsulate Functionality
Consider Two Objects in one address space
Encapsulation => Loose Coupling
![Page 16: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/16.jpg)
Change 1 Change 2
Redeploy
Singly-deployable apps are easy
![Page 17: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/17.jpg)
Orders Service Statement Service getOpenOrders(),
Independently Deployable Independently Deployable
Synchronized changes are painful
![Page 18: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/18.jpg)
Services work best where requirements are isolated in a single
bounded context
![Page 19: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/19.jpg)
Single Sign On Business Service authorise(),
It’s unlikely that a Business Service would need the internal SSO state / function to change
Single Sign On
![Page 20: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/20.jpg)
SSO has a tightly bounded context
![Page 21: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/21.jpg)
But business services are
different
![Page 22: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/22.jpg)
Catalog Authorisation
Most business services share the same core stream of facts.
Most services live in here
![Page 23: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/23.jpg)
The futures of business services
are far more tightly intertwined.
![Page 24: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/24.jpg)
We need encapsulation to hide internal state. Be loosely coupled.
But we need the freedom to slice & dice shared data like any other
dataset
![Page 25: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/25.jpg)
But data systems have little to do
with encapsulation
![Page 26: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/26.jpg)
Service Database
Data on inside
Data on outside
Data on inside
Data on outside
Interface hides data
Interface amplifies
data
Databases amplify the data they hold
![Page 27: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/27.jpg)
The data dichotomy Data systems are about exposing data.
Services are about hiding it.
![Page 28: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/28.jpg)
Service Database
Data on inside
Data on outside
Data on inside
Data on outside
Encapsulation protects us
against future change.
Databases provide ultimate flexibility for the
now
These approaches serve different goals
![Page 29: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/29.jpg)
This affects services in one of
two ways
![Page 30: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/30.jpg)
getOpenOrders( fulfilled=false,
deliveryLocation=CA, orderValue=100,
operator=GreatherThan)
Either (1) we constantly add to the interface, as datasets grow
![Page 31: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/31.jpg)
getOrder(Id)
getOrder(UserId)
getAllOpenOrders()
getAllOrdersUnfulfilled(Id)
getAllOrders()
(1) Services can end up looking like kookie home-grown databases
![Page 32: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/32.jpg)
...and DATA amplifies this “God Service”
problem
![Page 33: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/33.jpg)
(2) Give up and move whole datasets en masse
getAllOrders()
Data Copied Internally
![Page 34: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/34.jpg)
This leads to a different problem
![Page 35: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/35.jpg)
Data diverges over time
Orders Service
Stock Service
Email Service
Fulfill- ment Service
![Page 36: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/36.jpg)
The more mutable copies,
the more data will diverge over time
![Page 37: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/37.jpg)
Nice neat services
Service contract too
limiting
Can we change both services
together, easily? NO
Broaden Contract
Eek $$$
NO
YES
Is it a shared
Database?
Frack it! Just give me ALL the data
Data diverges. (many different
versions of the same facts) Lets encapsulate
Lets centralise to one copy
YES
Start here
Cycle of inadequacy:
![Page 38: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/38.jpg)
These forces compete in the systems we build
Divergence
Accessibility
Encapsulation
![Page 39: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/39.jpg)
Shared database
Service Interfaces
Better Accessibility
Better Independence
No perfect solution
![Page 40: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/40.jpg)
Is there a better way?
![Page 41: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/41.jpg)
Data on the Inside
Data on the Outside
Data on the Outside
Data on the Outside
Data on the Outside
Service Boundary
![Page 42: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/42.jpg)
Make data-on-the-outside a 1st class citizen
![Page 43: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/43.jpg)
Separate Reads & Writes with Immutable Streams
![Page 44: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/44.jpg)
Orders Service
Stock Service
Kafka
Fulfilment Service
UI Service
Fraud Service
Event Driven + CQRS + Stateful Stream Processing
Commands go to owning services
Queries are interpreted entirely inside in each
bounded context
![Page 45: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/45.jpg)
Event Driven + CQRS + Stateful Stream Processing
Orders
Service
Stock
Service
Orders
Fulfilment
Service
UI
Service
Fraud
Service
• Events form a central Shared Narrative
• Writes/Commands => Go to “owning” service
• Reads/Queries => Wholly owned by each Service
• Stream processing toolkit
![Page 46: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/46.jpg)
Kafka is a Streaming Platform
![Page 47: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/47.jpg)
Kafka: a Streaming Platform
The Log Connectors Connectors
Producer Consumer
Streaming Engine
![Page 48: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/48.jpg)
The Log
![Page 49: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/49.jpg)
Kafka is a type of messaging system
Writers Kafka Readers
Important Properties: • Petabytes of data • Scales out linearly • Built in fault tolerance • Log can be replayed
![Page 50: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/50.jpg)
Scaling becomes a concern of the broker, not the
service
![Page 51: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/51.jpg)
Services Naturally Load Balance
![Page 52: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/52.jpg)
This provides Fault Tolerance
![Page 53: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/53.jpg)
Reset to any point in the shared narrative
Rewind & Replay
![Page 54: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/54.jpg)
Compacted Log (retains only latest version)
Version 3
Version 2
Version 1
Version 2
Version 1
Version 5
Version 4
Version 3
Version 2
Version 1
![Page 55: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/55.jpg)
Service Backbone Scalable, Fault Tolerant, Concurrent, Strongly Ordered, Retentive
The Log Connectors Connectors
Producer Consumer
Streaming Engine
![Page 56: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/56.jpg)
A place to keep the data-on-the-outside as an immutable
narrative
![Page 57: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/57.jpg)
Now add Stream Processing
![Page 58: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/58.jpg)
Kafka’s Streaming API A general, embeddable streaming engine
The Log Connectors Connectors
Producer Consumer
Streaming Engine
![Page 59: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/59.jpg)
What is Stream Processing?
A machine for combining and processing streams of events
![Page 60: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/60.jpg)
Features: similar to database query engine
Join Filter Aggr- egate
View
Window
![Page 61: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/61.jpg)
Stateful Stream Processing adds Tables & Local State
stream
Compacted stream
Join
Stream Data
Stream-Tabular Data
Domain Logic
Tables /
Views
Kafka
Event Driven Service
![Page 62: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/62.jpg)
Avg(o.time – p.time) From orders, payment, user Group by user.region over 1 day window emitting every second
Stateful Stream Processing
Streams
Stream Processing Engine
Derived “Table”
Table Domain Logic
![Page 63: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/63.jpg)
Tools make it easy to join streams of events (or tables of data) from
different services
Email Service
Legacy App Orders Payments Stock
KSTREAMS
Kafka
![Page 64: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/64.jpg)
So we might join two event streams and create a local
store in our own Domain Model
Orders Service
Payment Events
Purchase Events
PurchasePayments
![Page 65: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/65.jpg)
Make the projections queryable
Orders Service
Kafka
Queryable State API
Context Boundary
![Page 66: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/66.jpg)
Blend the concepts of services communicating and services sharing state
customer orders
catalogue Pay-
ments
![Page 67: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/67.jpg)
Very different to sharing a database
customer orders
catalogue Pay-
ments
Services communicate and share data via the log
Slicing & Dicing is embedded in each bounded context
![Page 68: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/68.jpg)
But sometimes you have to move data
![Page 69: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/69.jpg)
Easy to drop out to an external database if needed
DB of choice
Kafka Connect
API Fraud Service
Context Boundary
![Page 70: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/70.jpg)
Oracle
Connector API & Open Source Ecosystem make this easier
The Log
Connector Connector
Producer Consumer
Streaming Engine
Cassandra
![Page 71: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/71.jpg)
WIRED Principals • Wimpy: Start simple, lightweight and fault tolerant.
• Immutable: Build a retentive, shared narrative.
• Reactive: Leverage Asynchronicity. Focus on the now.
• Evolutionary: Use only the data you need today.
• Decentralized: Receiver driven. Coordination avoiding. No
God services
![Page 72: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/72.jpg)
So…
![Page 73: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/73.jpg)
Architecture is really about designing for change
![Page 74: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/74.jpg)
The data dichotomy Data systems are about exposing data.
Services are about hiding it.
Remember:
![Page 75: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/75.jpg)
Shared data is a reality for most organisations
Catalog
![Page 76: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/76.jpg)
Embrace data that lives and flows between services
![Page 77: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/77.jpg)
Canonical Immutable Streams
Embed the ability to slice and dice into each bounded context
Distributed Log Event Driven
Service
![Page 78: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/78.jpg)
Shared database
Service Interfaces
Better Accessibility
Better Independence
Balance the Data Dichotomy
![Page 79: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/79.jpg)
Create a canonical shared narrative
![Page 80: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/80.jpg)
Use stream processing to handle data-on-the-
outside whilst prioritizing the NOW
![Page 81: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/81.jpg)
Event Driven Services
The Log (streams & tables)
Ingestion Services
Services with Polyglotic
persistence
Simple Services
Streaming Services
![Page 82: Strata Software Architecture NY: The Data Dichotomy](https://reader034.vdocument.in/reader034/viewer/2022052117/5a64b47d7f8b9ac21c8b49e9/html5/thumbnails/82.jpg)
Twitter: @benstopford
Blog of this talk at http://confluent.io/blog