Presented at Houston Tech Fest 2009.
Many developers use enterprise service bus (ESB) tools such as BizTalk or, for those looking at a lighter-weight approach, NServiceBus. What many fail to realize is that we have another option, one that has been tried and tested for many years and that we all use daily: HTTP. Find out how HTTP can deliver a much more maintainable, simpler solution to your ESB problems.
4. First things first Demand â Specialized Tools Different tools needed among front and back office, as well as field workers Once people get used to a tool, they donât want to change ⊠except to get the features they want Supply â One-size-fits-all Create reusable frameworks or components and force them to fit the need Save time and money (80/20 rule)
5. The result? Old Computer Equipment 1 from Dolor IpsumSome rights reserved
6. The Integration Problem Start with Application Silos Then need to Share and Aggregate Data Note: Different systems with different needs Different interpretations of data semantics MUST communicate Systems rarely die, but we keep adding more
7. The Contenders File sharing Databases Direct sharing or ETL / Data Stores How do you negotiate schema changes? Message-Oriented Middleware (MOM) Fire and forget Vendors rule the world: Message Broker, ESB, etc. Service-Oriented Architecture (SOA) Back to silos Which platform: Java, .NET, ESB framework, etc.
8. Complexity becomes us Starts simple Ends ⊠Spaghetti? Yum! from DanoSome rights reserved
10. ⊠or perhaps not âEnterprise Spaghetti Busâ â Jim Webber
11. Meanwhile ⊠New patterns and practices Agile and Lean TDD, BDD, DDD, CI, CQS/DDDD, etc. Frameworks and tools to the rescue! The web as an application platform WS-* emerges as an SOA solution Rails & co make web programming easier
13. WS-* Messaging: SOAP Discoverability: WSDL Security: WS-Security Reliability: WS-MessageReliability And a host of others: WS-BusinessActivity BPEL Etc.
14. WS-* (cont.) Scalability Reliance on HTTP POST Complex to achieve Transactions Complicated protocols Based on classic RPC paradigms Brought to you by HTTP POST
15. Other alternatives ESB frameworks: NServiceBus, MassTransit, Rhino.ServiceBus, etc. Back to file/database sharing? Most of these are fire and forget models.
20. GET Idempotent = massively scalable via caching Control caching through HTTP headers: Client => Last-Modified + If-Modified-Since or If-None-Match + ETag Server => Cache-Control and Expires
21. PUT Useful for updating and creating Idempotent = safe to repeat
23. DELETE Disable a resource (though not necessarily destroy) Safe to repeat, but the response is generally different when the resource doesnât exist.
29. Why not XLink? Open XML link extension Not well understood nor clearly defined In the end, you would still need custom processing, so use application/vnd.custom+xml instead of application/xml
30. Atom / AtomPub Well-understood hypermedia format Collection <atom:feed> and single <atom:entry> formats Can use <atom:link> within custom media types for well understood link semantics Works well as a queue (if you must) Simple and extensible Debate over message formats in REST
32. The Role of Hypermedia REpresentational State Transfer (REST) Accept header(contentnegotiation) State transitions / Workflows (HATEOAS) Single entry point Next steps provided through links Can swap out providers (links) GET /index.html HTTP/1.1 Accept: application/xhtml+xml, application/json Accept-Language: en
34. HATEOAS, cont. No HATEOAS With HATEOAS http://www.infoq.com/articles/subbu-allamaraju-rest
35. Reliability Idempotency Response Error Codes HTTP is synchronous by nature Other ESB platforms are generally asynchronous Fire and forget Need additional fault tolerance mechanisms
36. Security HTTP Basic and Digest authentication HTTPs, the tried and true (but not cahceable) OpenID, OpenAuth, SAML
41. Security Concerns Isnât the web inherently insecure? HTTPs is used everyday to transact millions Other protocols emerging OpenId + OpenAuth SAML
42. Complexity Few frameworks exist for pure HTTP use RESTClient and Sinatra (Ruby) Limonade (PHP) OpenRasta (.NET) Fairly simple to create from scratch Mash-ups (just see how easy this is) On the web Call services from within Excel
46. Tight-coupling This is a fear from having used WSDL HATEOAS reduces coupling even more! Donât use URI templates (except internally) URIs can be swapped at any time Requires a layer in between your domain and the external API Upgrade client and server independently (Accepts header)
48. There is no spoon (or bus) Paradigm shift Dumb network vs. Smart network Meaningful semantics over classic, distributed spaghetti architecture Take advantage of theexisting, richinfrastructure
49. Distributed computing for years now has seemed like an endless repackaging of the same old ideas, patterns, and technology. Through REST, I finally feel like distributing computing is evolving and moving forward again. While REST won't solve world hunger, it will certainly give us a new perspective to practice software engineering.~ Bill Burke, JBoss
51. References Dr. Roy Fieldingâs Dissertation HTTP/1.1 (rfc2616) The Atom Syndication Format The Atom Publishing Protocol
52. Books Get /Connected (coming 2009/2010)(Parastatidas, Robinson, Webber) RESTful Web Services(Richardson & Ruby) RESTful Web Services Cookbook(Allamaraju & Amundsen)
53. Presentations Get /Connected Guerilla SOA A Couple of Ways to Skin an Internet Scale Cat Does My Bus Look Big in This? RESTful Approaches to Financial Systems Integration
Hinweis der Redaktion
The audit problem
Files â each party manages their own world, but changes break downstream clientsDatabases â both parties now have to agree on schema changes. What about data validation (business logic) across systems?MOM â How do you determine rate of processing? Front-office may want real-time; back-office often are okay with high latency.SOA â Some standards, but not all vendors use the same standards; publisher determines format and may take your needs into consideration. So you have âkind ofâ communication.
Planning systems upgradesDifferent platforms and dev toolsMost people just want their ExcelDifferent architectures, expectations, security, etc.Because you are forced to talk to different platforms, you wind up with spaghetti.
Originall, ESB was seen as the hero. Look at that beautifully clean network diagram!
But the ESB just hides the spaghetti.Auditing BizTalk was never easy because you still have to understand which systems talk to which, how they do so, etc.
What exactly is XHTML (or HTML)?Currently, itâs the new spaghetti code.Cool new features coming in HTML5, but most of that is making this worse.Itâs a document serialization format.