event-driven soa on grails

14
Event-Driven SOA on Grails Paul Citarella

Upload: diem

Post on 23-Feb-2016

53 views

Category:

Documents


0 download

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 Presentation

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]