Event-Driven SOA on Grails

Post on 23-Feb-2016

51 views 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

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

▫paul@enterprise-grails.com