event-driven soa on grails
DESCRIPTION
Event-Driven SOA on Grails. Paul 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 - PowerPoint PPT PresentationTRANSCRIPT
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