Slide 1

Slide 1 text

EVENT-DRIVEN ARCHITECTURE

Slide 2

Slide 2 text

EKO KURNIAWAN KHANNEDY ▸ Senior Principal R&D Engineer at Blibli.com ▸ Part of R&D Team ▸ [email protected] ▸ JVM User Group Indonesia Committee ▸ Spring Cloud Contributor EVENT-DRIVEN ARCHITECTURE

Slide 3

Slide 3 text

MONOLITH FIRST LARGE MONOLITH APPLICATION EVENT-DRIVEN ARCHITECTURE

Slide 4

Slide 4 text

MONOLITH MODULES ORDER SERVICE CUSTOMER 
 SERVICE MERCHANT
 SERVICE CART
 SERVICE CONTENT
 SERVICE ... EVENT-DRIVEN ARCHITECTURE

Slide 5

Slide 5 text

MONOLITH PROBLEM ▸ The large monolithic code base intimidates developers. ▸ Overloaded IDE & web container. ▸ Scaling the application can be difficult. ▸ Requires a long-term commitment to a technology stack. EVENT-DRIVEN ARCHITECTURE

Slide 6

Slide 6 text

STRANGLER APPLICATION LEGACY
 SYSTEM ... CUSTOMER 
 SERVICE EVENT-DRIVEN ARCHITECTURE https://www.martinfowler.com/bliki/StranglerApplication.html

Slide 7

Slide 7 text

MICROSERVICES ERA ORDER MANAGEMENT CUSTOMER 
 MANAGEMENT MERCHANT
 MANAGEMENT CART
 MANAGEMENT CONTENT
 MANAGEMENT ... EVENT-DRIVEN ARCHITECTURE

Slide 8

Slide 8 text

TYPE OF MICROSERVICES MESSAGE
 SERVICE RISK
 SERVICE ... PRODUCT
 SERVICE MEMBER
 SERVICE PAYMENT
 SERVICE INVENTORY
 SERVICE ORDER 
 SERVICE ... UTILITY MASTER DATA CART
 SERVICE FLASHSALE 
 SERVICE ... ORCHESTRATOR EVENT-DRIVEN ARCHITECTURE

Slide 9

Slide 9 text

API DRIVEN / ORCHESTRATION PATTERN Checkout Cart Create Payment CART
 SERVICE ORDER 
 SERVICE PAYMENT
 SERVICE Create Order EVENT-DRIVEN ARCHITECTURE

Slide 10

Slide 10 text

ORCHESTRATION PATTERN PROBLEM Checkout Cart Send Email Create Payment CART
 SERVICE ORDER 
 SERVICE MESSAGE
 SERVICE PAYMENT
 SERVICE Create Order EVENT-DRIVEN ARCHITECTURE

Slide 11

Slide 11 text

EVENT DRIVEN / CHOREOGRAPHY PATTERN Checkout Cart Send Email Create Payment CART
 SERVICE ORDER 
 SERVICE MESSAGE
 SERVICE PAYMENT
 SERVICE Create Order CART EVENT EVENT-DRIVEN ARCHITECTURE

Slide 12

Slide 12 text

EVENT DRIVEN / CHOREOGRAPHY PATTERN Checkout Cart Send Email Create Payment CART
 SERVICE ORDER 
 SERVICE MESSAGE
 SERVICE PAYMENT
 SERVICE Create Order CART EVENT RISK
 SERVICE Calculate Risk Score EVENT-DRIVEN ARCHITECTURE

Slide 13

Slide 13 text

CHOREOGRAPHY PATTERN PROBLEM Checkout Cart Send Email Create Payment CART
 SERVICE ORDER 
 SERVICE MESSAGE
 SERVICE PAYMENT
 SERVICE Create Order CART EVENT RISK
 SERVICE Calculate Risk Score EVENT-DRIVEN ARCHITECTURE

Slide 14

Slide 14 text

EVENT-CARRIED STATE TRANSFER Checkout Cart Send Email Create Payment CART
 SERVICE ORDER 
 SERVICE MESSAGE
 SERVICE PAYMENT
 SERVICE Create Order FULL CART EVENT RISK
 SERVICE Calculate Risk Score CART DATA CART DATA CART DATA CART DATA EVENT-DRIVEN ARCHITECTURE

Slide 15

Slide 15 text

EVENT-DRIVEN ARHITECTURE EVENT-CARRIED STATE TRANSFER ▸ Good Part ▸ Decoupling ▸ Reduced load on producer ▸ Bad Part ▸ Replicated Data ▸ Eventual Consistency

Slide 16

Slide 16 text

EVENT-DRIVEN MICROSERVICES CART
 SERVICE ORDER
 SERVICE MEMBER
 SERVICE MERCHANT
 SERVICE RISK
 SERVICE ... MESSAGE BROKER API GATEWAY EVENT-DRIVEN ARCHITECTURE

Slide 17

Slide 17 text

EVENT VS COMMAND

Slide 18

Slide 18 text

IDEMPOTENT

Slide 19

Slide 19 text

SAME CALL REPEATEDLY WILL PRODUCE THE SAME RESULT. IN OTHER WORDS, MAKING MULTIPLE IDENTICAL REQUESTS HAS THE SAME EFFECT AS MAKING A SINGLE REQUEST What is idempotent mean? BLIBLI WALLET ARCHITECTURE https://www.restapitutorial.com/lessons/idempotency.html

Slide 20

Slide 20 text

EVENT-DRIVEN ARHITECTURE IDEMPOTENT EVENT ▸ SaveMemberEvent ▸ MemberBalanceChangedEvent ▸ SaveOrderEvent ▸ SavePaymentEvent ▸ MemberAddressChangedEvent ▸ ...

Slide 21

Slide 21 text

EVENT-DRIVEN ARHITECTURE NON IDEMPOTENT EVENT ▸ IncreaseMemberBalanceEvent ▸ DecreaseMemberBalanceEvent ▸ SendAnEmail ▸ SendOrderNotification ▸ ...

Slide 22

Slide 22 text

CQRS (COMMAND QUERY RESPONSIBILITY SEGREGATION) https://martinfowler.com/bliki/CQRS.html

Slide 23

Slide 23 text

NON CQRS SERVICE DATASOURCE EVENT-DRIVEN ARHITECTURE Write Request Read Request

Slide 24

Slide 24 text

DATASOURCE CQRS - SEPARATED COMPONENT COMMAND
 MODEL EVENT-DRIVEN ARHITECTURE Write Request Read Request QUERY
 MODEL

Slide 25

Slide 25 text

EVENT-DRIVEN IN CQRS API GATEWAY MONGODB PRODUCT SERVICE PRODUCT SEARCH SERVICE ELASTICSEARCH APACHE KAFKA Write Request EVENT-DRIVEN ARHITECTURE Read Request Produce Event Consume Event

Slide 26

Slide 26 text

EVENT AGGREGATION

Slide 27

Slide 27 text

EVENT-DRIVEN ARHITECTURE EVENT AGGREGATION PROBLEM ▸ How to aggregate data from several services? https://www.enterpriseintegrationpatterns.com/patterns/messaging/Aggregator.html

Slide 28

Slide 28 text

AGGREGATOR SERVICE API GATEWAY DATASTORE AGGREGATOR SERVICE MESSAGE BROKER Read Aggregate Data Aggregate and Save It Receive All Events EVENT-DRIVEN ARHITECTURE Get Aggregate Data

Slide 29

Slide 29 text

THE CHALLENGES

Slide 30

Slide 30 text

EVENT-DRIVEN ARHITECTURE THE CHALLENGES OF EVENT-DRIVEN ARCHITECTURE ▸ Asynchronous ▸ Message Schema ▸ Versioning ▸ Tracing ▸ Message Order ▸ Consumer Complexity ▸ Message Broker

Slide 31

Slide 31 text

BLIPAY

Slide 32

Slide 32 text

https://www.blibli.com/member/blipay/

Slide 33

Slide 33 text

SAMPLE EVENT-DRIVEN IN BLIPAY ▸ Register new merchant ▸ Register new member ▸ Refund member cash ▸ Get member + balance ▸ Receive payment confirmation from Bank ▸ … EVENT-DRIVEN ARHITECTURE

Slide 34

Slide 34 text

REGISTER NEW MERCHANT BLIPAY-API BLIPAY-MEMBER BLIPAY- MERCHANT BLIPAY-CORE BLIPAY-PAYMENT BLIPAY- NOTIFICATION BLIPAY- PROMOTION APACHE KAFKA 1. HTTP Request 2. HTTP Request 3. SaveMerchantEvent 4. SaveMerchantEvent EVENT-DRIVEN ARHITECTURE

Slide 35

Slide 35 text

REGISTER NEW MEMBER BLIPAY-API BLIPAY-MEMBER BLIPAY- MERCHANT BLIPAY-CORE BLIPAY-PAYMENT BLIPAY- NOTIFICATION BLIPAY- PROMOTION APACHE KAFKA 1. HTTP Request 2. HTTP Request 3. SaveMemberEvent 4. SaveMemberEvent 4. SaveMemberEvent EVENT-DRIVEN ARHITECTURE

Slide 36

Slide 36 text

REFUND MEMBER CASH BLIPAY-API BLIPAY-MEMBER BLIPAY- MERCHANT BLIPAY-CORE BLIPAY-PAYMENT BLIPAY- NOTIFICATION BLIPAY- PROMOTION APACHE KAFKA 1. HTTP Request 2. HTTP Request 4. SaveBalanceEvent 3. Some Events 4. SaveTransactionEvent EVENT-DRIVEN ARHITECTURE

Slide 37

Slide 37 text

GET MEMBER + BALANCE BLIPAY-API BLIPAY-MEMBER BLIPAY- MERCHANT BLIPAY-CORE BLIPAY-PAYMENT BLIPAY- NOTIFICATION BLIPAY- PROMOTION APACHE KAFKA 1. HTTP Request 2. HTTP Request EVENT-DRIVEN ARHITECTURE

Slide 38

Slide 38 text

RECEIVE PAYMENT FROM BANK BLIPAY-API BLIPAY-MEMBER BLIPAY- MERCHANT BLIPAY-CORE BLIPAY-PAYMENT BLIPAY- NOTIFICATION BLIPAY- PROMOTION APACHE KAFKA 1. HTTP Request 2. HTTP Request 3. SavePaymentEvent 4. SavePaymentEvent 4. SavePaymentEvent 5. SaveBalanceEvent 6. SaveBalanceEvent EVENT-DRIVEN ARHITECTURE

Slide 39

Slide 39 text

ANY QUESTION? https://www.blibli.com/page/karir/ EVENT-DRIVEN ARHITECTURE https://medium.com/bliblidotcom-techblog