SlideShare uma empresa Scribd logo
1CONFIDENTIAL
DISTRIBUTED TRANSACTIONS
IN SOA AND MICROSERVICES
KANSTANTSIN SLISENKA
LEAD SOFTWARE ENGINEER
NOV 9, 2017
2CONFIDENTIAL
kanstantsin_slisenka@epam.com
Kanstantsin Slisenka
Java Team Lead
Financial services, trading solutions
Speaker at: Minsk Java Tech Talks, IT Week, SEC Online,
Java Professionals
github.com/kslisenko
3CONFIDENTIAL
AGENDA
Local transactions1
Distributed transactions2
Compensations: SAGA pattern3
Live demo4
4CONFIDENTIAL
WHY DO WE NEED
TRANSACTIONS?
5CONFIDENTIAL
WHY DO WE NEED TRANSACTIONS?
New order created Payment received Product shipped
Data must be in known state anytime
6CONFIDENTIAL
Application
Business workflows
Infrastructure
Transactions in file systems, databases,
message brokers, caches, application servers
7CONFIDENTIAL
Transaction processing is
based on logging of
states and
transitions
HOW IT WORKS
8CONFIDENTIAL
Transaction log
• Always in known state
• States and transitions are logged
• Log can be used for recovery
DATABASE TRANSACTION AS STATE MACHINE
begin in progress
commit
rollback
INSERT UPDATE DELETE commitbegin
9CONFIDENTIAL
ACID TRANSACTION GUARANTEES
Atomicity
All or nothing
Write-ahead log
10CONFIDENTIAL
ACID TRANSACTION GUARANTEES
Atomicity
All or nothing
Write-ahead log
Consistency
Data always in valid state
Constraints
11CONFIDENTIAL
ACID TRANSACTION GUARANTEES
Atomicity
All or nothing
Write-ahead log
Consistency
Data always in valid state
Constraints
Isolation
Visibility of concurrent actions
Locking
12CONFIDENTIAL
ACID TRANSACTION GUARANTEES
Consistency
Data always in valid state
Constraints
Isolation
Visibility of concurrent actions
Locking
Durability
Changes become permanent
Write-ahead log
Atomicity
All or nothing
Write-ahead log
13CONFIDENTIAL
Transactions guarantee
the data to always be
in valid state
14CONFIDENTIAL
HOW IT WORKS?
15CONFIDENTIAL
TRAVEL BOOKING
EXAMPLE
16CONFIDENTIAL
Book trip
1. Book hotel
2. Book flight
3. Hire rental car
4. Record booking
17CONFIDENTIAL
TRAVEL BOOKING SYSTEM
DBBackend
browser
hotels flights cars bookings
18CONFIDENTIAL
TRAVEL BOOKING TRANSACTION
hotels flights cars bookings
DB
Action Rollback action
19CONFIDENTIAL
TRAVEL BOOKING TRANSACTION
Begin
hotels flights cars bookings
DB
Action Rollback action
begin
20CONFIDENTIAL
TRAVEL BOOKING TRANSACTION
Begin
hotels flights cars bookings
DB
Action Rollback action
begin
room_id=15
status=booked, traveler=Kostia
room_id=15
status=free, traveler=null
LOCK
UPDATE
21CONFIDENTIAL
TRAVEL BOOKING TRANSACTION
Begin
hotels flights cars bookings
DB
Action Rollback action
begin
room_id=15
status=booked, traveler=Kostia
room_id=15
status=free, traveler=null
seat_id=17c
status=booked, traveler=Kostia
seat_id=17c
status=free, traveler=null
LOCK
UPDATE
LOCK
UPDATE
22CONFIDENTIAL
TRAVEL BOOKING TRANSACTION
Begin
hotels flights cars bookings
DB
Action Rollback action
begin
room_id=15
status=booked, traveler=Kostia
room_id=15
status=free, traveler=null
seat_id=17c
status=booked, traveler=Kostia
seat_id=17c
status=free, traveler=null
car_num=1234AA7
status=booked, traveler=Kostia
car_num=1234AA7
status=free, traveler=null
LOCK
UPDATE
LOCK
UPDATE
LOCK
UPDATE
23CONFIDENTIAL
TRAVEL BOOKING TRANSACTION
Begin
hotels flights cars bookings
DB
Action Rollback action
begin
room_id=15
status=booked, traveler=Kostia
room_id=15
status=free, traveler=null
seat_id=17c
status=booked, traveler=Kostia
seat_id=17c
status=free, traveler=null
car_num=1234AA7
status=booked, traveler=Kostia
car_num=1234AA7
status=free, traveler=null
INSERT traveler=Kostia, room_id=15,
seat_id=17c, car_num=1234AA7
DELETE traveler=Kostia, room_id=15,
seat_id=17c, car_num=1234AA7
LOCK
UPDATE
LOCK
UPDATE
LOCK
UPDATE
LOCK
UPDATE
24CONFIDENTIAL
TRAVEL BOOKING TRANSACTION
Begin
hotels flights cars bookings
DB
Action Rollback action
begin
room_id=15
status=booked, traveler=Kostia
room_id=15
status=free, traveler=null
seat_id=17c
status=booked, traveler=Kostia
seat_id=17c
status=free, traveler=null
car_num=1234AA7
status=booked, traveler=Kostia
car_num=1234AA7
status=free, traveler=null
INSERT traveler=Kostia, room_id=15,
seat_id=17c, car_num=1234AA7
DELETE traveler=Kostia, room_id=15,
seat_id=17c, car_num=1234AA7
commit
LOCK
UPDATE
LOCK
UPDATE
LOCK
UPDATE
LOCK
UPDATE
Commit
25CONFIDENTIAL
TRAVEL BOOKING TRANSACTION
Begin
hotels flights cars bookings
DB
UPDATE UPDATE UPDATE UPDATE
Rollback
Action Rollback action
begin
room_id=15
status=booked, traveler=Kostia
room_id=15
status=free, traveler=null
seat_id=17c
status=booked, traveler=Kostia
seat_id=17c
status=free, traveler=null
car_num=1234AA7
status=booked, traveler=Kostia
car_num=1234AA7
status=free, traveler=null
INSERT traveler=Kostia, room_id=15,
seat_id=17c, car_num=1234AA7
DELETE traveler=Kostia, room_id=15,
seat_id=17c, car_num=1234AA7
rollback
LOCK LOCK LOCK LOCK
26CONFIDENTIAL
NOT ONLY IN DATABASES
TRANSACTIONS ARE
27CONFIDENTIAL
• Isolation levels
• Locking
• Commit logs
• Transactions
– ONE and TWO phase
28CONFIDENTIAL
Cache
Messages
Transactions
Subscriptions
ACKs, …
• Transacted sessions
• JMS attributes
– JMSXConsumerTXID
– JMSXProducerTXID
29CONFIDENTIAL
AGENDA
Local transactions1
Distributed transactions2
Compensations: SAGA pattern3
Live demo4
30CONFIDENTIAL
Application
HTTP
REST
SOAP
WE WANT THIS
commit
31CONFIDENTIAL
Application
HTTP
REST
SOAP
OR THIS
rollback
32CONFIDENTIAL
Application
HTTP
REST
SOAP
WHAT ACTUALLY HAPPENS
commit
fail
commit
fail
33CONFIDENTIAL
34CONFIDENTIAL
35CONFIDENTIAL
Application
HTTP
REST
SOAP
Coordinator
36CONFIDENTIAL
Application
HTTP
REST
SOAP
Coordinator
37CONFIDENTIAL
WEB-SERVICE AS STATE MACHINE
/reserve
/confirm
/cancel
reserved
confirmed
cancelled
/reserve
/confirm
/cancel
timeout
2
1
Idempotent operations
38CONFIDENTIAL
2-PHASE COMMIT
JTA/XA
39CONFIDENTIAL
2-PHASE COMMIT ALGORITHM
begin in progress
commit
rollback
prepare
All changes
saved to log
Changes copied
to storage
Changes
cancelled
2
1
40CONFIDENTIAL
JTA AND XA SPECIFICATION
Java
application
41CONFIDENTIAL
Application server
JTA AND XA SPECIFICATION
Transaction
Manager
Java
application
42CONFIDENTIAL
Application server
JTA AND XA SPECIFICATION
Resource
manager
Resource
manager
Resource
manager
Transaction
Manager DB
JMS
?
Java
application
JDBC
CUSTOM
43CONFIDENTIAL
JTA AND XA SPECIFICATION
Resource
manager
Resource
manager
Resource
manager
Application server
Transaction
Manager DB
?
Java
application
begin
begin
begin
44CONFIDENTIAL
Application server
JTA AND XA SPECIFICATION
Resource
manager
Resource
manager
Resource
manager
Transaction
Manager DB
?
Java
application
update
update
update
45CONFIDENTIAL
Application server
JTA AND XA SPECIFICATION
Resource
manager
Resource
manager
Resource
manager
Transaction
Manager DB
?
Java
application
prepare
prepare
prepare
46CONFIDENTIAL
Application server
JTA AND XA SPECIFICATION
Resource
manager
Resource
manager
Resource
manager
Transaction
Manager DB
?
Java
application
commit
commit
commit
47CONFIDENTIAL
TM does all the job for us, but:
• Needs too many messages
• Doesn’t scale well
• Not all vendors support XA
48CONFIDENTIAL
AGENDA
Local transactions1
Distributed transactions2
Compensations: SAGA pattern3
Live demo4
49CONFIDENTIAL
WHAT IS SAGA?
50CONFIDENTIAL
SAGA EXAMPLE
Book hotel Book flight Book car
Cancel hotel Cancel flight
Confirm
booking
Fail! Retry
Retry failed
Start
Finish
Skip
51CONFIDENTIAL
SAGA TYPES
Central
coordinator
Routing slip
(peer-to-peer)
52CONFIDENTIAL
SAGA TYPES
Forward Backward
53CONFIDENTIAL
ACID
Availability
Consistency
Isolation
Durability
BASE
Basic Availability
Soft state
Eventual consistency
(Trading consistency for availability)
2-PHASE COMMIT SAGA
54CONFIDENTIAL
System is partitioned
CAP THEOREM
CONSISTENCY AVAILABILITY
Consistency
and
Availability
System is single node
55CONFIDENTIAL
AGENDA
Local transactions1
Distributed transactions2
Compensations: SAGA pattern3
Live demo4
56CONFIDENTIAL
Car
service
Frontend
Tier 1
Backend
Tier 2
Agency
DB
Hotels
DB
Flight
service
requests
responsescache
Distributed
transaction
JMS
endpoint
Remote
call
Local
call
JMS
queue
github.com/kslisenko/distributed-transactions
57CONFIDENTIAL
Frontend
Tier 1
Backend
cache
Tier 2
/bookTrip
requests
responses
Car
service
Agency
DB
Hotels
DB
Flight
service
Distributed
transaction
JMS
endpoint
Remote
call
Local
call
JMS
queue
/getTrips
github.com/kslisenko/distributed-transactions
58CONFIDENTIAL
Car
service
Frontend
Tier 1
Backend
cache
Tier 2
/bookTrip
Agency
DB
Hotels
DB
Flight
service
JMS
requests
responses
Distributed
transaction
JMS
endpoint
Remote
call
Local
call
JMS
queue
/getTrips
github.com/kslisenko/distributed-transactions
59CONFIDENTIAL
Car
service
Frontend
Tier 1
Backend
cache
Tier 2
/bookTrip
Agency
DB
Hotels
DB
Flight
service
requests
responses
JMS JMS
Distributed
transaction
JMS
endpoint
Remote
call
Local
call
JMS
queue
/getTrips
github.com/kslisenko/distributed-transactions
60CONFIDENTIAL
Frontend
Tier 1
Backend
cache
Tier 2
/bookTrip
requests
responses
Car
service
Agency
DB
Hotels
DB
Flight
service
JMS JMS
Distributed
transaction
JMS
endpoint
Remote
call
Local
call
JMS
queue
/getTrips
github.com/kslisenko/distributed-transactions
61CONFIDENTIAL
Frontend
Tier 1
Backend
cache
Tier 2
/bookTrip
requests
responses
Car
service
Agency
DB
Hotels
DB
Flight
service
JMS JMS
JMS
Distributed
transaction
JMS
endpoint
Remote
call
Local
call
JMS
queue
/getTrips
github.com/kslisenko/distributed-transactions
62CONFIDENTIAL
Frontend
Tier 1
Backend
cache
Tier 2
/bookTrip
requests
responses
Car
service
Agency
DB
Hotels
DB
Flight
serviceJMS
JMS JMS
JMS
/getTrips
Distributed
transaction
JMS
endpoint
Remote
call
Local
call
JMS
queue
github.com/kslisenko/distributed-transactions
63CONFIDENTIAL
LET’S GO!
64CONFIDENTIAL
CONCLUSION
1. State machines everywhere
2. Transactions everywhere
3. Design for failure
4. Rely on tools or handle by own
65CONFIDENTIAL
QUESTIONS?
THANK YOU!
KANSTANTSIN_SLISENKA@EPAM.COM

Mais conteúdo relacionado

Mais procurados

Saturn 2018: Managing data consistency in a microservice architecture using S...
Saturn 2018: Managing data consistency in a microservice architecture using S...Saturn 2018: Managing data consistency in a microservice architecture using S...
Saturn 2018: Managing data consistency in a microservice architecture using S...
Chris Richardson
 
Secure Design: Threat Modeling
Secure Design: Threat ModelingSecure Design: Threat Modeling
Secure Design: Threat Modeling
Narudom Roongsiriwong, CISSP
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
Stefan Norberg
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing
Inho Kang
 
Mucon: Not Just Events: Developing Asynchronous Microservices
Mucon: Not Just Events: Developing Asynchronous MicroservicesMucon: Not Just Events: Developing Asynchronous Microservices
Mucon: Not Just Events: Developing Asynchronous Microservices
Chris Richardson
 
Cloud Based Disaster Recovery (DRaaS)
Cloud Based Disaster Recovery (DRaaS)Cloud Based Disaster Recovery (DRaaS)
Cloud Based Disaster Recovery (DRaaS)
PT Datacomm Diangraha
 
A cheapskate's guide to Azure - Øredev 2022
A cheapskate's guide to Azure - Øredev 2022A cheapskate's guide to Azure - Øredev 2022
A cheapskate's guide to Azure - Øredev 2022
Karl Syvert Løland
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
Araf Karsh Hamid
 
Building Event Driven Systems
Building Event Driven SystemsBuilding Event Driven Systems
Building Event Driven Systems
WSO2
 
Process Automation Forum April 2021 - Practical Process Automation
Process Automation Forum April 2021 - Practical Process AutomationProcess Automation Forum April 2021 - Practical Process Automation
Process Automation Forum April 2021 - Practical Process Automation
Bernd Ruecker
 
MicroCPH - Managing data consistency in a microservice architecture using Sagas
MicroCPH - Managing data consistency in a microservice architecture using SagasMicroCPH - Managing data consistency in a microservice architecture using Sagas
MicroCPH - Managing data consistency in a microservice architecture using Sagas
Chris Richardson
 
Developing microservices with aggregates (SpringOne platform, #s1p)
Developing microservices with aggregates (SpringOne platform, #s1p)Developing microservices with aggregates (SpringOne platform, #s1p)
Developing microservices with aggregates (SpringOne platform, #s1p)
Chris Richardson
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
Chris Richardson
 
Microservices with Kafka Ecosystem
Microservices with Kafka EcosystemMicroservices with Kafka Ecosystem
Microservices with Kafka Ecosystem
Guido Schmutz
 
Complex event flows in distributed systems
Complex event flows in distributed systemsComplex event flows in distributed systems
Complex event flows in distributed systems
Bernd Ruecker
 
CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDD
Dennis Doomen
 
Logging and observability
Logging and observabilityLogging and observability
Logging and observability
Anton Drukh
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
The Software House
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
thinkddd
 
Big Data Architectural Patterns and Best Practices
Big Data Architectural Patterns and Best PracticesBig Data Architectural Patterns and Best Practices
Big Data Architectural Patterns and Best Practices
Amazon Web Services
 

Mais procurados (20)

Saturn 2018: Managing data consistency in a microservice architecture using S...
Saturn 2018: Managing data consistency in a microservice architecture using S...Saturn 2018: Managing data consistency in a microservice architecture using S...
Saturn 2018: Managing data consistency in a microservice architecture using S...
 
Secure Design: Threat Modeling
Secure Design: Threat ModelingSecure Design: Threat Modeling
Secure Design: Threat Modeling
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing
 
Mucon: Not Just Events: Developing Asynchronous Microservices
Mucon: Not Just Events: Developing Asynchronous MicroservicesMucon: Not Just Events: Developing Asynchronous Microservices
Mucon: Not Just Events: Developing Asynchronous Microservices
 
Cloud Based Disaster Recovery (DRaaS)
Cloud Based Disaster Recovery (DRaaS)Cloud Based Disaster Recovery (DRaaS)
Cloud Based Disaster Recovery (DRaaS)
 
A cheapskate's guide to Azure - Øredev 2022
A cheapskate's guide to Azure - Øredev 2022A cheapskate's guide to Azure - Øredev 2022
A cheapskate's guide to Azure - Øredev 2022
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 
Building Event Driven Systems
Building Event Driven SystemsBuilding Event Driven Systems
Building Event Driven Systems
 
Process Automation Forum April 2021 - Practical Process Automation
Process Automation Forum April 2021 - Practical Process AutomationProcess Automation Forum April 2021 - Practical Process Automation
Process Automation Forum April 2021 - Practical Process Automation
 
MicroCPH - Managing data consistency in a microservice architecture using Sagas
MicroCPH - Managing data consistency in a microservice architecture using SagasMicroCPH - Managing data consistency in a microservice architecture using Sagas
MicroCPH - Managing data consistency in a microservice architecture using Sagas
 
Developing microservices with aggregates (SpringOne platform, #s1p)
Developing microservices with aggregates (SpringOne platform, #s1p)Developing microservices with aggregates (SpringOne platform, #s1p)
Developing microservices with aggregates (SpringOne platform, #s1p)
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
 
Microservices with Kafka Ecosystem
Microservices with Kafka EcosystemMicroservices with Kafka Ecosystem
Microservices with Kafka Ecosystem
 
Complex event flows in distributed systems
Complex event flows in distributed systemsComplex event flows in distributed systems
Complex event flows in distributed systems
 
CQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDDCQRS and Event Sourcing, An Alternative Architecture for DDD
CQRS and Event Sourcing, An Alternative Architecture for DDD
 
Logging and observability
Logging and observabilityLogging and observability
Logging and observability
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
 
Big Data Architectural Patterns and Best Practices
Big Data Architectural Patterns and Best PracticesBig Data Architectural Patterns and Best Practices
Big Data Architectural Patterns and Best Practices
 

Semelhante a Distributed transactions in SOA and Microservices

Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...
Chris Richardson
 
#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
 
SVCC Developing Asynchronous, Message-Driven Microservices
SVCC Developing Asynchronous, Message-Driven Microservices  SVCC Developing Asynchronous, Message-Driven Microservices
SVCC Developing Asynchronous, Message-Driven Microservices
Chris Richardson
 
Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...
Chris Richardson
 
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
 
Microservices in Java and Scala (sfscala)
Microservices in Java and Scala (sfscala)Microservices in Java and Scala (sfscala)
Microservices in Java and Scala (sfscala)
Chris Richardson
 
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
confluent
 
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
 
Building and deploying microservices with event sourcing, CQRS and Docker (QC...
Building and deploying microservices with event sourcing, CQRS and Docker (QC...Building and deploying microservices with event sourcing, CQRS and Docker (QC...
Building and deploying microservices with event sourcing, CQRS and Docker (QC...
Chris Richardson
 
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
Chris Richardson
 
Oracle Code One: Events and commands: developing asynchronous microservices
Oracle Code One: Events and commands: developing asynchronous microservicesOracle Code One: Events and commands: developing asynchronous microservices
Oracle Code One: Events and commands: developing asynchronous microservices
Chris Richardson
 
Developing event-driven microservices with event sourcing and CQRS (london Ja...
Developing event-driven microservices with event sourcing and CQRS (london Ja...Developing event-driven microservices with event sourcing and CQRS (london Ja...
Developing event-driven microservices with event sourcing and CQRS (london Ja...
Chris Richardson
 
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
Oracle Korea
 
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
 
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with SagasJavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
Chris Richardson
 
Cloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant SoftwareCloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant Software
cornelia davis
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Chris Richardson
 
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Developing event-driven microservices with event sourcing and CQRS (Shanghai)Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Chris Richardson
 
From CRUD to messages: a true story
From CRUD to messages: a true storyFrom CRUD to messages: a true story
From CRUD to messages: a true story
Alessandro Melchiori
 
OReilly SACON2018 - Events on the outside, on the inside, and at the core
OReilly SACON2018 - Events on the outside, on the inside, and at the coreOReilly SACON2018 - Events on the outside, on the inside, and at the core
OReilly SACON2018 - Events on the outside, on the inside, and at the core
Chris Richardson
 

Semelhante a Distributed transactions in SOA and Microservices (20)

Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...
 
#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...
 
SVCC Developing Asynchronous, Message-Driven Microservices
SVCC Developing Asynchronous, Message-Driven Microservices  SVCC Developing Asynchronous, Message-Driven Microservices
SVCC Developing Asynchronous, Message-Driven Microservices
 
Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...
 
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)
 
Microservices in Java and Scala (sfscala)
Microservices in Java and Scala (sfscala)Microservices in Java and Scala (sfscala)
Microservices in Java and Scala (sfscala)
 
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
 
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)
 
Building and deploying microservices with event sourcing, CQRS and Docker (QC...
Building and deploying microservices with event sourcing, CQRS and Docker (QC...Building and deploying microservices with event sourcing, CQRS and Docker (QC...
Building and deploying microservices with event sourcing, CQRS and Docker (QC...
 
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
 
Oracle Code One: Events and commands: developing asynchronous microservices
Oracle Code One: Events and commands: developing asynchronous microservicesOracle Code One: Events and commands: developing asynchronous microservices
Oracle Code One: Events and commands: developing asynchronous microservices
 
Developing event-driven microservices with event sourcing and CQRS (london Ja...
Developing event-driven microservices with event sourcing and CQRS (london Ja...Developing event-driven microservices with event sourcing and CQRS (london Ja...
Developing event-driven microservices with event sourcing and CQRS (london Ja...
 
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
 
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?
 
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with SagasJavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
 
Cloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant SoftwareCloud Native: Designing Change-tolerant Software
Cloud Native: Designing Change-tolerant Software
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
 
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Developing event-driven microservices with event sourcing and CQRS (Shanghai)Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
 
From CRUD to messages: a true story
From CRUD to messages: a true storyFrom CRUD to messages: a true story
From CRUD to messages: a true story
 
OReilly SACON2018 - Events on the outside, on the inside, and at the core
OReilly SACON2018 - Events on the outside, on the inside, and at the coreOReilly SACON2018 - Events on the outside, on the inside, and at the core
OReilly SACON2018 - Events on the outside, on the inside, and at the core
 

Mais de Constantine Slisenka

Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...
Constantine Slisenka
 
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftLyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
Constantine Slisenka
 
What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)
Constantine Slisenka
 
What does it take to be an architect
What does it take to be an architectWhat does it take to be an architect
What does it take to be an architect
Constantine Slisenka
 
VoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backendVoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backend
Constantine Slisenka
 
Building scalable web socket backend
Building scalable web socket backendBuilding scalable web socket backend
Building scalable web socket backend
Constantine Slisenka
 
Latency tracing in distributed Java applications
Latency tracing in distributed Java applicationsLatency tracing in distributed Java applications
Latency tracing in distributed Java applications
Constantine Slisenka
 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming API
Constantine Slisenka
 
Database transaction isolation and locking in Java
Database transaction isolation and locking in JavaDatabase transaction isolation and locking in Java
Database transaction isolation and locking in Java
Constantine Slisenka
 
Networking in Java with NIO and Netty
Networking in Java with NIO and NettyNetworking in Java with NIO and Netty
Networking in Java with NIO and Netty
Constantine Slisenka
 
Profiling distributed Java applications
Profiling distributed Java applicationsProfiling distributed Java applications
Profiling distributed Java applications
Constantine Slisenka
 

Mais de Constantine Slisenka (11)

Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...Unlocking the secrets of successful architects: what skills and traits do you...
Unlocking the secrets of successful architects: what skills and traits do you...
 
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at LyftLyft talks #4 Orchestrating big data and ML pipelines at Lyft
Lyft talks #4 Orchestrating big data and ML pipelines at Lyft
 
What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)What does it take to be architect (for Cjicago JUG)
What does it take to be architect (for Cjicago JUG)
 
What does it take to be an architect
What does it take to be an architectWhat does it take to be an architect
What does it take to be an architect
 
VoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backendVoxxedDays Minsk - Building scalable WebSocket backend
VoxxedDays Minsk - Building scalable WebSocket backend
 
Building scalable web socket backend
Building scalable web socket backendBuilding scalable web socket backend
Building scalable web socket backend
 
Latency tracing in distributed Java applications
Latency tracing in distributed Java applicationsLatency tracing in distributed Java applications
Latency tracing in distributed Java applications
 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming API
 
Database transaction isolation and locking in Java
Database transaction isolation and locking in JavaDatabase transaction isolation and locking in Java
Database transaction isolation and locking in Java
 
Networking in Java with NIO and Netty
Networking in Java with NIO and NettyNetworking in Java with NIO and Netty
Networking in Java with NIO and Netty
 
Profiling distributed Java applications
Profiling distributed Java applicationsProfiling distributed Java applications
Profiling distributed Java applications
 

Último

UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 

Último (20)

UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 

Distributed transactions in SOA and Microservices