Event-Driven SOA on Grails
description
Transcript of Event-Driven SOA on Grails
![Page 1: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/1.jpg)
Event-Driven SOA on GrailsPaul Citarella
![Page 2: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/2.jpg)
About Me•Software Engineer•Enterprise Architect•IT Executive•Founder
•Consultant
![Page 3: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/3.jpg)
The Problem
![Page 4: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/4.jpg)
The Solution
![Page 5: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/5.jpg)
More Problems
![Page 6: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/6.jpg)
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
![Page 7: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/7.jpg)
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)
![Page 8: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/8.jpg)
10K Ft View
NewOrder
RouterService
NewXyzOrder
OrderService
Get: /orders/123
XyzProcessService
AbcProcess
Service
AuthReques
t
BillingService
Charge
Authed
OtherServices
![Page 9: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/9.jpg)
Standard Message Format{ "eventName": "NewOrder", "referenceId": "/order/1", "published": "2012-09-11T15:42:05Z" "details": { "foo": "bar" }}
![Page 10: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/10.jpg)
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
![Page 11: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/11.jpg)
Subscription Selectors•RoutereventName: NewOrderreferenceId: *
•XyzProcesseventName: *referenceId: ‘like %/xyz/%’
•BillingeventName: AuthRequestreferenceId: *
![Page 12: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/12.jpg)
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
![Page 13: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/13.jpg)
Proof-of-Concept Demo•Backbone•Router•Simple Order Process•Tools
▫Sponge (Support Console)▫Harness (Testing and Respository)
•Plugins▫Event-Driven▫Service Security UI
![Page 14: Event-Driven SOA on Grails](https://reader036.fdocuments.in/reader036/viewer/2022062323/56816376550346895dd454d2/html5/thumbnails/14.jpg)
Resources•Full POC available on GitHub
▫http://github.com/enterprise-grails/utopia•Enterprise Integration Patterns
▫http://www.eaipatterns.com•Email