Event-Driven SOA on Grails
description
Transcript of Event-Driven SOA on Grails
Event-Driven SOA on GrailsPaul Citarella
About Me•Software Engineer•Enterprise Architect•IT Executive•Founder
•Consultant
The Problem
The Solution
More Problems
Next Generation SOA•Traditional SOA isn’t without challenges
▫Coupling (spaghetti architecture)▫Temporal coupling
•ESBs attempted to solve these problems▫Implementation isn’t trivial▫Proprietary development models
•Event-driven SOA is a better solution▫Completely eliminates both types of
coupling•Message bus = Enterprise Service Bus
30K Ft View
JMS (Single Pub-Sub Topic)
Service(Durable
Subscriber)
Service(Durable
Subscriber)
Service(Durable
Subscriber)
Business Process Service
(Durable Subscriber)
Business Process Service
(Durable Subscriber)
10K Ft View
NewOrder
RouterService
NewXyzOrder
OrderService
Get: /orders/123
XyzProcessService
AbcProcess
Service
AuthReques
t
BillingService
Charge
Authed
OtherServices
Standard Message Format{ "eventName": "NewOrder", "referenceId": "/order/1", "published": "2012-09-11T15:42:05Z" "details": { "foo": "bar" }}
Correlation: PCID•Pattern: Propagating Composite IdentifiereventName: NewOrderreferenceId: /order:123
eventName: NewXyzOrderreferenceId: /order:123/xyz
eventName: AuthRequestreferenceId: /order:123/xyz
eventName: ChargeAuthedreferenceId: /order:123/xyz/charge:789
Subscription Selectors•RoutereventName: NewOrderreferenceId: *
•XyzProcesseventName: *referenceId: ‘like %/xyz/%’
•BillingeventName: AuthRequestreferenceId: *
Implementation•Service = Grails app•Synchronous services are REST/JSON•Async are JMS/JSON via JMS plugin•Custom plugins for common functionality•Testing
▫Spock (Unit and Integration)▫Geb (Functional)▫Betamax
•Deployed in WebLogic and Standalone w/ embedded Tomcat
Proof-of-Concept Demo•Backbone•Router•Simple Order Process•Tools
▫Sponge (Support Console)▫Harness (Testing and Respository)
•Plugins▫Event-Driven▫Service Security UI
Resources•Full POC available on GitHub
▫http://github.com/enterprise-grails/utopia•Enterprise Integration Patterns
▫http://www.eaipatterns.com•Email