5. About Me
Enterprise Software Architect
20+ years in commercial software development
11+ years at a Fortune 15 company
Proven history with distributed, real-time systems
Microsoft Visual C# MVP
7. ENTERPRISE APPLICATION
INTEGRATION
Linking applications in an organization together to
simplify and automate business processes
8. Shared Database
Multiple applications coupled to single schema
Unclear ownership of schema
Edges between applications blurred
Linked servers for SQL to SQL RPC
Changes often affect multiple applications
9. File Transfer
Extract - Transform - Load (ETL)
Asynchronous
Simple interoperability through common formats
Timeliness of data can lead to inconsistencies
Large data volume containing unrelated data
Ownership of files, cleanup, versioning
10. Web Services
Explicit Contract (WSDL, DataContract)
Synchronous Operation leads to sequencing
Services must be available at invocation
Nested call stacks fragile, consume resources
Remote Procedure Call (RPC, COM, CORBA)
The network is unreliable
13. A-Synchronicity
Message producers are non-blocking
Fire and forget
Message consumers run in their own process
Introduces a more complex programming model
15. Explicit Contract
Agreement between producer and consumer
Internal data structure remains private
Integration points remain at the application’s edge
Eliminates propagation of internal changes
21. Service Oriented Event Driven
Architecture Architecture
Complimentary
22. Service Oriented Event Driven
Architecture Architecture
Complimentary
23. SOA 1.0
Applications are composed using a designer
Synchronous programming model
Step-by-step (F10) flow through services
Majority of interactions are request/response
24. Event Driven Architecture
Components are assembled at run-time
Asynchronous programming model
Reactive behavior
Leverages one way, fire and forget, messaging
25. Autonomous Components
Defined by responsibility
Independent
Self-governing - makes decisions on how to react
Self-controlling - responsible for execution context
Self-contained - not part of an application
30. Commands
Tell a component or service to do something
Initiated by an event, interaction, etc.
Use correlation for tracing, idempotence
Sent using messaging (not published)
36. Self Contained
A pure and complete representation of a specific event
Time relevant, not time sensitive
Avoid references to internal data
Reduces dependencies, loosens coupling
41. Business Events
Map to real world events that occur in business
Item Added to Cart
Invoice Received
Order Shipped
Payment Requested
42. Lifecycle Events
Notifications related to the life of a state or process
Preparing Shipment / Shipment Prepared
Authorizing Payment / Payment Authorization
Complete
Session Started / Session Completed
43. Management Events
Relate events to time, ranges, limits
Timely Service Guarantee Exceeded
Your order within five minutes, or it’s free
Popular Item Notification
Items with a 5x increase in sales in an hour
44.
45. MassTransit Key Points
Lightweight Service Bus Implementation
Loose coupling via publish/subscribe
Active Service Pattern
Supports MSMQ, ActiveMQ, TIBCO EMS
Open Source, Apache 2.0 License