0
Domain
Event Driven Architecture
             Stefan Norberg,
    Head of Architecture at Unibet.com
                    t...
@stnor
• 17 years as an IT professional
• Has worked with most aspects of IT
 •   Operations & infrastructure
 •   IT secu...
Agenda

• Basics and EDA intro
• The SOA problem
• How Domain EDA completes SOA
• Implementation notes from Unibet
• What ...
The three styles of
    interaction
Type of interaction   Initiator        Participants



  Time-driven          Time    ...
Time driven

      Fruit
     system
     run inventory
    check every 60
          mins
Request driven

                                   Fruit
Tarzan                            system
         Me want three b...
Event driven

      Fruit
     system
                “Tarzan took three
                     bananas”

              “Fru...
5 Principles of EDA
• “Real-time” events as they happen at the
  producer
• Push notifications
• One-way “fire-and-forget”
•...
Typical EDA architecture

  Event
            system    system     system
Producers


  Event              Event Bus
Trans...
Main benefits of EDA

• Supports the business demands for better
  service (no batch, less waiting)
• No point-to-point int...
The birth of a system


              Inventory

         Customer

             Shop
The monolith


               Shop
 Payment
         Customer Newsletter
 Reporting
           Inventory
SOA architecture #1
  Divide the problem domains into separate systems




          Shop               Payment           ...
SOA architecture #1
    A lot of point to point integration...




      Shop                 Payment           Newsletter...
SOA architecture #2

              Shop       Payment      Newsletter




Monolith?               Service Bus



         ...
Let’s add fraud checks

                        fraud
         Shop     Payment       Newsletter
     fraud




          ...
Let’s add a loyalty
            system
                             fraud
              Shop     Payment       Newsletter
...
Integration ripple effect

                             fraud
              Shop     Payment       Newsletter
          fr...
Problem summary
• SOA is all about dividing domain logic into
  separate systems and exposing it as
  services
• Some doma...
“It's really become clear to me in the last couple
of years that we need a new building block and
that is the Domain Event...
Domain Events and
       SOA
• A Domain Event is something that
  happened that the domain expert cares
  about
• A SOA sy...
Domain EDA


• By exposing relevant Domain Events on a
  shared event bus we can isolate cross
  cutting functions to sepa...
Domain EDA + SOA
Reporting


 Loyalty              Shop      Payment    Newsletter
            Event
             Bus
    ...
Domain EDA + SOA
Reporting


 Loyalty              Shop      Payment    Newsletter
            Event
             Bus
  BA...
“You complete me”


Domain EDA          SOA
Example how Domain
   EDA decouples
Coupled integration


   Trading   Reporting
   system     system

   model      model
Coupled integration


   Trading   Reporting
   system     system

  model v2    model
Domain EDA
           integration
                           I’m interested in
                          buy, sell and mar...
Domain EDA
            integration
                            I’m interested in
                           buy, sell and ...
- “So what? I can do that with SOA...”

- “Yes, but can you do THIS?” (drumroll)
Domain EDA
             integration
                                      I’m interested in
                              ...
Domain EDA
             integration
                               I’m interested in
                              buy, se...
Example how EDA
     scales
Traditional SOA
scalability issue
      200 tx/s
        Order
      processing
Traditional SOA
scalability issue
      200 tx/s
        Order
      processing

            request/response



       Lo...
Traditional SOA
scalability issue
      200 tx/s
        Order
      processing

            request/response



       Lo...
SOA: Weakest link dictates the
      peak throughput
       of the system

           100 tx/s
             Order
        ...
EDA: Weakest link dictates the
  sustained throughput
       of the system

           200 tx/s
             Order
       ...
Implementation notes
    from Unibet
    hans.hall@unibet.com
MQ considerations

• Ordering
• Durability
• Performance
• Once and only once delivery
Our requirements


• 1000 messages / second sustained
• Guaranteed delivery
• Easy to use client
Brokers tested
• Lots of brokers tested
 • ActiveMQ, OpenMQ, HornetQ,
    Websphere, Fiorano, RabbitMQ, QPID
• Second roun...
Testing brokers

• Killing brokers
• Flow control
• Slow consumers
• Durable / non-durable
• Small configuration change can...
Payload considerations
The smorgasbord
                                    Schema
     Name            Standardized             Binary   Easy to ...
Domain events need
           schema support
                                     Schema
      Name            Standardize...
+ Efficient, x-platform and
           easy to use
                                  Schema
     Name          Standardized...
Protocol Buffers
• Flexible, efficient, automated mechanism for
  serializing (binary)
• Schema support (.proto files)
• Lan...
Example
newuserevent.proto:
     option java_package = "com.example.foo";
     message NewUserEvent {
       required stri...
Generating Java Source

$ protoc --proto_path=IMPORT_PATH 
         --java_out=DST_DIR 
         path/to/file.proto
IMPORT...
Builders vs messages
• Messages classes are immutable
• Use builders to construct
     NewUserEvent stefan =
       NewUse...
Evolving messages
• You cannot remove required fields
• New fields that you add should be optional
  or repeated
• New fields...
Sample EDA producer
@Autowired
DomainEventPublisher publisher;

NewUserEvent stefan =
  NewUserEvent.newBuilder()
    .set...
Sample EDA consumer
       public class YourDomainListenerPOJO {
           public void receive(LoginEvent loginEvent) {
 ...
What to tell your
   manager
What to tell your
        manager

• SOA+EDA will reduce time-to-market for
  new functionality
• SOA+EDA will enable a la...
Game changing
  value-add
Complex Event
      Processing (CEP)
• 100% Event-driven
• Receives domain events
• Performs event correlation using a QL
...
CEP Examples
                                                request/response
                                            ...
Business Process
    Management (BPM)
• Business control over definition and
  automation of business processes
• SOA servi...
BPM example
                                                                                              Customer
       ...
Business Activity
     Monitoring (BAM)
• Aggregation, analysis, and presentation of real
  time information about activit...
The real-time business
               eco system
                                          Monitoring
                    ...
Thank you!
EventDrivenArchitecture
Upcoming SlideShare
Loading in...5
×

EventDrivenArchitecture

2,202

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,202
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
76
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "EventDrivenArchitecture"

  1. 1. Domain Event Driven Architecture Stefan Norberg, Head of Architecture at Unibet.com twitter: @stnor email: stefan.norberg@unibet.com blog: http://stnor.wordpress.com
  2. 2. @stnor • 17 years as an IT professional • Has worked with most aspects of IT • Operations & infrastructure • IT security • Systems development • Software architecture • Enterprise architecture • Head of Architecture at Unibet
  3. 3. Agenda • Basics and EDA intro • The SOA problem • How Domain EDA completes SOA • Implementation notes from Unibet • What to tell your manager
  4. 4. The three styles of interaction Type of interaction Initiator Participants Time-driven Time The specified systems Request-driven Client Client and Server Event-driven Event Open-ended
  5. 5. Time driven Fruit system run inventory check every 60 mins
  6. 6. Request driven Fruit Tarzan system Me want three bananas!
  7. 7. Event driven Fruit system “Tarzan took three bananas” “Fruit system is low on bananas”
  8. 8. 5 Principles of EDA • “Real-time” events as they happen at the producer • Push notifications • One-way “fire-and-forget” • Immediate action at the consumers • Informational (“someone logged in”), not commands (“audit this”)
  9. 9. Typical EDA architecture Event system system system Producers Event Event Bus Transport Event system system system Consumers
  10. 10. Main benefits of EDA • Supports the business demands for better service (no batch, less waiting) • No point-to-point integrations (fire & forget) • Enables high performance, highly scalable systems
  11. 11. The birth of a system Inventory Customer Shop
  12. 12. The monolith Shop Payment Customer Newsletter Reporting Inventory
  13. 13. SOA architecture #1 Divide the problem domains into separate systems Shop Payment Newsletter Customer Inventory Reporting DB
  14. 14. SOA architecture #1 A lot of point to point integration... Shop Payment Newsletter Customer Inventory Reporting DB
  15. 15. SOA architecture #2 Shop Payment Newsletter Monolith? Service Bus Customer Inventory Reporting DB
  16. 16. Let’s add fraud checks fraud Shop Payment Newsletter fraud Service Bus Customer Inventory Reporting DB
  17. 17. Let’s add a loyalty system fraud Shop Payment Newsletter fraud Service Bus Customer Loyalty Inventory Reporting DB
  18. 18. Integration ripple effect fraud Shop Payment Newsletter fraud Service Bus Customer Loyalty Inventory Reporting DB
  19. 19. Problem summary • SOA is all about dividing domain logic into separate systems and exposing it as services • Some domain logic will, by its very nature, be spread out over many systems • The result is domain pollution and bloat in the SOA systems
  20. 20. “It's really become clear to me in the last couple of years that we need a new building block and that is the Domain Events” -- Eric Evans, QCon 2009
  21. 21. Domain Events and SOA • A Domain Event is something that happened that the domain expert cares about • A SOA system’s primary focus should be on the domain and domain logic
  22. 22. Domain EDA • By exposing relevant Domain Events on a shared event bus we can isolate cross cutting functions to separate systems
  23. 23. Domain EDA + SOA Reporting Loyalty Shop Payment Newsletter Event Bus Inventory Customer
  24. 24. Domain EDA + SOA Reporting Loyalty Shop Payment Newsletter Event Bus BAM Inventory Customer Fraud
  25. 25. “You complete me” Domain EDA SOA
  26. 26. Example how Domain EDA decouples
  27. 27. Coupled integration Trading Reporting system system model model
  28. 28. Coupled integration Trading Reporting system system model v2 model
  29. 29. Domain EDA integration I’m interested in buy, sell and market status events Trading domain events subscribe Reporting system system model model
  30. 30. Domain EDA integration I’m interested in buy, sell and market status events Trading domain events subscribe Reporting system system model v2 model
  31. 31. - “So what? I can do that with SOA...” - “Yes, but can you do THIS?” (drumroll)
  32. 32. Domain EDA integration I’m interested in buy, sell and market status events Trading domain events subscribe Reporting system system model v2 model Trading domain events system NG model
  33. 33. Domain EDA integration I’m interested in buy, sell and market status events Trading subscribe Reporting system system model v2 model Trading domain events system NG model
  34. 34. Example how EDA scales
  35. 35. Traditional SOA scalability issue 200 tx/s Order processing
  36. 36. Traditional SOA scalability issue 200 tx/s Order processing request/response Loyalty system
  37. 37. Traditional SOA scalability issue 200 tx/s Order processing request/response Loyalty system 100 tx/s
  38. 38. SOA: Weakest link dictates the peak throughput of the system 100 tx/s Order processing request/response Loyalty system 100 tx/s
  39. 39. EDA: Weakest link dictates the sustained throughput of the system 200 tx/s Order processing event Loyalty system 100 tx/s
  40. 40. Implementation notes from Unibet hans.hall@unibet.com
  41. 41. MQ considerations • Ordering • Durability • Performance • Once and only once delivery
  42. 42. Our requirements • 1000 messages / second sustained • Guaranteed delivery • Easy to use client
  43. 43. Brokers tested • Lots of brokers tested • ActiveMQ, OpenMQ, HornetQ, Websphere, Fiorano, RabbitMQ, QPID • Second round • ActiveMQ, OpenMQ and RabbitMQ • Finally went for ActiveMQ - fitted our requirements/use case the best
  44. 44. Testing brokers • Killing brokers • Flow control • Slow consumers • Durable / non-durable • Small configuration change can have huge impact on throughput
  45. 45. Payload considerations
  46. 46. The smorgasbord Schema Name Standardized Binary Easy to use X-platform Std API support ASN.1 Yes Yes Yes No Yes No CSV Partial No No No? Yes No DOM, SAX, XML Yes Yes No Yes Yes XQUERY, XPATH JSON Yes No No Yes Yes No Java serialization No Partial Yes Yes No No Hessian No Partial Yes Yes Yes No Protocol Buffers No Yes Yes Yes Yes No BSON No No Yes Yes Yes No
  47. 47. Domain events need schema support Schema Name Standardized Binary Easy to use X-platform Std API support ASN.1 Yes Yes Yes No Yes No CSV Partial No No No? Yes No DOM, SAX, XML Yes Yes No Yes Yes XQUERY, XPATH JSON Yes No No Yes Yes No Java serialization No Partial Yes Yes No No Hessian No Partial Yes Yes Yes No Protocol Buffers No Yes Yes Yes Yes No BSON No No Yes Yes Yes No
  48. 48. + Efficient, x-platform and easy to use Schema Name Standardized Binary Easy to use X-platform Std API support ASN.1 Yes Yes No No Yes No DOM, SAX, XML Yes Yes No Yes Yes XQUERY, XPATH Protocol Buffers No Yes Yes Yes Yes No
  49. 49. Protocol Buffers • Flexible, efficient, automated mechanism for serializing (binary) • Schema support (.proto files) • Language neutral • Invented and used by Google Open Sourced in July 2008
  50. 50. Example newuserevent.proto: option java_package = "com.example.foo"; message NewUserEvent { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; }
  51. 51. Generating Java Source $ protoc --proto_path=IMPORT_PATH --java_out=DST_DIR path/to/file.proto IMPORT_PATH specifies a directory in which to look for .proto files when resolving import directives. If the DST_DIR ends in .zip or .jar, the compiler will write the output to a single ZIP-format archive file with the given name.
  52. 52. Builders vs messages • Messages classes are immutable • Use builders to construct NewUserEvent stefan = NewUserEvent.newBuilder() .setId(1337) .setName("Stefan Norberg") .setEmail(“stefan@norberg.org") .addPhone( NewUserEvent.PhoneNumber.newBuilder() .setNumber("+46 70 99 66 547") .setType(NewUserEvent.PhoneType.WORK)) .build();
  53. 53. Evolving messages • You cannot remove required fields • New fields that you add should be optional or repeated • New fields should have sensible defaults • Prefix deprecated non-required fields with OBSOLETE_ (convention)
  54. 54. Sample EDA producer @Autowired DomainEventPublisher publisher; NewUserEvent stefan = NewUserEvent.newBuilder() .setId(1337) .setName("Stefan Norberg") .setEmail(“stefan@norberg.org") .addPhone( NewUserEvent.PhoneNumber.newBuilder() .setNumber("+46 70 99 66 547") .setType(NewUserEvent.PhoneType.WORK)) .build(); publisher.publish(stefan);
  55. 55. Sample EDA consumer public class YourDomainListenerPOJO { public void receive(LoginEvent loginEvent) { // do something } @Durable(clientId=”com.example.foo.bar”) public void receive(NewUserEvent newUserEvent) { // do something } } <import resource=”classpath:spring-domain-events.xml /> <bean id=”domainEventListener” class=”com.foo.YourDomainListenerPOJO”/> <domain-events:subscribe id=”eventSubscriber” subscriber=”domainEventListener”/>
  56. 56. What to tell your manager
  57. 57. What to tell your manager • SOA+EDA will reduce time-to-market for new functionality • SOA+EDA will enable a layer of high-value services that have a visible impact on the bottom line of the business
  58. 58. Game changing value-add
  59. 59. Complex Event Processing (CEP) • 100% Event-driven • Receives domain events • Performs event correlation using a QL • Fires domain events (“findings”)
  60. 60. CEP Examples request/response “action” events Correlation events “findings” (CEP) if there are no Mastercard deposits from France in 5 minutes during business hours, send NoDespositsEvent if there are >30 failed logins using >5 accounts from the same ip within 2 minutes, block the ip for 24 hours if customer with loyalty >= gold and puts goods in shopping cart for more than €200, send VIPShoppingEvent if customer loses €2000 in the casino within 30 minutes and customer != highroller send PotentialHighrollerEvent AND grant €200 casino premium
  61. 61. Business Process Management (BPM) • Business control over definition and automation of business processes • SOA services “orchestration” • Processes can/should be started by domain events
  62. 62. BPM example Customer System Evaluate Get Customer Profit > Highroller Info €5000 Start Manual investigation / PotentialHighrollerEvent decision Profit > Stop decision? Set VIP Status Stop €1000 Manager approved? approval Stop
  63. 63. Business Activity Monitoring (BAM) • Aggregation, analysis, and presentation of real time information about activities inside organizations and involving customers and partners • BAM attempts to do for business processing what network management tools do for network operations
  64. 64. The real-time business eco system Monitoring events (BAM) events Great business Business Value Correlation events Processes (CEP) (BPM) request/response events events request/response Domain Event Driven Service Oriented Architecture (D-EDA) Architecture (SOA) IT enhancements Great architecture IT systems
  65. 65. Thank you!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×