Order Stock Payment
1
SYNCHRONOUSMESSAGES
Request an order
check stock
Calculate total price
2
3
Babel Coder
Babel Coder
https://www.babelcoder.com
23.
Order Stock Payment
SYNCHRONOUSMESSAGES
check stock
Calculate total price
2
3
POST <STOCK_IP>/products/<ID>
POST <PAYMENT_IP>/checkout
Babel Coder
Babel Coder
https://www.babelcoder.com
Order Stock Payment
APIGATEWAY āļāļ·āļāļāļ°āđāļĢ
POST <GATEWAY_IP>/orders
POST /orders
A
P
I
G
a
t
e
w
a
y
Babel Coder
Babel Coder
https://www.babelcoder.com
Babel Coder
Babel Coder
https://www.babelcoder.com
TRADITIONALDATA STORAGE
Service
Database
Records
Update
Old Data
āđāļāļāļēāļĢāļāļąāļāļāļķāļāļāđāļāļĄāļđāļĨāļāļāļāļēāļāļāđāļāļĄāļđāļĨāđāļāļāļāļēāļĢāđāļāļāļāļĩāļāļąāļāļāđāļāļĄāļđāļĨāđāļāļīāļĄāļāđāļ§āļĒāļāđāļāļĄāļđāļĨāđāļŦāļĄāđ āļāļĢāļāļĩāđāļāđāļāļāļĩāđāļĢāļēāđāļĄāđāļŠāļēāļĄāļēāļĢāļāļāļĢāļēāļāđāļāđāđāļĨāļĒāļ§āđāļēāļāđāļāļĄāļđāļĨāļāđāļāļ
āļŦāļāđāļēāļāļąāļāļāļ·āļāļāđāļāļĄāļđāļĨāđāļ āļĄāļĩāļāđāļēāđāļāļāđāļāđāļāđāļĢ āđāļāļīāļāļāļēāļĢāđāļāļĨāļĩāļĒāļāđāļāļĨāļāļāđāļēāđāļāļĢāļēāļ°āđāļŦāļāļļāđāļ āļĢāļ§āļĄāļāļķāļāđāļāļĢāđāļāļāļāļđāđāļāđāļēāđāļāļīāļāļāļēāļĢāļāļąāļāļāļāļāļāļąāļāļāļĨāđāļēāļ§
45.
Babel Coder
Babel Coder
https://www.babelcoder.com
Service
AUDITLOGS
Database
āđāļāļ·āļāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļąāļāđāļāđāļāļāļĢāļ°āļ§āļąāļāļīāļāļāļāļāļēāļĢāļāđāļēāđāļāļīāļāļāļēāļĢāļāđāļēāļ āđ āļ§āđāļēāđāļāļĢ āļāđāļēāđāļāļīāļāļāļēāļĢāđāļ āđāļāļ·āļāđāļŦāđāđāļāļīāļāļāļēāļĢāđāļāļĨāļĩāļĒāļāđāļāļĨāļāļŠāļīāļāđāļ āđāļĢāļēāļāļķāļāļāđāļāļāļĄāļĩ
Audit Logs āļāļĩāļāļēāļāđāļāļāđāļāļĨāđ āļāļēāļĢāļēāļāļŦāļĢāļ·āļāļāļēāļāļāđāļāļĄāļđāļĨ āđāļāļ·āļāļāļąāļāđāļāđāļāļāļąāļāļāļķāļāļāļēāļĢāđāļāļĨāļĩāļĒāļāđāļāļĨāļāļāļąāļ āđāļĄāļ·āļāđāļĢāļēāļāđāļāļāļāļēāļĢāđāļŦāđāļāđāļāļĄāļđāļĨāļāļĩāļāļđāļāļāļąāļāļāļķāļ
āđāļ State āļŠāļāļāļāļĨāđāļāļāļāļąāļāļāđāļāļĄāļđāļĨāđāļ Audit Logs āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļāđāļēāđāļāđāļāđāļēāļ Transaction
State
Audit Logs
46.
Babel Coder
Babel Coder
https://www.babelcoder.com
Service
DUPLICATEDDATA
Database
āļāđāļāļĄāļđāļĨāđāļ Audit Logs āļāļąāļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāļĄāļĩāļāļ§āļēāļĄāļāļđāļāļāđāļāļāđāļĄāđāļāļĒāđāļēāļāļĩāļŠāļļāļāđāļāđāļāļĒāļđāđāđāļāļĢāļđāļāđāļāļāļāļāļāļāļąāļāļāļķāļāļāļāļāļāđāļ§āļāđāļ§āļĨāļēāļ§āđāļēāđāļāļīāļāļāļēāļĢāļāļĢāļ°āļāđāļēāđāļ
āđ āļāđāļāļāļŦāļĨāļąāļāļāđāļēāļ āļāđāļēāļāļēāļĢāļāđāļēāđāļāļīāļāļāļēāļāļāļļāļāļāļĒāđāļēāļāļāļđāļāļāđāļāļ āļāđāļāļĄāļđāļĨāđāļ State āļāđāļāļ°āđāļāļāļāđāļāļĄāļđāļĨāļāļĩāļāļąāļāļāļķāļāđāļāļāļāļĨāļĨāļąāļāļāđāļŠāļļāļāļāđāļēāļĒāļāļāļāļāļēāļĢāļāđāļēāļāļēāļĄ
āļāļąāļāļāļāļāđāļ Audit Logs āļāļķāļāļāļĨāđāļēāļ§āđāļāđāļ§āđāļē State āļāļ·āļāļāđāļāļĄāļđāļĨāļāļĩāļāđāļēāļāđāļāļāļāļąāļ Audit Logs
State
Audit Logs
Duplicated
Single Source of Truth
47.
Babel Coder
Babel Coder
https://www.babelcoder.com
Service
EVENTSOURCING
Database
āđāļĢāļēāļāļķāļāđāļĄāđāļāļąāļāđāļāđāļāļāđāļāļĄāļđāļĨ State āļŦāļĢāļ·āļāļŠāļāļēāļāļ°āļŠāļļāļāļāđāļēāļĒāđāļāļāļēāļāļāđāļāļĄāļđāļĨāļāļĩāļāļāđāļāđāļ āļŦāļēāļāđāļāđāļāļąāļāđāļāđāļāļāļąāļāļāļķāļāļāļāļāđāļŦāļāļļāļāļēāļĢāļāđāļāđāļēāļ āđ āļāļĩāđāļāļīāļāļāļķāļ
āđāļāļāđāļ Event Logs (āļāđāļāđāļāļāļĩāļāļ°āđāļĢāļĩāļĒāļāļ§āđāļē Event Store) āđāļĄāļ·āļāđāļāļāđāļāļēāļĄāļāļĩāđāļĢāļēāļāđāļāļāļāļēāļĢāļŠāļāļēāļāļ°āļŦāļĢāļ·āļāļāđāļēāļŠāļļāļāļāđāļēāļĒāļāļāļāļāļēāļĢāļāđāļēāļāļēāļāđāļĢāļē
āļŠāļēāļĄāļēāļĢāļāļāđāļēāļāđāļēāđāļŦāļāļļāļāļēāļĢāļāđāļāđāļēāļ āđ āđāļŦāļĨāđāļēāļāļąāļāļāļāđāļāđāļāļĨāļĨāļąāļāļāđāļŠāļļāļāļāđāļēāļĒāļāļāļāļĄāļēāđāļāđ
Event Logs / Event Store
Replay
State / Object
āđāļāđāļĨāļ° Record āđāļ Event Store āļāļ°āđāļāļ
Immutable Data āļāļ·āļāđāļĄāđāļŠāļēāļĄāļēāļĢāļāđāļāļĨāļĩāļĒāļāđāļāļĨāļ
āļāđāļāļĄāļđāļĨāđāļāđ
ORCHESTRATION-BASED SAGA
Orchestrator
Order
Stock
Payment
T1: Orderrequested
Saga
Log
ORDER_REQUESTED
1.
T3: Check status requested
3. CHECK_STOCK_REQUESTED
2. ORDER_CREATED
4. STOCK_RESERVED
6. PAYMENT_APPROVED
T5: Payment requested
5. PAYMENT_REQUESTED
T6: Payment approved
7. O
RD
ER_
RESERV
ED
T2: Order created
T4: Stock reserved
T7: Order reserved
Babel Coder
Babel Coder
https://www.babelcoder.com
64.
COMPENSATING TRANSACTIONS
Orchestrator
Order
Stock
Payment
T1: Orderrequested
Saga
Log
ORDER_REQUESTED
1.
T3: Check status requested
3. CHECK_STOCK_REQUESTED
2. ORDER_CREATED
4. STOCK_REJECTED
C3: -
C2: -
T2: Order created
T4: Stock rejected
C1: Order cancelled
5
.
O
R
D
E
R
_
C
A
N
C
E
L
L
E
D
Babel Coder
Babel Coder
https://www.babelcoder.com
C4: -