+ All Categories
Transcript
Page 1: Event-Driven SOA on Grails

Event-Driven SOA on GrailsPaul Citarella

Page 2: Event-Driven SOA on Grails

About Me•Software Engineer•Enterprise Architect•IT Executive•Founder

•Consultant

Page 3: Event-Driven SOA on Grails

The Problem

Page 4: Event-Driven SOA on Grails

The Solution

Page 5: Event-Driven SOA on Grails

More Problems

Page 6: Event-Driven SOA on Grails

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

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

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

Standard Message Format{ "eventName": "NewOrder", "referenceId": "/order/1", "published": "2012-09-11T15:42:05Z" "details": { "foo": "bar" }}

Page 10: Event-Driven SOA on Grails

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

Subscription Selectors•RoutereventName: NewOrderreferenceId: *

•XyzProcesseventName: *referenceId: ‘like %/xyz/%’

•BillingeventName: AuthRequestreferenceId: *

Page 12: Event-Driven SOA on Grails

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

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

Resources•Full POC available on GitHub

▫http://github.com/enterprise-grails/utopia•Enterprise Integration Patterns

▫http://www.eaipatterns.com•Email

[email protected]


Top Related