SlideShare a Scribd company logo
Pragmatic CQRS
Pragmatic CQRS - Digital Xchange
Lucas Jellema, CTO & Architect at AMIS
Digital Xchange Bergisches Rheinland, May 2019
Lucas Jellema
Architect / Developer
1994 started in IT at Oracle
2002 joined AMIS
Currently CTO & Solution Architect
Pragmatic CQRS - Digital Xchange
BOL - CQRS
Pragmatic CQRS - Digital Xchange
Books Online - WebShop
Pragmatic CQRS - Digital Xchange
Products
Product updates
firewall
Data manipulation
Data Quality (enforcement)
<10K transactions
Batch jobs next to online
Speed is nice
Read only
On line
Speed is crucial
XHTML & JSON
> 5M visits
Webshop visits
- searches
- product details
- Orders
Pragmatic CQRS - Digital Xchange
Products
Products
Products
Webshop visits
- searches
- product details
- Orders
firewall
Data manipulation
Data Quality (enforcement)
<10K transactions
Batch jobs next to online
Speed is nice
Read only
On line
Speed is crucial
XHTML & JSON
> 1M visits
DMZ
Read only
JSON documents
Images
Text Search
Scale Horizontally
Stale but consistent
Products
Nightly generation
Product updates
What is different?
• DML != Query
• Duplication of Data (<> evil)
• Data in multiple physical locations
• ACID is not an absolute truth
• Eventual Consistency
(relaxed freshness)
• NoSQL – not everything is relational
• Data preprocessed, stored
and produced
for a special consumer
• TCO is not a given – and it matters
Pragmatic CQRS - Digital Xchange
Why?
• Performance
• Scalability
• Availability
• Development productivity
• Agility through decoupling
• Reduction in TCO
Pragmatic CQRS - Digital Xchange
Common mechanism for Duplicating Data to improve
performance, scalability and developer productivity
Pragmatic CQRS - Digital Xchange
Many Complex, Heavy
Queries: Complex
Joins, Expensive
Aggregations
Inserts, Updates
and the odd
Delete
Common mechanism for Duplicating Data to improve
performance, scalability and developer productivity
Pragmatic CQRS - Digital Xchange
Many Simple Cheap
Queries
Inserts, Updates
and the odd
Delete
Many Simple Cheap
Queries
Required and feasible
consistency: REFRESH
ON COMMIT
or scheduled refresh
Utility Company looking for Performance, Scalability and
Availability in their core data sets
Pragmatic CQRS - Digital Xchange
CRM
Meter Readings
batch
Invoicing
Billing
Marketing
Campaigns
Load on Core Systems &
effect on Performance
Availability Core Systems
Utility Company looking for Performance, Scalability and
Availability in their core data sets
Pragmatic CQRS - Digital Xchange
CRM
Meter Readings
Invoicing
Billing
Marketing
Campaigns
CRM
Cache DB
Meter
Readings
Cache DB
Utility Company looking for Performance, Scalability and
Availability in their core data sets
Pragmatic CQRS - Digital Xchange
CRM
Meter Readings
Invoicing
Billing
Marketing
Campaigns
CRM
Cache DB
Meter
Readings
Cache DB
Practical Challenges
• Publish all change events
from sources
• Event schema evolution
• Lag in Cache Databases
• “eventual consistency”
• Differences between sources
and cache databases
• Initial creation of Cache Databases
• Scale and event storm
• Business and Mission Critical availability
• Data Authorization
• Logic enforced in source (applications)
• GDPR
Pragmatic CQRS - Digital Xchange
CRM
Meter Readings
Invoicing
Billing
Marketing
Campaigns
CRM Cache
DB
Meter Readings
Cache DB
Pragmatic CQRS - Digital Xchange
Products
Data Manipulation
Data
Retrieval
CQRS
Same Data, Multiple – different – Usage Scenarios
• Different in:
• Why
• What – grain, aggregation, breadth, type of and variation in queries
• How – format, language, accuracy and freshness, consistency
• When – frequency, time of day | week | month, 24/7
• Where – latency, band width, off line
• Who – scale, different roles & user groups
Pragmatic CQRS - Digital Xchange
Pragmatic CQRS - Digital Xchange
Special
Products
Product
Clusters
ProductsData Manipulation
Data Retrieval
Food
Stuff
Toys
Quick Product
Search Index
Product Store in
SaaS app
CQRS: Command Query Responsibility Segregation
Pragmatic CQRS - Digital Xchange
MongoDB
ORDERS
Oracle Database
DVX_ORDERS
Pragmatic CQRS - Digital Xchange
MongoDB
ORDERS
Oracle Database
DVX_ORDERS
Pragmatic CQRS - Digital Xchange
19
MongoDB
ORDERS
Oracle Database
DVX_ORDERS
Pragmatic CQRS - Digital Xchange
µ
µ
20
MongoDB
ORDERS
Oracle Database
DVX_ORDERS
Pragmatic CQRS - Digital Xchange
Special
Products
Product
Clusters
ProductsData Manipulation
Data Retrieval
Food
Stuff
Toys
Quick Product
Search Index
Product Store in
SaaS app
CQRS Steps and Challenges
CQRS Steps and Challenges
Pragmatic CQRS - Digital Xchange
Special
Products
Product Clusters
ProductsData Manipulation
Data Retrieval
Food Stuff
Toys
Quick Product Search
Index
Product Store in
SaaS app
Detect changes
Extract Data
Transport Data
Convert Data
Apply Data
Spot and Handle
Errors
Governance &
Evolution
Enforce Constraints
& Authorization
From C to Q
• How quickly?
• How frequently?
• How reliably?
• How atomically?
•
Pragmatic CQRS - Digital Xchange
Products
Quick Product Search
Index
Pragmatic CQRS - Digital Xchange
From C to Q
• How quickly?
• How frequently?
• How reliably?
• How atomic?
•
• Data Authorization Considerations
• Locations & Connectivity
• Full resynch | restore of Query Store
Pragmatic CQRS - Digital Xchange
Products
Quick Product Search
Index
Typical CQRS Architecture
Pragmatic CQRS - Digital Xchange
Event Platform
Source systems
Poll
Consume
Detect &
Retrieve
Change
Change Reporters Distributed Change Event Hub Change Projectors Destination systems
Transform
& Apply
(re)Calculate
& Record
Convert,
Translate,
StoreEvent Schema
Governance
Monitoring & Error Handling
Technologies to support CQRS
• Detecting and Extracting and Publishing Changes
• Database specific change detection
• Debezium, Kafka Connect, SOA Suite Inbound Adapters,
• Cloud Adapters in iPaaS platforms and SaaS products
• Decoupled gathering & queueing of change events (preferably distributed
and technology agnostic; options for long term event retention)
• Kafka, Rabbit MQ, AWS SQS, JMS
• Handling change – transport, transform, apply
• Query Stores – picked based on data use case requirement, not for CQRS
• Any database, in memory cache
Pragmatic CQRS - Digital Xchange
Detecting and Extracting and Publishing Changes
Oracle Database as source
• Oracle GoldenGate, Oracle Data Integrator
• Data Integration Platform Cloud
• SOA Suite Inbound Database Adapter
• Custom:
• Polling
• Log Mining
• Triggers (publishing DML change events)
• Record in Table or AQ/JMS
• Push over HTTP
• Write to file
• Materialized View (Log)
• Flashback Query
• Continuous Query Notification (DB QRCN)
• To PL/SQL package or Java application
Pragmatic CQRS - Digital Xchange
Poll
Consume
Detect &
Retrieve
Change
Detecting and Extracting and Publishing Changes from
many sources – Debezium, Kafka Connect, Apache Kafka
Pragmatic CQRS - Digital Xchange
CDC
Debezium
Apache Kafka
iPaaS (Cloud) Adapters for SaaS & Platform
• Prepackaged Change Event Detectors
Pragmatic CQRS - Digital Xchange
JIT vs AOT
Pragmatic CQRS - Digital Xchange
Ahead of Time
• Prepare products Ahead of Time instead of upon request
• When the time to deliver (to request) is too long
• When the complexity of a JIT-approach is too high
• When the capacity does not allow for JIT-peak production
• When the overhead and waste of AOT are justified
Pragmatic CQRS - Digital Xchange
JIT vs AOT Data Integration
• JIT
• Process [synchronous] request for data ‘just in in time’
• Only data that is requested
• Fresh as can be
• All authorization rules applied
• Single Source of Truth
• Transformation & Aggregation at request time
• Hard (runtime) dependencies from consumer on producer
• AOT
• Pre-process / pre-share data ‘ahead of time’
• Potentially includes data that will never be requested
• Data can be outdated
Pragmatic CQRS - Digital Xchange
Backend For Frontend
Pragmatic CQRS - Digital Xchange
CQRS => Data Backend For Frontend:
Optimized data set for special use case
• Shape & Format
• Right Grained (aggregation, consolidation)
• Filtered
• Enriched (from multiple sources)
• Location
• Time (refreshed at the right time)
• Search Options
• BASE (eventually – when? – consistent)
• Authorization
• GDPR
Pragmatic CQRS - Digital Xchange
UI
APIs
(backend for
frontend)
Data Store
Master
Database
Domain Driven Design
Pragmatic CQRS - Digital Xchange
• Context Mapping and Bounded Context
• Ubiquitous Language
• Microservices
• Domain Events
• Anti Corruption Layer (ACL)
• Autonomous Bubble pattern
Final Demo
• Microservice
Pragmatic CQRS - Digital Xchange
Microservices
• Agile | Flexible | Scalable | (Re)Deployable
• Independent | Decoupled | Isolated
• Communicate asynchronously, via events
• Have their own private bounded context
– the data they require to function
• Their lifeblood
Pragmatic CQRS - Digital Xchange
Microservices State
Cache
RDBMS
Document
Store
NoSQL
Generic Platform for running microservices
Event Hub
Big Data
Block
Storage
LDAP
Pragmatic CQRS - Digital Xchange
Bounded context of microservices
• A micoservice needs to be able to run independently
• It needs to contain & own all data required to run
• It cannot depend on other microservices
API
Customer
APIUI
OrderCustomerModified event
Pragmatic CQRS - Digital Xchange
Autonomous Bubble pattern in DDD
• Getting started with Domain Driven Design in the context of Legacy
Systems
• Synchronizing Anti Corruption Layer
• Translate anything that crosses a context boundary
Pragmatic CQRS - Digital Xchange
Autonomous Bubble pattern in DDD
Pragmatic CQRS - Digital Xchange
Legacy
New Application
Other Context
Autonomous Bubble pattern in DDD
Pragmatic CQRS - Digital Xchange
Legacy
New Application
Other Context
Event
Publisher
Event
Publisher
Q
Q
Q
Coordinator
consume
Event Sourcing
Pragmatic CQRS - Digital Xchange
Utility Company: Rebuild Cache Database
Pragmatic CQRS - Digital Xchange
CRM
Meter Readings
CRM
Cache DB
Meter
Readings
Cache DB
Utility Company: Rebuild Cache Database
From Event Store
Pragmatic CQRS - Digital Xchange
CRM
Cache DB
Meter
Readings
Cache DB
Event Sourcing Driving CQRS
Pragmatic CQRS - Digital Xchange
Events Event Store
Current State
accountId:
123
amount: 10
Owner: Jane Doe
Event Sourcing Driving CQRS
Pragmatic CQRS - Digital Xchange
Events Event Store
Current State
Other State Aggregate
Event Sourcing
• Event Store is immutable – append-only log of domain state transitions
• Replay events
• to (re)construct a representation of the current state (aggregate)
• up to a specific time to recreate moments in time
• in Test environment to investigate an issue
• on a remote location to create mirror & share state across boundaries
• produce a fine grained audit trail
• Challenges
• Time required to reconstruct state
• Grain of aggregates / definition of domain events
Pragmatic CQRS - Digital Xchange
Distributed Database with Event Sourcing & Current State
Pragmatic CQRS - Digital Xchange
World State
Collective Data Set
and
Equal Data Position
Pragmatic CQRS - Digital Xchange
Industrial Data Space
Pragmatic CQRS - Digital Xchange
Data Sharing Ecosystems
• Multiple independent
organizations
• Mutually benefit from
having access to
the same data
at the same time
• Share data & Have access to data with minimum of overhead and with equality among the
ecosystem partners
• Partners are on different network domains, physical locations, technology stacks, …
• New Partners can join
• Partners can leave
• Consensus on what constitutes correct data
Pragmatic CQRS - Digital Xchange
Collective Dataset
Pragmatic CQRS - Digital Xchange
Company
A
Company
C
Company
D
Company
E
Company
F
Collective
Dataset
Company
B
Collective Dataset
Pragmatic CQRS - Digital Xchange
Company
A
Company
C
Company
D
Company
E
Company
F Central
Database
Enterprise
Service Bus
Canonical SOAP WS/
REST API for Sending
Inserts/Updates/Deletes
and for Requesting
current data
Just In Time Integration
Company
B
Collective Dataset = Collective Data Change Events
Pragmatic CQRS - Digital Xchange
Company
A
Company
C
Company
D
Company
E
Company
F
Central
Event
Platform Interfaces for Publishing
and Consuming Events
Note: events can be
consumed
asynchronously
Ahead of Time Integration
Company
B
Collective Dataset => Collective Data Store
Pragmatic CQRS - Digital Xchange
Company
A
Company
C
Company
D
Company
E
Company
F
Ahead of Time Integration
Company
B
Summary
• Why: very different data usage patterns
• What: provide tailored query channels for
usage patterns (Backend for Frontend)
• How: replicate data from source datastore
to query store – with appropriate format,
grain-level, scalability, location, availability, query options
• When: source database(s) cannot fulfil non-functional requirements
• With: change detectors & publishers, event platform, change projectors and
governance on event definitions, monitoring & error handling
• Challenges: scale, speed, consistency, authorization, initial build & full
rebuild
• Benefits: performance at scale, availability, developer productivity, agility,
lower TCO and …
Pragmatic CQRS - Digital Xchange
Contact Details
Pragmatic CQRS - Digital Xchange
• Blog: technology.amis.nl
• Email: lucas.jellema@amis.nl
• : lucasjellema
• : lucas-jellema
• : www.amis.nl, info@amis.nl
+31 306016000
Edisonbaan 15,
Nieuwegein

More Related Content

What's hot

The Architecture of an API Platform
The Architecture of an API PlatformThe Architecture of an API Platform
The Architecture of an API Platform
Johannes Ridderstedt
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of Swagger
SmartBear
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
Amazon Web Services
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI Spec
Adam Paxton
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
Amazon Web Services
 
SaaS Reference Architectures: Review of Real-World Patterns & Strategies (GPS...
SaaS Reference Architectures: Review of Real-World Patterns & Strategies (GPS...SaaS Reference Architectures: Review of Real-World Patterns & Strategies (GPS...
SaaS Reference Architectures: Review of Real-World Patterns & Strategies (GPS...
Amazon Web Services
 
Low code application platforms
Low code application platformsLow code application platforms
Low code application platforms
Matthew Weaver
 
Adapt or Die: A Microservices Story at Google
Adapt or Die: A Microservices Story at GoogleAdapt or Die: A Microservices Story at Google
Adapt or Die: A Microservices Story at Google
Apigee | Google Cloud
 
API Governance
API Governance API Governance
API Governance
Sunil Kuchipudi
 
API as-a-Product with Azure API Management (APIM)
API as-a-Product with Azure API Management (APIM)API as-a-Product with Azure API Management (APIM)
API as-a-Product with Azure API Management (APIM)
Bishoy Demian
 
9 reasons why low code no-code platform is the best choice for increasing ado...
9 reasons why low code no-code platform is the best choice for increasing ado...9 reasons why low code no-code platform is the best choice for increasing ado...
9 reasons why low code no-code platform is the best choice for increasing ado...
Enterprise Bot
 
Compliance as Code with terraform-compliance
Compliance as Code with terraform-complianceCompliance as Code with terraform-compliance
Compliance as Code with terraform-compliance
Emre Erkunt
 
High level design document template
High level design document templateHigh level design document template
High level design document template
anosha jamshed
 
Event Storming and Saga
Event Storming and SagaEvent Storming and Saga
Event Storming and Saga
Araf Karsh Hamid
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
Araf Karsh Hamid
 
Api types
Api typesApi types
Api types
Sarah Maddox
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
Araf Karsh Hamid
 
Apigee Products Overview
Apigee Products OverviewApigee Products Overview
Apigee Products Overview
Apigee | Google Cloud
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
Stefan Norberg
 
An introduction to Microservices
An introduction to MicroservicesAn introduction to Microservices
An introduction to Microservices
Cisco DevNet
 

What's hot (20)

The Architecture of an API Platform
The Architecture of an API PlatformThe Architecture of an API Platform
The Architecture of an API Platform
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of Swagger
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI Spec
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
SaaS Reference Architectures: Review of Real-World Patterns & Strategies (GPS...
SaaS Reference Architectures: Review of Real-World Patterns & Strategies (GPS...SaaS Reference Architectures: Review of Real-World Patterns & Strategies (GPS...
SaaS Reference Architectures: Review of Real-World Patterns & Strategies (GPS...
 
Low code application platforms
Low code application platformsLow code application platforms
Low code application platforms
 
Adapt or Die: A Microservices Story at Google
Adapt or Die: A Microservices Story at GoogleAdapt or Die: A Microservices Story at Google
Adapt or Die: A Microservices Story at Google
 
API Governance
API Governance API Governance
API Governance
 
API as-a-Product with Azure API Management (APIM)
API as-a-Product with Azure API Management (APIM)API as-a-Product with Azure API Management (APIM)
API as-a-Product with Azure API Management (APIM)
 
9 reasons why low code no-code platform is the best choice for increasing ado...
9 reasons why low code no-code platform is the best choice for increasing ado...9 reasons why low code no-code platform is the best choice for increasing ado...
9 reasons why low code no-code platform is the best choice for increasing ado...
 
Compliance as Code with terraform-compliance
Compliance as Code with terraform-complianceCompliance as Code with terraform-compliance
Compliance as Code with terraform-compliance
 
High level design document template
High level design document templateHigh level design document template
High level design document template
 
Event Storming and Saga
Event Storming and SagaEvent Storming and Saga
Event Storming and Saga
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
Api types
Api typesApi types
Api types
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
Apigee Products Overview
Apigee Products OverviewApigee Products Overview
Apigee Products Overview
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 
An introduction to Microservices
An introduction to MicroservicesAn introduction to Microservices
An introduction to Microservices
 

Similar to Pragmatic CQRS with existing applications and databases (Digital Xchange, May 2019)

Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
HostedbyConfluent
 
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...
Gary Arora
 
Data & analytics challenges in a microservice architecture
Data & analytics challenges in a microservice architectureData & analytics challenges in a microservice architecture
Data & analytics challenges in a microservice architecture
Niels Naglé
 
Webinar: SQL for Machine Data?
Webinar: SQL for Machine Data?Webinar: SQL for Machine Data?
Webinar: SQL for Machine Data?
Crate.io
 
From Data to Services at the Speed of Business
From Data to Services at the Speed of BusinessFrom Data to Services at the Speed of Business
From Data to Services at the Speed of Business
Ali Hodroj
 
Amazon Redshift with Full 360 Inc.
Amazon Redshift with Full 360 Inc.Amazon Redshift with Full 360 Inc.
Amazon Redshift with Full 360 Inc.
Amazon Web Services
 
Eliminating Volatile Latencies Inside Rakuten’s NoSQL Migration
Eliminating  Volatile Latencies Inside Rakuten’s NoSQL MigrationEliminating  Volatile Latencies Inside Rakuten’s NoSQL Migration
Eliminating Volatile Latencies Inside Rakuten’s NoSQL Migration
ScyllaDB
 
Journey to the Data Lake: How Progressive Paved a Faster, Smoother Path to In...
Journey to the Data Lake: How Progressive Paved a Faster, Smoother Path to In...Journey to the Data Lake: How Progressive Paved a Faster, Smoother Path to In...
Journey to the Data Lake: How Progressive Paved a Faster, Smoother Path to In...
DataWorks Summit
 
AWS Webcast - Informatica - Big Data Solutions Showcase
AWS Webcast - Informatica - Big Data Solutions ShowcaseAWS Webcast - Informatica - Big Data Solutions Showcase
AWS Webcast - Informatica - Big Data Solutions Showcase
Amazon Web Services
 
From Kafka to BigQuery - Strata Singapore
From Kafka to BigQuery - Strata SingaporeFrom Kafka to BigQuery - Strata Singapore
From Kafka to BigQuery - Strata Singapore
Ofir Sharony
 
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
Spark Summit
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
ScyllaDB
 
Serverless Messaging with Microsoft Azure by Steef-Jan Wiggers
Serverless Messaging with Microsoft Azure by Steef-Jan WiggersServerless Messaging with Microsoft Azure by Steef-Jan Wiggers
Serverless Messaging with Microsoft Azure by Steef-Jan Wiggers
Adam Walhout
 
How Data Drives Business at Choice Hotels
How Data Drives Business at Choice HotelsHow Data Drives Business at Choice Hotels
How Data Drives Business at Choice Hotels
Cloudera, Inc.
 
Building real time data-driven products
Building real time data-driven productsBuilding real time data-driven products
Building real time data-driven products
Lars Albertsson
 
Modernizing your Application Architecture with Microservices
Modernizing your Application Architecture with MicroservicesModernizing your Application Architecture with Microservices
Modernizing your Application Architecture with Microservices
confluent
 
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
Deepak Chandramouli
 
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
Maya Lumbroso
 
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
Dataconomy Media
 
Getting It Right Exactly Once: Principles for Streaming Architectures
Getting It Right Exactly Once: Principles for Streaming ArchitecturesGetting It Right Exactly Once: Principles for Streaming Architectures
Getting It Right Exactly Once: Principles for Streaming Architectures
SingleStore
 

Similar to Pragmatic CQRS with existing applications and databases (Digital Xchange, May 2019) (20)

Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
Qlik and Confluent Success Stories with Kafka - How Generali and Skechers Kee...
 
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...
 
Data & analytics challenges in a microservice architecture
Data & analytics challenges in a microservice architectureData & analytics challenges in a microservice architecture
Data & analytics challenges in a microservice architecture
 
Webinar: SQL for Machine Data?
Webinar: SQL for Machine Data?Webinar: SQL for Machine Data?
Webinar: SQL for Machine Data?
 
From Data to Services at the Speed of Business
From Data to Services at the Speed of BusinessFrom Data to Services at the Speed of Business
From Data to Services at the Speed of Business
 
Amazon Redshift with Full 360 Inc.
Amazon Redshift with Full 360 Inc.Amazon Redshift with Full 360 Inc.
Amazon Redshift with Full 360 Inc.
 
Eliminating Volatile Latencies Inside Rakuten’s NoSQL Migration
Eliminating  Volatile Latencies Inside Rakuten’s NoSQL MigrationEliminating  Volatile Latencies Inside Rakuten’s NoSQL Migration
Eliminating Volatile Latencies Inside Rakuten’s NoSQL Migration
 
Journey to the Data Lake: How Progressive Paved a Faster, Smoother Path to In...
Journey to the Data Lake: How Progressive Paved a Faster, Smoother Path to In...Journey to the Data Lake: How Progressive Paved a Faster, Smoother Path to In...
Journey to the Data Lake: How Progressive Paved a Faster, Smoother Path to In...
 
AWS Webcast - Informatica - Big Data Solutions Showcase
AWS Webcast - Informatica - Big Data Solutions ShowcaseAWS Webcast - Informatica - Big Data Solutions Showcase
AWS Webcast - Informatica - Big Data Solutions Showcase
 
From Kafka to BigQuery - Strata Singapore
From Kafka to BigQuery - Strata SingaporeFrom Kafka to BigQuery - Strata Singapore
From Kafka to BigQuery - Strata Singapore
 
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Serverless Messaging with Microsoft Azure by Steef-Jan Wiggers
Serverless Messaging with Microsoft Azure by Steef-Jan WiggersServerless Messaging with Microsoft Azure by Steef-Jan Wiggers
Serverless Messaging with Microsoft Azure by Steef-Jan Wiggers
 
How Data Drives Business at Choice Hotels
How Data Drives Business at Choice HotelsHow Data Drives Business at Choice Hotels
How Data Drives Business at Choice Hotels
 
Building real time data-driven products
Building real time data-driven productsBuilding real time data-driven products
Building real time data-driven products
 
Modernizing your Application Architecture with Microservices
Modernizing your Application Architecture with MicroservicesModernizing your Application Architecture with Microservices
Modernizing your Application Architecture with Microservices
 
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
PayPal datalake journey | teradata - edge of next | san diego | 2017 october ...
 
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
 
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc..."An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
"An introduction to Kx Technology - a Big Data solution", Kyra Coyne, Data Sc...
 
Getting It Right Exactly Once: Principles for Streaming Architectures
Getting It Right Exactly Once: Principles for Streaming ArchitecturesGetting It Right Exactly Once: Principles for Streaming Architectures
Getting It Right Exactly Once: Principles for Streaming Architectures
 

More from Lucas Jellema

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Lucas Jellema
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lucas Jellema
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
Lucas Jellema
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Lucas Jellema
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
Lucas Jellema
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Lucas Jellema
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Lucas Jellema
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Lucas Jellema
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Lucas Jellema
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Lucas Jellema
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
Lucas Jellema
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Lucas Jellema
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
Lucas Jellema
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Lucas Jellema
 

More from Lucas Jellema (20)

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 

Recently uploaded

Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 

Recently uploaded (20)

Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 

Pragmatic CQRS with existing applications and databases (Digital Xchange, May 2019)

  • 1. Pragmatic CQRS Pragmatic CQRS - Digital Xchange Lucas Jellema, CTO & Architect at AMIS Digital Xchange Bergisches Rheinland, May 2019
  • 2. Lucas Jellema Architect / Developer 1994 started in IT at Oracle 2002 joined AMIS Currently CTO & Solution Architect Pragmatic CQRS - Digital Xchange
  • 3. BOL - CQRS Pragmatic CQRS - Digital Xchange
  • 4. Books Online - WebShop Pragmatic CQRS - Digital Xchange Products Product updates firewall Data manipulation Data Quality (enforcement) <10K transactions Batch jobs next to online Speed is nice Read only On line Speed is crucial XHTML & JSON > 5M visits Webshop visits - searches - product details - Orders
  • 5. Pragmatic CQRS - Digital Xchange Products Products Products Webshop visits - searches - product details - Orders firewall Data manipulation Data Quality (enforcement) <10K transactions Batch jobs next to online Speed is nice Read only On line Speed is crucial XHTML & JSON > 1M visits DMZ Read only JSON documents Images Text Search Scale Horizontally Stale but consistent Products Nightly generation Product updates
  • 6. What is different? • DML != Query • Duplication of Data (<> evil) • Data in multiple physical locations • ACID is not an absolute truth • Eventual Consistency (relaxed freshness) • NoSQL – not everything is relational • Data preprocessed, stored and produced for a special consumer • TCO is not a given – and it matters Pragmatic CQRS - Digital Xchange
  • 7. Why? • Performance • Scalability • Availability • Development productivity • Agility through decoupling • Reduction in TCO Pragmatic CQRS - Digital Xchange
  • 8. Common mechanism for Duplicating Data to improve performance, scalability and developer productivity Pragmatic CQRS - Digital Xchange Many Complex, Heavy Queries: Complex Joins, Expensive Aggregations Inserts, Updates and the odd Delete
  • 9. Common mechanism for Duplicating Data to improve performance, scalability and developer productivity Pragmatic CQRS - Digital Xchange Many Simple Cheap Queries Inserts, Updates and the odd Delete Many Simple Cheap Queries Required and feasible consistency: REFRESH ON COMMIT or scheduled refresh
  • 10. Utility Company looking for Performance, Scalability and Availability in their core data sets Pragmatic CQRS - Digital Xchange CRM Meter Readings batch Invoicing Billing Marketing Campaigns Load on Core Systems & effect on Performance Availability Core Systems
  • 11. Utility Company looking for Performance, Scalability and Availability in their core data sets Pragmatic CQRS - Digital Xchange CRM Meter Readings Invoicing Billing Marketing Campaigns CRM Cache DB Meter Readings Cache DB
  • 12. Utility Company looking for Performance, Scalability and Availability in their core data sets Pragmatic CQRS - Digital Xchange CRM Meter Readings Invoicing Billing Marketing Campaigns CRM Cache DB Meter Readings Cache DB
  • 13. Practical Challenges • Publish all change events from sources • Event schema evolution • Lag in Cache Databases • “eventual consistency” • Differences between sources and cache databases • Initial creation of Cache Databases • Scale and event storm • Business and Mission Critical availability • Data Authorization • Logic enforced in source (applications) • GDPR Pragmatic CQRS - Digital Xchange CRM Meter Readings Invoicing Billing Marketing Campaigns CRM Cache DB Meter Readings Cache DB
  • 14. Pragmatic CQRS - Digital Xchange Products Data Manipulation Data Retrieval CQRS
  • 15. Same Data, Multiple – different – Usage Scenarios • Different in: • Why • What – grain, aggregation, breadth, type of and variation in queries • How – format, language, accuracy and freshness, consistency • When – frequency, time of day | week | month, 24/7 • Where – latency, band width, off line • Who – scale, different roles & user groups Pragmatic CQRS - Digital Xchange
  • 16. Pragmatic CQRS - Digital Xchange Special Products Product Clusters ProductsData Manipulation Data Retrieval Food Stuff Toys Quick Product Search Index Product Store in SaaS app CQRS: Command Query Responsibility Segregation
  • 17. Pragmatic CQRS - Digital Xchange MongoDB ORDERS Oracle Database DVX_ORDERS
  • 18. Pragmatic CQRS - Digital Xchange MongoDB ORDERS Oracle Database DVX_ORDERS
  • 19. Pragmatic CQRS - Digital Xchange 19 MongoDB ORDERS Oracle Database DVX_ORDERS
  • 20. Pragmatic CQRS - Digital Xchange µ µ 20 MongoDB ORDERS Oracle Database DVX_ORDERS
  • 21. Pragmatic CQRS - Digital Xchange Special Products Product Clusters ProductsData Manipulation Data Retrieval Food Stuff Toys Quick Product Search Index Product Store in SaaS app CQRS Steps and Challenges
  • 22. CQRS Steps and Challenges Pragmatic CQRS - Digital Xchange Special Products Product Clusters ProductsData Manipulation Data Retrieval Food Stuff Toys Quick Product Search Index Product Store in SaaS app Detect changes Extract Data Transport Data Convert Data Apply Data Spot and Handle Errors Governance & Evolution Enforce Constraints & Authorization
  • 23. From C to Q • How quickly? • How frequently? • How reliably? • How atomically? • Pragmatic CQRS - Digital Xchange Products Quick Product Search Index
  • 24. Pragmatic CQRS - Digital Xchange
  • 25. From C to Q • How quickly? • How frequently? • How reliably? • How atomic? • • Data Authorization Considerations • Locations & Connectivity • Full resynch | restore of Query Store Pragmatic CQRS - Digital Xchange Products Quick Product Search Index
  • 26. Typical CQRS Architecture Pragmatic CQRS - Digital Xchange Event Platform Source systems Poll Consume Detect & Retrieve Change Change Reporters Distributed Change Event Hub Change Projectors Destination systems Transform & Apply (re)Calculate & Record Convert, Translate, StoreEvent Schema Governance Monitoring & Error Handling
  • 27. Technologies to support CQRS • Detecting and Extracting and Publishing Changes • Database specific change detection • Debezium, Kafka Connect, SOA Suite Inbound Adapters, • Cloud Adapters in iPaaS platforms and SaaS products • Decoupled gathering & queueing of change events (preferably distributed and technology agnostic; options for long term event retention) • Kafka, Rabbit MQ, AWS SQS, JMS • Handling change – transport, transform, apply • Query Stores – picked based on data use case requirement, not for CQRS • Any database, in memory cache Pragmatic CQRS - Digital Xchange
  • 28. Detecting and Extracting and Publishing Changes Oracle Database as source • Oracle GoldenGate, Oracle Data Integrator • Data Integration Platform Cloud • SOA Suite Inbound Database Adapter • Custom: • Polling • Log Mining • Triggers (publishing DML change events) • Record in Table or AQ/JMS • Push over HTTP • Write to file • Materialized View (Log) • Flashback Query • Continuous Query Notification (DB QRCN) • To PL/SQL package or Java application Pragmatic CQRS - Digital Xchange Poll Consume Detect & Retrieve Change
  • 29. Detecting and Extracting and Publishing Changes from many sources – Debezium, Kafka Connect, Apache Kafka Pragmatic CQRS - Digital Xchange CDC Debezium Apache Kafka
  • 30. iPaaS (Cloud) Adapters for SaaS & Platform • Prepackaged Change Event Detectors Pragmatic CQRS - Digital Xchange
  • 31. JIT vs AOT Pragmatic CQRS - Digital Xchange
  • 32. Ahead of Time • Prepare products Ahead of Time instead of upon request • When the time to deliver (to request) is too long • When the complexity of a JIT-approach is too high • When the capacity does not allow for JIT-peak production • When the overhead and waste of AOT are justified Pragmatic CQRS - Digital Xchange
  • 33. JIT vs AOT Data Integration • JIT • Process [synchronous] request for data ‘just in in time’ • Only data that is requested • Fresh as can be • All authorization rules applied • Single Source of Truth • Transformation & Aggregation at request time • Hard (runtime) dependencies from consumer on producer • AOT • Pre-process / pre-share data ‘ahead of time’ • Potentially includes data that will never be requested • Data can be outdated Pragmatic CQRS - Digital Xchange
  • 34. Backend For Frontend Pragmatic CQRS - Digital Xchange
  • 35. CQRS => Data Backend For Frontend: Optimized data set for special use case • Shape & Format • Right Grained (aggregation, consolidation) • Filtered • Enriched (from multiple sources) • Location • Time (refreshed at the right time) • Search Options • BASE (eventually – when? – consistent) • Authorization • GDPR Pragmatic CQRS - Digital Xchange UI APIs (backend for frontend) Data Store Master Database
  • 36. Domain Driven Design Pragmatic CQRS - Digital Xchange • Context Mapping and Bounded Context • Ubiquitous Language • Microservices • Domain Events • Anti Corruption Layer (ACL) • Autonomous Bubble pattern
  • 37. Final Demo • Microservice Pragmatic CQRS - Digital Xchange
  • 38. Microservices • Agile | Flexible | Scalable | (Re)Deployable • Independent | Decoupled | Isolated • Communicate asynchronously, via events • Have their own private bounded context – the data they require to function • Their lifeblood Pragmatic CQRS - Digital Xchange
  • 39. Microservices State Cache RDBMS Document Store NoSQL Generic Platform for running microservices Event Hub Big Data Block Storage LDAP Pragmatic CQRS - Digital Xchange
  • 40. Bounded context of microservices • A micoservice needs to be able to run independently • It needs to contain & own all data required to run • It cannot depend on other microservices API Customer APIUI OrderCustomerModified event Pragmatic CQRS - Digital Xchange
  • 41. Autonomous Bubble pattern in DDD • Getting started with Domain Driven Design in the context of Legacy Systems • Synchronizing Anti Corruption Layer • Translate anything that crosses a context boundary Pragmatic CQRS - Digital Xchange
  • 42. Autonomous Bubble pattern in DDD Pragmatic CQRS - Digital Xchange Legacy New Application Other Context
  • 43. Autonomous Bubble pattern in DDD Pragmatic CQRS - Digital Xchange Legacy New Application Other Context Event Publisher Event Publisher Q Q Q Coordinator consume
  • 44. Event Sourcing Pragmatic CQRS - Digital Xchange
  • 45. Utility Company: Rebuild Cache Database Pragmatic CQRS - Digital Xchange CRM Meter Readings CRM Cache DB Meter Readings Cache DB
  • 46. Utility Company: Rebuild Cache Database From Event Store Pragmatic CQRS - Digital Xchange CRM Cache DB Meter Readings Cache DB
  • 47. Event Sourcing Driving CQRS Pragmatic CQRS - Digital Xchange Events Event Store Current State accountId: 123 amount: 10 Owner: Jane Doe
  • 48. Event Sourcing Driving CQRS Pragmatic CQRS - Digital Xchange Events Event Store Current State Other State Aggregate
  • 49. Event Sourcing • Event Store is immutable – append-only log of domain state transitions • Replay events • to (re)construct a representation of the current state (aggregate) • up to a specific time to recreate moments in time • in Test environment to investigate an issue • on a remote location to create mirror & share state across boundaries • produce a fine grained audit trail • Challenges • Time required to reconstruct state • Grain of aggregates / definition of domain events Pragmatic CQRS - Digital Xchange
  • 50. Distributed Database with Event Sourcing & Current State Pragmatic CQRS - Digital Xchange World State
  • 51. Collective Data Set and Equal Data Position Pragmatic CQRS - Digital Xchange
  • 52. Industrial Data Space Pragmatic CQRS - Digital Xchange
  • 53. Data Sharing Ecosystems • Multiple independent organizations • Mutually benefit from having access to the same data at the same time • Share data & Have access to data with minimum of overhead and with equality among the ecosystem partners • Partners are on different network domains, physical locations, technology stacks, … • New Partners can join • Partners can leave • Consensus on what constitutes correct data Pragmatic CQRS - Digital Xchange
  • 54. Collective Dataset Pragmatic CQRS - Digital Xchange Company A Company C Company D Company E Company F Collective Dataset Company B
  • 55. Collective Dataset Pragmatic CQRS - Digital Xchange Company A Company C Company D Company E Company F Central Database Enterprise Service Bus Canonical SOAP WS/ REST API for Sending Inserts/Updates/Deletes and for Requesting current data Just In Time Integration Company B
  • 56. Collective Dataset = Collective Data Change Events Pragmatic CQRS - Digital Xchange Company A Company C Company D Company E Company F Central Event Platform Interfaces for Publishing and Consuming Events Note: events can be consumed asynchronously Ahead of Time Integration Company B
  • 57. Collective Dataset => Collective Data Store Pragmatic CQRS - Digital Xchange Company A Company C Company D Company E Company F Ahead of Time Integration Company B
  • 58. Summary • Why: very different data usage patterns • What: provide tailored query channels for usage patterns (Backend for Frontend) • How: replicate data from source datastore to query store – with appropriate format, grain-level, scalability, location, availability, query options • When: source database(s) cannot fulfil non-functional requirements • With: change detectors & publishers, event platform, change projectors and governance on event definitions, monitoring & error handling • Challenges: scale, speed, consistency, authorization, initial build & full rebuild • Benefits: performance at scale, availability, developer productivity, agility, lower TCO and … Pragmatic CQRS - Digital Xchange
  • 59. Contact Details Pragmatic CQRS - Digital Xchange • Blog: technology.amis.nl • Email: lucas.jellema@amis.nl • : lucasjellema • : lucas-jellema • : www.amis.nl, info@amis.nl +31 306016000 Edisonbaan 15, Nieuwegein

Editor's Notes

  1. Data manipulation and retrieval in separate places (physical data proliferation) Query store is optimized for consumers Level of detail, format, filters applied For performance and scalability, independence, productivity lower license fees and lower TCO, security
  2. Data manipulation and retrieval in separate places (physical data proliferation) Query store is optimized for consumers Level of detail, format, filters applied For performance and scalability, independence, productivity lower license fees and lower TCO, security
  3. No Event Sourcing No events (?) No green field Packages Applications/SaaS Databases (RDBMS, NoSQL) getting changes from applications directly Challenges – at scale, with enough speed and consistently: do not let query store get into an exposed state that could not exist/be right! Detect relevant changes Extract relevant changes Transport Convert Apply in correct order and reliably (no lost events) Note: after detect and extract, an event can be published
  4. Destination system: can be cache, or even only the programmatic representation – without any data duplication Dumb pipes, smart end points
  5. MySQL: binlog; Postgres: wnte-ahead log; MongoDB op log
  6. AnyPoint Zapier SSI OIC Dell Boomi
  7. All data stores are distributed Or at least distributedly available They can be local or on cloud (latency is important) Data in generic data store is still owned by only one microservice – no one can touch it Only in DWH and BigData do we deliberately take copies of data and disown them
  8. http://domainlanguage.com/wp-content/uploads/2016/04/GettingStartedWithDDDWhenSurroundedByLegacySystemsV1.pdf
  9. Events are immutable facts Current state (active record) is derived from sum of events Read optimized aggregates are created for specific use case – based on events and rebuildable at any time
  10. Events are immutable facts Current state (active record) is derived from sum of events Read optimized aggregates are created for specific use case – based on events and rebuildable at any time
  11. Blockchain!
  12. Central Database plus ESB plus send updates and request data?
  13. Central Database plus ESB plus send updates and request data?
  14. Central Database plus ESB plus send updates and request data?
  15. Central Database plus ESB plus send updates and request data?