$30 off During Our Annual Pro Sale. View Details »

The Rise of Reactive Microservices

SQUER Solutions
June 15, 2022
200

The Rise of Reactive Microservices

WeAreDevelopers — Berlin

SQUER Solutions

June 15, 2022
Tweet

Transcript

  1. WeAreDevelopers 2022 — Berlin
    @duffleit

    View Slide

  2. David Leitner
    @duffleit
    Coding Architect
    [email protected]
    @duffleit

    View Slide

  3. @duffleit
    Somewhen in 2011.

    View Slide

  4. @duffleit
    User
    <μService>
    Account
    <μService>
    Legder
    <μService>
    WebBanking
    New Payment
    💸
    Perform Payment
    € 20, 00
    👧
    Lisa
    to
    David
    from
    transferMoney
    triggerPayment
    createTransactions

    View Slide

  5. @duffleit
    User
    <μService>
    Account
    <μService>
    Legder
    <μService>
    WebBanking
    Your payment was
    successfully executed.
    transferMoney
    triggerPayment
    createTransactions

    View Slide

  6. @duffleit
    User
    <μService>
    Account
    <μService>
    Legder
    <μService>
    WebBanking
    New Payment
    💸
    Perform Payment
    € 20, 00
    👧
    Lisa
    to
    David
    from
    transferMoney
    triggerPayment
    createTransactions <μService>
    Legder
    Legder
    <μService>

    View Slide

  7. @duffleit
    User
    <μService>
    Account
    <μService>
    Legder
    <μService>
    WebBanking
    Your payment was
    successfully executed.
    transferMoney
    triggerPayment
    createTransactions

    Retries
    Timeouts
    Circuit Breakers
    Synchronise

    View Slide

  8. First Generation of MicroServices
    Synchronously Integrated
    @duffleit

    View Slide

  9. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    <μService>
    Legder

    View Slide

  10. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    <μService>
    Legder

    View Slide

  11. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Queue
    <μService>
    Legder

    View Slide

  12. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Queue
    <μService>
    Legder

    View Slide

  13. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Queue
    <μService>
    Legder

    View Slide

  14. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Queue
    <μService>
    Legder

    View Slide

  15. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Queue
    <μService>
    Legder

    View Slide

  16. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions Queue
    <μService>
    Legder
    Your payment was
    accepted.

    View Slide

  17. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions Queue
    <μService>
    Legder
    Your payment was
    accepted.

    Legder
    <μService>

    View Slide

  18. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions Queue
    <μService>
    Legder
    Your payment was
    accepted.

    Legder
    <μService>

    View Slide

  19. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions Queue
    <μService>
    Legder
    Your payment was
    accepted.

    Legder
    <μService>
    Queue

    View Slide

  20. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions Queue
    <μService>
    Legder
    Your payment was
    accepted.

    Legder
    <μService>
    Queue
    Queue

    View Slide

  21. Second Generation of MicroServices
    Message-Driven and Asynchronously
    Integrated
    @duffleit

    View Slide

  22. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Legder
    <μService>
    Queue
    Queue
    Queue

    View Slide

  23. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Legder
    <μService>
    Queue
    Queue
    Queue
    As a Customer, I want my
    transaction to be booked
    by the ledger.

    View Slide

  24. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Legder
    <μService>
    Queue
    Queue
    Queue
    As a Customer, I want the
    account service to update
    my balance.

    View Slide

  25. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    transferMoney
    triggerPayment
    createTransactions
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Legder
    <μService>
    Queue
    Queue
    Queue
    As a Customer, I want
    to transfer money to
    someone else.

    View Slide

  26. The Entity Service
    Antipattern.
    @duffleit

    View Slide

  27. Let's create Services along
    Customer Journeys.
    @duffleit

    View Slide

  28. @duffleit
    “ On the Criteria To Be Used in
    Decomposing Systems into Modules
    — Parnas, 1972

    View Slide

  29. Let's create Services along
    Customer Journeys.
    @duffleit

    View Slide

  30. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Legder
    <μService>
    Payments
    <μService>
    Domain Services
    Journey Services
    As a Customer, I want
    to transfer money to
    someone else.

    View Slide

  31. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Legder
    <μService>
    Web-BFF
    <μService>
    Domain Services
    Backend For Frontends
    As a Customer, I want
    to transfer money to
    someone else.
    Mobile-BFF
    <μService>
    Mobile Banking
    € 20, 00
    Pay
    Payment Flow
    Payment Flow

    View Slide

  32. @duffleit
    No Domain Logic in
    Backend For Frontends.
    It's about Ui-Specific Aggregation, to get rid
    of over-fetching and over-requesting.

    View Slide

  33. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Legder
    <μService>
    Payments
    <μService>
    Domain Services
    Journey Services

    View Slide

  34. @duffleit
    User
    <μService>
    Account
    <μService>
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Legder
    <μService>
    Payments
    <μService>
    Domain Services
    Journey Services
    Balance
    <μService>

    View Slide

  35. @duffleit

    Customer Journey & Entity Data
    Mismatch Problem

    View Slide

  36. @duffleit
    Users Accounts Transactions
    Entities
    Customer Journeys
    Payments
    Onboarding
    Fraud Detection

    View Slide

  37. @duffleit
    User Account
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Transactions
    Payments
    Domain Services
    Journey Services
    Onboarding Fraud Detection
    User Account
    Account Transactions

    View Slide

  38. @duffleit
    User Account
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Transactions
    Payments
    Domain Services
    Journey Services
    Onboarding Fraud Detection
    User Account
    Account Transactions

    ⚡ ⚡

    View Slide

  39. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User Account
    Account Transactions
    User
    Account
    Transactions
    Service Autnomy

    View Slide

  40. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User Account
    Account Transactions
    User
    Account
    Transactions
    Data Duplication

    View Slide

  41. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User Account
    Account Transactions
    User
    Account
    Transactions
    Data Syncronisation
    🤯

    View Slide

  42. @duffleit
    clarify who owns which Data.
    Always

    View Slide

  43. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User Account
    Account Transactions
    User
    Account
    Transactions

    View Slide

  44. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Synchronous Calls
    😔

    View Slide

  45. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Synchronous Calls
    😔

    View Slide

  46. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User Cache
    Account
    Transactions
    Synchronous Calls
    😔

    View Slide

  47. @duffleit
    There must be a better solution
    🤔

    View Slide

  48. @duffleit
    There must be a better solution
    🤔
    Payments
    User
    Onboarding
    User
    pull

    View Slide

  49. @duffleit
    There must be a better solution
    🤔
    Payments
    User
    Onboarding
    User
    push

    View Slide

  50. @duffleit
    Payments
    Onboarding
    User Aggregate User Readmodel
    UserChangedEvent
    UserChange
    Command
    That's CQRS in a nutshell
    🥜
    update

    View Slide

  51. @duffleit
    Payments
    Onboarding
    User Aggregate User Readmodel
    UserChangedEvent
    UserChange
    Command
    Stream

    View Slide

  52. @duffleit
    Payments
    Onboarding
    User Aggregate User Readmodel
    UserChange
    Command
    Stream
    UserChangedEvent
    transform
    apply

    View Slide

  53. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  54. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  55. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  56. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  57. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream
    Projections

    View Slide

  58. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream
    Projections

    View Slide

  59. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream
    Projections

    View Slide

  60. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream
    Projections

    View Slide

  61. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  62. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream
    Projections

    View Slide

  63. @duffleit
    But didn't we just introduce
    Eventual Consistency?

    View Slide

  64. @duffleit
    The different faces of
    Eventual Consistency

    View Slide

  65. @duffleit
    Eventual Consistency
    Eventual Divergence
    Dashboard
    User (age: 22)
    UserChanged (age: 21)
    UserChanged (age: 22)
    Profile
    User (age: 21)

    timestamp
    timestamp

    View Slide

  66. @duffleit
    Eventual Consistency
    Eventual Divergence
    Eventual Variance
    Ledger
    Stream
    Transaction (+10€)
    🔥

    View Slide

  67. @duffleit
    Eventual Consistency
    Eventual Divergence
    Eventual Variance
    Ledger
    Dashboard
    Stream
    🔥 Transaction (+10€) Transaction (+10€)
    Balance: 20€

    View Slide

  68. @duffleit
    Eventual Consistency
    Eventual Divergence
    Eventual Variance
    Eventual Latency
    Service B
    Stream
    UserChanged (age: 21) UserChanged (age: 22)
    Profile
    User (age: 21)
    Dashboard
    User (age: 21)
    User (age: 22)

    View Slide

  69. Single User Context
    @duffleit
    Eventual Consistency
    Eventual Divergence
    Eventual Variance
    Eventual Latency
    Service B
    Stream
    UserChanged (age: 21) UserChanged (age: 22)
    Profile
    User (age: 21)
    Dashboard
    User (age: 21)
    User (age: 22)
    🕰

    View Slide

  70. @duffleit
    Eventual Consistency
    Eventual Divergence
    Eventual Variance
    Eventual Latency
    same events, different results.
    same events, different quantity.
    same events, different realisation.
    Ordering Guarantees
    Optimistic UIs
    At-Least-Once
    Delivery
    Deduplication
    Mechanisms

    View Slide

  71. @duffleit
    tl/dr:
    Eventual Consistency is
    often used as a
    knock-out argument
    @duffleit

    View Slide

  72. @duffleit
    tl/dr:
    Eventual Consistency is
    often used as a
    knock-out argument
    but isn't, in most cases.
    @duffleit

    View Slide

  73. @duffleit
    WebBanking
    New Payment
    💸
    € 20, 00
    👧
    Lisa
    to
    David
    from
    Perform Payment
    Payments
    Journey Services
    Onboarding Fraud Detection
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream
    Projections

    View Slide

  74. @duffleit
    Mobile Banking Usage
    93% — Show balance & last transactions
    3% — Initiate new payment
    4% — Any other functionality

    View Slide

  75. @duffleit
    Payments
    Journey Services
    Onboarding Overview
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  76. @duffleit
    Payments
    Journey Services
    Onboarding Overview
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  77. @duffleit
    Payments
    Journey Services
    Onboarding Overview
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  78. @duffleit
    Payments
    Journey Services
    Onboarding Overview
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  79. @duffleit
    Payments
    Journey Services
    Onboarding Overview
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream

    View Slide

  80. @duffleit
    Payments
    Journey Services
    Onboarding Overview
    User
    Account
    Account
    Transactions
    User
    Account
    Transactions
    Stream
    93% of what our users need
    can still be performed.
    WebBanking
    Current Balance: 200€
    👧
    You sent Lisa 100€
    Christoph sent you 300€

    View Slide

  81. @duffleit
    WebBanking
    Current Balance: 200€
    👧
    You sent Lisa 100€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    Overview
    Transactions
    We can easily scale
    horizontally.

    View Slide

  82. @duffleit
    WebBanking
    Current Balance: 200€
    👧
    You sent Lisa 100€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    Overview
    Transactions
    We can easily scale
    horizontally.

    View Slide

  83. @duffleit
    WebBanking of David
    Current Balance: 300€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment

    View Slide

  84. @duffleit
    WebBanking of David
    Current Balance: 300€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment

    View Slide

  85. @duffleit
    WebBanking of David
    Current Balance: 300€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment

    View Slide

  86. @duffleit
    WebBanking of David
    Current Balance: 300€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment

    View Slide

  87. @duffleit
    WebBanking of David
    Current Balance: 300€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment

    View Slide

  88. @duffleit
    WebBanking of David
    Current Balance: 300€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment

    View Slide

  89. @duffleit
    WebBanking of David
    Current Balance: 300€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment

    View Slide

  90. @duffleit
    WebBanking of David
    Current Balance: 300€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment
    👧
    Lisa sent you 20€

    View Slide

  91. @duffleit
    WebBanking of David
    Current Balance: 320€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment
    👧
    Lisa sent you 20€

    View Slide

  92. @duffleit
    WebBanking of David
    Current Balance: 320€
    Christoph sent you 300€
    Payments
    Journey Services
    Onboarding Overview
    User Account
    Transactions
    User
    Account
    Transactions
    Stream
    WebBanking of Lisa
    👧
    New Payment
    💸
    € 20, 00 David
    to
    👧
    Lisa
    from
    Perform Payment
    👧
    Lisa sent you 20€
    GraphQL
    subscriptions
    mutations
    Out-of-the-box
    real-time
    capabilities.

    View Slide

  93. @duffleit
    WebBanking of David
    Current Balance: 320€
    Christoph sent you 300€
    Payments
    Journey Services
    Legacy System
    Accounts
    Stream
    👧
    Lisa sent you 20€
    User
    😮 💨😮 💨
    😮 💨
    Change Data
    Capture (CDC) User User

    View Slide

  94. Third Generation of MicroServices
    Built on Reactive Data-Streams
    @duffleit
    High Resilience
    🔥
    Horizontal Scaling ↔
    Real Time Integration

    Good Integration with Legacy Systems
    🏚

    View Slide

  95. Dimensions of Scaling
    @duffleit
    Vertical
    Horizontal
    Service

    View Slide

  96. Dimensions of Scaling
    @duffleit
    Vertical
    Horizontal
    Service

    View Slide

  97. Dimensions of Scaling
    Vertical
    Horizontal
    Service Service' Service''
    Stream

    View Slide

  98. Dimensions of Scaling
    Vertical
    Horizontal
    Service Service' Service''
    Stream

    View Slide

  99. Dimensions of Scaling
    Vertical
    Horizontal
    Service Service' Service''
    Sharding

    View Slide

  100. Dimensions of Scaling
    Vertical
    Horizontal
    Service
    Service'
    Service''
    Sharding
    Users A-H
    Users I-P
    Users Q-Z

    View Slide

  101. Dimensions of Scaling
    Vertical
    Horizontal
    Service
    Service'
    Service''
    User from
    User from
    Users from
    Service Service
    Service
    Sharding

    View Slide

  102. @duffleit
    UserTriggeredPayment

    View Slide

  103. @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment

    View Slide

  104. @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment

    View Slide

  105. @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments

    View Slide

  106. @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    ValidPaymentReceived

    View Slide

  107. @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2

    View Slide

  108. Fraud Detection Fraud Detection
    @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2
    Fraud Detection
    PaymentCheckedAgainstFraud

    View Slide

  109. Fraud Detection Fraud Detection
    @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2
    Fraud Detection
    Stream
    PaymentChecked
    Partition 0 Partition 1 Partition 2

    View Slide

  110. Fraud Detection Fraud Detection
    @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2
    Fraud Detection
    Stream
    PaymentChecked
    Partition 0 Partition 1 Partition 2
    Ledger Ledger Ledger
    TransactionBooked

    View Slide

  111. Fraud Detection Fraud Detection
    @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2
    Fraud Detection
    Stream
    PaymentChecked
    Partition 0 Partition 1 Partition 2
    Ledger Ledger Ledger
    Partition 0 Partition 1 Partition 2
    Stream
    TransactionBooked

    View Slide

  112. Fraud Detection Fraud Detection
    @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2
    Fraud Detection
    Partition 0 Partition 1 Partition 2
    Ledger Ledger Ledger
    Partition 0 Partition 1 Partition 2
    Projecting
    Transactions
    Streams
    Flink
    Stream
    PaymentChecked
    Stream
    TransactionBooked
    Independent Shards

    View Slide

  113. Fraud Detection Fraud Detection
    @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2
    Fraud Detection
    Stream
    PaymentChecked
    Partition 0 Partition 1 Partition 2
    Ledger Ledger Ledger
    Partition 0 Partition 1 Partition 2
    Stream
    TransactionBooked
    Shard 0 Shard 1 Shard 2
    DataSink
    Streams
    Flink
    Projecting
    Transactions
    WebBanking WebBanking WebBanking

    View Slide

  114. Fraud Detection Fraud Detection
    @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2
    Fraud Detection
    Stream
    PaymentChecked
    Partition 0 Partition 1 Partition 2
    Ledger Ledger Ledger
    Partition 0 Partition 1 Partition 2
    Stream
    TransactionBooked
    Shard 0 Shard 1 Shard 2
    DataSink
    Streams
    Flink
    Projecting
    Transactions
    WebBanking WebBanking WebBanking

    View Slide

  115. Fraud Detection Fraud Detection
    @duffleit
    Stream
    UserTriggeredPayment Partition 0 Partition 1 Partition 2
    UserTriggeredPayment
    Payments Payments Payments
    Stream
    ValidPaymentReceived
    Partition 0 Partition 1 Partition 2
    Fraud Detection
    Stream
    PaymentChecked
    Partition 0 Partition 1 Partition 2
    Ledger Ledger Ledger
    Partition 0 Partition 1 Partition 2
    Stream
    TransactionBooked
    Shard 0 Shard 1 Shard 2
    DataSink
    🚀 We can scale
    nearly unlimited.
    Projecting
    Transactions
    WebBanking WebBanking WebBanking

    View Slide

  116. Forth Generation of MicroServices
    Shared and fully Stream Based
    @duffleit
    Massive Throughput
    🚀
    Extremely Scalable ↔

    View Slide

  117. So many choices,
    Lets sum up.
    @duffleit

    View Slide

  118. Monolith
    @duffleit

    View Slide

  119. Monolith
    @duffleit

    View Slide

  120. Syncronously
    😩 Pain
    @duffleit

    View Slide

  121. Modulith
    @duffleit

    View Slide

  122. Asyncronously
    📦 Shared Data
    @duffleit

    View Slide

  123. Reactive
    ⚡ From Pull to Push
    @duffleit

    View Slide

  124. Streaming Massiv Throughput
    🚀
    @duffleit

    View Slide

  125. Monolith Reactive
    Push-Based
    Async
    Pull-Based
    Streamed
    Availability
    🟢
    , Resilience
    🦺
    , Scalability ↔ , Throughput
    🚀
    Complexity
    💰
    @duffleit
    The Rise of Reactive Microservices.
    And the future of fully Stream Based Architectures.

    View Slide

  126. David Leitner
    @duffleit
    Coding Architect
    [email protected]
    @duffleit

    View Slide

  127. squer.link /
    slicing-microservices

    View Slide