SlideShare a Scribd company logo
1 of 51
Download to read offline
CQRS AND EVENT SOURCING INCQRS AND EVENT SOURCING IN
THE AWS CLOUDTHE AWS CLOUD
@gunnarwrobel, JobMatchMe GmbH
1
WHY?WHY?
LEARNINGLEARNING
FLEXIBILITYFLEXIBILITY
2
...provides the non-
academic workforce with
good jobs
3
4
5
"How do I find a decent job
as a truck driver?"
"DRIVING TRUCKS IS NOT"DRIVING TRUCKS IS NOT
A DECENT JOB!"A DECENT JOB!"
6
There are more than
500.000 truck drivers in
Germany.
Quelle: Statista
7
There are about 20.000
Trucking companies in
Germany.
Quelle: Bundesamt für Güterverkehr
8
There are about 45.000
open positions as truck
drivers officially listed at
the german Arbeitsagentur.
9
Logistic chains are
breaking becouse of small
trucking companies that
have no drivers anymore.
10
"I think customers should
stop expecting that there
are always melons
available at the
supermarket."
11
"I was wondering last
christmas that the whole
Amazon delivery business
still worked. I expected it to
break because of missing
drivers... maybe next time."
12
"Suddenly parcels didn't
get delivered anymore
because our subcontractor
didn't have any drivers."
13
WE DON'T SOLVE ALLWE DON'T SOLVE ALL
PROBLEMS...PROBLEMS...
... but there is a huge
market.
... and we can help.
14
We offer a market place for
drivers and trucking
companies.
15
"EVERY FEW HOURS A"EVERY FEW HOURS A
TRUCK DRIVER FALLS INTRUCK DRIVER FALLS IN
LOVE VIA TRUCK-JOBS.DELOVE VIA TRUCK-JOBS.DE
..."..."
16
We match drivers to job
offers according to their
capabilities and
preferences.
17
MY INITIAL SQL ASSUMPTIONMY INITIAL SQL ASSUMPTION
DRIVERDRIVER
Income
Location
Licences
JOBJOB
Income
Location
Licences
WRONGWRONG
18
LOCATIONLOCATION
A driver may be on the road for a week.
19
INCOMEINCOME
Drivers income is not a number.
Small base fee
Allowances
Bonus for night/weekend
...
20
MATCHING REQUIREMENTS?MATCHING REQUIREMENTS?
21
Essentially nothing.
Attributes may be missing.
22
Some roughly matching attributes.
Weak coupling between driver data + joboffer data.
23
We don't know.
Attributes will evolve over time.
24
Smells like NoSQL.
25
THE AGGREGATESTHE AGGREGATES
26
CHANGING AGGREGATESCHANGING AGGREGATES
27
LEARNING FROM MATCHESLEARNING FROM MATCHES
28
THE DECISIONSTHE DECISIONS
Event sourcing for flexible data structures and for
learning from matches
AWS for a flexible base that provides a rich toolbelt
and high availability
29
Browser
API Gateway API Gateway
Command
Event
Event
Dynamo DB
S3 Backup
Event Event Event
Event
Command
Lambdas
View
Projection
Lambdas
Redis
cache
View View
View
30
Browser
API Gateway API Gateway
Command
Event
Event
Dynamo DB
S3 Backup
Event Event Event
Event
Command
Lambdas
View
Projection
Lambdas
Redis
cache
View View
View
READWRITE
31
Command
Event
POST to /jobs/JOB-UUID/contact
Convert HTTP Request to Command
Convert Command to Event
Store Event in Dynamo DB
32
Command
Event
CONVERT HTTP REQUESTCONVERT HTTP REQUEST
TO COMMANDTO COMMAND
export const lambda = (
lambdaCommand: LambdaCommandType
) => {
const jobId = lambdaCommand.pathParameters.id
writeDomain({
name: 'addJobContact',
aggregate: {id: jobId, name: 'job'},
payload: lambdaCommand.body
})
}
33
Command
Event
CQRS/ES: CQRS.JS.ORGCQRS/ES: CQRS.JS.ORG
34
Command
Event
CONVERT COMMAND TOCONVERT COMMAND TO
EVENTEVENT
commands/addJobContact.js
import {defineCommand} from 'cqrs-domain'
export const command = defineCommand(
{ existing: true },
(command, aggregate) => {
aggregate.apply({
event: 'addedJobContact',
payload: command.payload
})
}
)
35
Command
Event
APPLY EVENT TO JOBAPPLY EVENT TO JOB
AGGREGATEAGGREGATE
events/addedJobContact.js
import {defineEvent} from 'cqrs-domain'
export const event = defineEvent(
{ payload: 'payload' },
(data, aggregate) => {
let contacts = []
if (aggregate.has('contacts')) {
contacts = aggregate.get('contacts')
}
aggregate.set(
'contacts',
contacts.concat(data)
)
})
36
Command
Event
DISADVANTAGES OF THEDISADVANTAGES OF THE
WRITE SIDEWRITE SIDE
Consumption only => HTTP 202 ACCEPTED
One Command, one Lambda (one Log, one
Command definition, one Event definition)
37
Command
Event
ADVANTAGES OF THE WRITEADVANTAGES OF THE WRITE
SIDESIDE
Data structures can be relaxed or restricted
by schemas
Incoming data can be mangled on different
levels
Supports DDD approach and the domain
model represents real world actions
38
Browser
API Gateway API Gateway
Command
Event
Event
Dynamo DB
S3 Backup
Event Event Event
Event
Command
Lambdas
View
Projection
Lambdas
Redis
cache
View View
View
READWRITE
39
Event
View
View View
View
For each new event ...
... fetch current view from Redis
... apply event to view
... store updated view in Redis
On (updated view) OR
(GET /job/JOB-UUID) ...
... fetch views from Redis
... aggregate to view
... (push) OR (provide) response
40
Event
View
View View
View
ES: CQRS.JS.ORGES: CQRS.JS.ORG
CREATE VIEWS FROM EVENTSCREATE VIEWS FROM EVENTS
(DENORMALIZATION / PROJECTION)(DENORMALIZATION / PROJECTION)
41
Event
View
View View
View
CREATE VIEWS FROMCREATE VIEWS FROM
EVENTSEVENTS
viewBuilders/
addedDriver.js
addedDriverComment.js
blacklistedDriver.js
deletedDriver.js
editedDriver.js
postponedDriver.js
receivedDriverMessage.js
sentDriverMessage.js
startedDriverCall.js
stoppedDriverCall.js
42
Event
View
View View
View
CONVERT EVENT TOCONVERT EVENT TO
VIEW MODELVIEW MODEL
addedDriver.js
export const viewBuilder =
defineViewBuilder(
{
name: 'addedDriver',
aggregate: 'driver',
payload: 'payload'
},
'create'
)
43
Event
View
View View
View
CONVERT EVENT TOCONVERT EVENT TO
VIEW MODELVIEW MODEL
postponedDriver.js
export const viewBuilder =
defineViewBuilder(
{
name: 'postponedDriver',
aggregate: 'driver',
payload: 'payload'
},
(data, vm) => {
vm.set(
'waitUntil',
data.timestamp
)})
44
Event
View
View View
View
DELIVER VIEWS FROMDELIVER VIEWS FROM
REDISREDIS
export const lambda = (
lambdaCommand: LambdaCommandType,
lambdaCallback: LambdaCallbackType
) => {
const driverId =
lambdaCommand.pathParameters.id
lambdaCallback(
new Promise((resolve, reject) => {
redisClient.get(
`driver:${driverId}`,
(err, result) => resolve(
JSON.parse(result)
))})}
45
Event
View
View View
View
DISADVANTAGES OF THEDISADVANTAGES OF THE
READ SIDEREAD SIDE
All the downsides of handling an event
log KanDDDinsky 2017: An Event Sourcing Retrospective
Developing a view requires coding view
builders / event denormalizers.
Asynchronous pipeline
46
Event
View
View View
View
ADVANTAGES OF THEADVANTAGES OF THE
READ SIDEREAD SIDE
Response data can be built on different
levels
You can iterate optimizations from
frontend, to view lambda, to event
projections
Scalable
Push model by default
47
Browser
API Gateway API Gateway
Command
Event
Event
Dynamo DB
S3 Backup
Event Event Event
Event
Command
Lambdas
View
Projection
Lambdas
Redis
cache
View View
View
48
SUMMARY - DISADVANTAGESSUMMARY - DISADVANTAGES
Write and read are seperate and may be slow
Many bits and pieces
Can be "Garbage in, garbage out"
49
SUMMARY - ADVANTAGESSUMMARY - ADVANTAGES
FLEXIBLEFLEXIBLE
Mangle data anywhere
Frontend (product) may rule
Scalable
LEARNINGLEARNING
Enables learning from day one
Makes your data analysts happy
Deals with real world events
50
THANKS!THANKS!
51

More Related Content

Similar to CQRS and Event Sourcing in the AWS Cloud

Building microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring BootBuilding microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring BootChris Richardson
 
AWS Lambda with ClaudiaJS
AWS Lambda with ClaudiaJSAWS Lambda with ClaudiaJS
AWS Lambda with ClaudiaJSRiza Fahmi
 
Aws seminar report
Aws seminar report Aws seminar report
Aws seminar report Rahul Kumar
 
Serveless Design Patterns (Serverless Computing London)
Serveless Design Patterns (Serverless Computing London)Serveless Design Patterns (Serverless Computing London)
Serveless Design Patterns (Serverless Computing London)Yan Cui
 
Events on the outside, on the inside and at the core (jfokus jfokus2016)
Events on the outside, on the inside and at the core (jfokus jfokus2016)Events on the outside, on the inside and at the core (jfokus jfokus2016)
Events on the outside, on the inside and at the core (jfokus jfokus2016)Chris Richardson
 
Raquel Guimaraes- Third party infrastructure as code
Raquel Guimaraes-  Third party infrastructure as codeRaquel Guimaraes-  Third party infrastructure as code
Raquel Guimaraes- Third party infrastructure as codeThoughtworks
 
Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Chris Richardson
 
Serveless design patterns (VoxxedDays Luxembourg)
Serveless design patterns (VoxxedDays Luxembourg)Serveless design patterns (VoxxedDays Luxembourg)
Serveless design patterns (VoxxedDays Luxembourg)Yan Cui
 
Serverless Design Patterns
Serverless Design PatternsServerless Design Patterns
Serverless Design PatternsYan Cui
 
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)Chris Richardson
 
Serverless Architectural Patterns
Serverless Architectural PatternsServerless Architectural Patterns
Serverless Architectural PatternsYan Cui
 
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...Chris Richardson
 
Developing functional domain models with event sourcing (sbtb, sbtb2015)
Developing functional domain models with event sourcing (sbtb, sbtb2015)Developing functional domain models with event sourcing (sbtb, sbtb2015)
Developing functional domain models with event sourcing (sbtb, sbtb2015)Chris Richardson
 
20 ways event-driven architectures can improve your development - Copy.pptx
20 ways event-driven architectures can improve your development - Copy.pptx20 ways event-driven architectures can improve your development - Copy.pptx
20 ways event-driven architectures can improve your development - Copy.pptxJames Beswick
 
THE MONSTER UNDER THE BED – OVERENGINEERING THE CLOUD
THE MONSTER UNDER THE BED – OVERENGINEERING THE CLOUDTHE MONSTER UNDER THE BED – OVERENGINEERING THE CLOUD
THE MONSTER UNDER THE BED – OVERENGINEERING THE CLOUDRadu Vunvulea
 
Avoiding Friendly Fire in AWS
Avoiding Friendly Fire in AWSAvoiding Friendly Fire in AWS
Avoiding Friendly Fire in AWSDebHawk
 
Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019
Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019
Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019confluent
 
Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?Guido Schmutz
 

Similar to CQRS and Event Sourcing in the AWS Cloud (20)

Building microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring BootBuilding microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring Boot
 
AWS Lambda with ClaudiaJS
AWS Lambda with ClaudiaJSAWS Lambda with ClaudiaJS
AWS Lambda with ClaudiaJS
 
Aws seminar report
Aws seminar report Aws seminar report
Aws seminar report
 
Serveless Design Patterns (Serverless Computing London)
Serveless Design Patterns (Serverless Computing London)Serveless Design Patterns (Serverless Computing London)
Serveless Design Patterns (Serverless Computing London)
 
Events on the outside, on the inside and at the core (jfokus jfokus2016)
Events on the outside, on the inside and at the core (jfokus jfokus2016)Events on the outside, on the inside and at the core (jfokus jfokus2016)
Events on the outside, on the inside and at the core (jfokus jfokus2016)
 
Raquel Guimaraes- Third party infrastructure as code
Raquel Guimaraes-  Third party infrastructure as codeRaquel Guimaraes-  Third party infrastructure as code
Raquel Guimaraes- Third party infrastructure as code
 
Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)
 
Serveless design patterns (VoxxedDays Luxembourg)
Serveless design patterns (VoxxedDays Luxembourg)Serveless design patterns (VoxxedDays Luxembourg)
Serveless design patterns (VoxxedDays Luxembourg)
 
Serverless Design Patterns
Serverless Design PatternsServerless Design Patterns
Serverless Design Patterns
 
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
 
Serverless Architectural Patterns
Serverless Architectural PatternsServerless Architectural Patterns
Serverless Architectural Patterns
 
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
 
Developing functional domain models with event sourcing (sbtb, sbtb2015)
Developing functional domain models with event sourcing (sbtb, sbtb2015)Developing functional domain models with event sourcing (sbtb, sbtb2015)
Developing functional domain models with event sourcing (sbtb, sbtb2015)
 
WJUG 210: Event Sourcing z Domain-Driven Design
WJUG 210: Event Sourcing z Domain-Driven DesignWJUG 210: Event Sourcing z Domain-Driven Design
WJUG 210: Event Sourcing z Domain-Driven Design
 
20 ways event-driven architectures can improve your development - Copy.pptx
20 ways event-driven architectures can improve your development - Copy.pptx20 ways event-driven architectures can improve your development - Copy.pptx
20 ways event-driven architectures can improve your development - Copy.pptx
 
THE MONSTER UNDER THE BED – OVERENGINEERING THE CLOUD
THE MONSTER UNDER THE BED – OVERENGINEERING THE CLOUDTHE MONSTER UNDER THE BED – OVERENGINEERING THE CLOUD
THE MONSTER UNDER THE BED – OVERENGINEERING THE CLOUD
 
Avoiding Friendly Fire in AWS
Avoiding Friendly Fire in AWSAvoiding Friendly Fire in AWS
Avoiding Friendly Fire in AWS
 
Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019
Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019
Kafka as an Event Store (Guido Schmutz, Trivadis) Kafka Summit NYC 2019
 
Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?Kafka as an event store - is it good enough?
Kafka as an event store - is it good enough?
 
AWS Lambda
AWS LambdaAWS Lambda
AWS Lambda
 

Recently uploaded

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 

Recently uploaded (20)

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 

CQRS and Event Sourcing in the AWS Cloud