lightweight soa - innoq · 2018-01-25 · mule esb servicemix sopera 28. claim #4/9: participants...
TRANSCRIPT
![Page 2: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/2.jpg)
9 Claims
2
![Page 3: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/3.jpg)
Claim #1/9:Application architecture
is irrelevant for your SOA
3
![Page 4: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/4.jpg)
Application Architecture
vs.
Integration Architecture
4
![Page 5: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/5.jpg)
5
![Page 6: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/6.jpg)
6
![Page 7: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/7.jpg)
7
![Page 8: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/8.jpg)
8
![Page 9: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/9.jpg)
9
![Page 10: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/10.jpg)
10
![Page 11: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/11.jpg)
11
![Page 12: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/12.jpg)
12
![Page 13: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/13.jpg)
13
![Page 14: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/14.jpg)
Application Architecture(Example)
Resource LayerPOJOs & Hibernate
RDBMS Legacy Systems
Business Logic LayerStateless Session Beans
Process LayerStateful & Stateless Session Beans
WrapperSession Beans
Interaction LayerStruts
PresentationJSP
JCA
JDBC
14
![Page 15: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/15.jpg)
Application ClassesKlasse B Klasse CKlasse A
Resource LayerPOJOs & Hibernate
RDBMS Legacy Systems
Business Logic LayerStateless Session Beans
Process LayerStateful & Stateless Session Beans
WrapperSession Beans
Interaction LayerStruts
PresentationJSP
Resource LayerPOJOs & Hibernate
RDBMS Legacy Systems
Business Logic LayerStateless Session Beans
Process LayerStateful & Stateless Session Beans
WrapperSession Beans
Presentation & InteractionEclipse RCP
Business Logic LayerStateless Session Beans
Process LayerStateful & Stateless Session Beans
Presentation & InteractionEclipse RCP
GIS Backend
WrapperSession Beans
Class A Class B Class C
15
![Page 16: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/16.jpg)
Focus: Portability
Resource LayerPOJOs & Hibernate
RDBMS Legacy Systems
Business Logic LayerStateless Session Beans
Process LayerStateful & Stateless Session Beans
WrapperSession Beans
Interaction LayerStruts
PresentationJSP
JCA
JDBC
16
![Page 17: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/17.jpg)
Focus: Interoperability
Resource LayerPOJOs & Hibernate
RDBMS Legacy Systems
Business Logic LayerStateless Session Beans
Process LayerStateful & Stateless Session Beans
WrapperSession Beans
Interaction LayerStruts
PresentationJSP
Resource LayerPOJOs & Hibernate
RDBMS Legacy Systems
Business Logic LayerStateless Session Beans
Process LayerStateful & Stateless Session Beans
WrapperSession Beans
Presentation & InteractionEclipse RCP
Business Logic LayerStateless Session Beans
Process LayerStateful & Stateless Session Beans
Presentation & InteractionEclipse RCP
GIS Backend
WrapperSession Beans
17
![Page 18: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/18.jpg)
Claim #2/9:An ESB should not be at
the core of your SOA
18
![Page 19: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/19.jpg)
ESB Spaghetti Monster
19
![Page 20: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/20.jpg)
T H E F L Y I N G S P A G H E T T I M O N S T E R
T O U C H E D B Y H I S N O O D L Y A P P E N D A G E
20
![Page 21: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/21.jpg)
Shamelessly stolen from Jim Webber: http://tinyurl.com/ywm5sj
ESB Spaghetti
21
![Page 22: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/22.jpg)
EOA
22
![Page 23: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/23.jpg)
ESB-oriented ArchitectureProprietary tooling (“doodleware”)
No (or little) team development
No unit-testing, test-driven development
No (or little) modularization
No (or little) versioning
Barrier to entry
Prolonged existence of proprietary interfaces
23
![Page 24: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/24.jpg)
“Virtual” ESB
24
![Page 25: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/25.jpg)
Claim #3/9:Point-to-point
communication is perfectly fine
25
![Page 26: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/26.jpg)
Mainstream + Lightweight
Pick a decent platform or toolkit for SOAP/WS-* support
.NET WCF, Spring Web Services, Apache CXF, Apache Axis2, JBossWS, Sun Metro
Standardize on standards, not products, not single points of failure
26
![Page 27: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/27.jpg)
If you Use an ESB …
Central Model
Enabling Model
… know what you’re doing27
![Page 28: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/28.jpg)
Consider Open Source ESBs
Apache Synapse/WSO2 ESB
Mule ESB
ServiceMix
Sopera
28
![Page 29: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/29.jpg)
Claim #4/9:Participants in a given SOA must depend on
wire formats only
29
![Page 30: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/30.jpg)
“Virtual” ESB
30
![Page 31: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/31.jpg)
“Virtual” ESB
31
![Page 32: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/32.jpg)
Claim #5/9:Web services (SOAP/
WSDL) are not the only way
32
![Page 33: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/33.jpg)
REST Explainedin 5 Easy Steps
33
![Page 34: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/34.jpg)
1. Give Every “Thing” an ID
http://example.com/customers/1234
http://example.com/orders/2007/10/776654
http://example.com/products/4554
http://example.com/processes/sal-increase-234
34
![Page 35: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/35.jpg)
2. Link Things To Each Other
<order self=’http://example.com/orders/1234’> <amount>23</amount> <product ref=’http://example.com/products/4554’ /> <customer ref=’http://example.com/customers/1234’ /></order>
35
![Page 36: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/36.jpg)
3. Use Standard Methods
GET Retrieve information, possibly cached
PUT Update or create with known ID
POST Create or append sub-resource
DELETE (Logically) remove
36
![Page 37: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/37.jpg)
GET /customers/1234Host: example.comAccept: application/vnd.mycompany.customer+xml
GET /customers/1234Host: example.comAccept: text/x-vcard
<customer>...</customer>
begin:vcard...end:vcard
4. Offer Multiple Formats
37
![Page 38: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/38.jpg)
5. Communicate StatelesslyGET /customers/1234Host: example.comAccept: application/vnd.mycompany.customer
time
<customer><order ref=’./orders/46’</customer>
GET /customers/1234/orders/46Host: example.comAccept: application/vnd.mycompany.order+xml
<order>...</order>
shutdownupdate softwarereplace hardwarestartup
38
![Page 39: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/39.jpg)
What’s cool about REST?
39
![Page 40: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/40.jpg)
interface Resource { Resource(URI u) Response get() Response post(Request r) Response put(Request r) Response delete()}
generic
specific
class CustomerCollection : Resource { ... Response post(Request r) { id = createCustomer(r) return new Response(201, r) } ...}
Any HTTP client(Firefox, IE, curl, wget)
Any HTTP server
Caches
Proxies
Google, Yahoo!, MSN
Anything that knows your app
40
![Page 41: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/41.jpg)
41
![Page 42: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/42.jpg)
Mapping ExamplesgetFreeTimeSlots(Person) →GET /people/{id}/timeslots?state=free
rejectApplication(Application) →POST /rejections↵ <application>http://...</application>↵ <reason>Unsuitable for us!</reason>
performTariffCalculation(Data) →POST /calculations↵ Data←Location: http://.../calculations/4711→GET /calculations/4711←Result
shipOrder(ID) →PUT /orders/0815↵ <status>shipped</status>
shipOrder(ID) [variation] →POST /shipments↵ Data←Location: http://.../shipments/4711
42
![Page 43: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/43.jpg)
Atom & AtomPub
43
![Page 44: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/44.jpg)
Atom Syndication Format
Standardized in: RFC 4287MIME Type: application/atom+xmlNamespace: http://www.w3.org/2005/Atom
RSS Done Right44
![Page 45: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/45.jpg)
Atom ModelFeed Entry
*0id
titleupdated
idtitle
updated
Content
InlineXHTMLInlineTextOutOfLineResource InlineOther
Category*
45
![Page 46: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/46.jpg)
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link rel="alternate" type="text/html" href="http://example.org/"/> <link rel="self" type="application/atom+xml" href="http://example.org/feeds/23.atom"/> <updated>2003-12-13T18:30:02Z</updated> <author><name>John Doe</name></author> <id>http://example.org/feeds/23</id>
<entry> <title>Atom-Powered Robots Run Amok</title> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry>
<entry> <title>A Second Contrived Example</title> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> <content type="xhtml" xml:base="http://example.org/"> <div xmlns="http://www.w3.org/1999/xhtml"> <p><i>Very fine text.</i></p> </div> </content> </entry></feed>
46
![Page 47: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/47.jpg)
interface Resource { ...}
generic
specific
class CustomerCollection : AtomFeed { ...}
Anything that understands HTTP
Anything that knows your app
class AtomFeed : Resource { AtomFeed get() ...}
Any feed reader
Yahoo! Pipes
47
![Page 48: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/48.jpg)
Atom Publishing ProtocolStandardized in: RFC 5023Namespace: http://www.w3.org/2007/app
RESTful Collections Handling:- Discovery, Description,- Retrieval,- Creation, Editing, Deletion
of Resources
48
![Page 49: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/49.jpg)
Collection Member*0
idtitle
updated
idtitle
updated
Workspace
*
LinkEntry
Resource
Service Document
*
Category
*
49
![Page 50: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/50.jpg)
interface Resource { ...}
generic
specific
class CustomerCollection : AtomFeed { ...}
Anything that understands HTTP
Anything that knows your app
class AtomFeed : Resource { AtomFeed get()
...}
Any feed reader
Yahoo! Pipes
Any AtomPub client post(Entry)
50
![Page 51: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/51.jpg)
Claim #6:RESTful HTTP moves
you closer to SOA goals than WS-*
51
![Page 52: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/52.jpg)
SOA and RESTful HTTPLoose Coupling
InteroperabilityVendor Independence
Unexpected Re-use
Available SkillsTooling for any Language & Platform
Low Resistance to Change
… all served better by RESTful HTTP than WS-*52
![Page 53: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/53.jpg)
Claim #7:Advanced WS-*
standards are overrated
53
![Page 54: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/54.jpg)
WS-* Theory & Practice
WS-Addressing and WS-ReliableMessaging are not yet widely interoperable
Message-bases security is way too expensive
UDDI is a solution looking for a problem
Even WS-based SOAs often don’t use them
54
![Page 55: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/55.jpg)
REST + WS-*
If you choose SOAP, WSDL, WS-*, go with lightweight/OSS tools
Consider adopting RESTful HTTP instead of WS-*
Adopt REST for SOA Governance (!)
Consider WS-* + HTTP GET
55
![Page 56: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/56.jpg)
Claim #8:Governance can be greatly simplified
56
![Page 57: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/57.jpg)
UDDI
420-page specification
Finding and maintaining (meta-)model objects
Publication save_binding save_business save_service save_tModel delete_binding delete_business delete_publisherAssertions delete_service delete_tModel add_publisherAssertions set_publisherAssertions get_assertionStatusReport get_publisherAssertions get_registeredInfo
Inquiry find_binding find_business find_relatedBusinesses find_service find_tModel get_bindingDetail get_businessDetail get_operationalInfo get_serviceDetail get_tModelDetail
57
![Page 58: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/58.jpg)
UDDI (contd.)UDDI could be greatly simplified by using plain HTTP
It would no longer be protocol-independent - but who cares?
Atom (Syndication Format & Protocol) are a great match
Approach taken in Mule Galaxy, WSO2 Registry, HP Systinet 2
See: http://www.xml.com/pub/a/ws/2002/02/06/rest.html?page=258
![Page 59: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/59.jpg)
Lightweight Governance
Simple solution (Webserver, WebDAV, AtomStore) for Document Storage
Atom feeds for update notifications
HTTP GET for lookups
59
![Page 60: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/60.jpg)
(Final) Claim #9:The most important
architectural guide is your intelligence
60
![Page 61: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/61.jpg)
mainstreamvs.
technical optimum
central controlvs.
no single point of failure
integrated solutionsvs.
no dependency on single vendors
homogeneityvs.
right tool for the job
61
![Page 62: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/62.jpg)
CSOA
Common SenseOriented
Architecture
62
![Page 64: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/64.jpg)
What about BPM?
64
![Page 65: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/65.jpg)
BPM SOAVendorMarketing
Valid Options:1. SOA2. BPM3. SOA + BPM
65
![Page 66: Lightweight SOA - INNOQ · 2018-01-25 · Mule ESB ServiceMix Sopera 28. Claim #4/9: Participants in a given SOA must depend on wire formats only 29 “Virtual” ESB 30 “Virtual”](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec98a9bb83f5f77ec2d47cb/html5/thumbnails/66.jpg)
Central Model
BPM as ImplModel
Orchestration Options
66