HTTP: the Other ESB

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    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.

    1 Favorite

    HTTP: the Other ESB - Presentation Transcript

    1. HTTP: the other ESB
      Ryan Riley
      Catapult Systems, Inc.
      Houston TechFest 2009
    2. Agenda
      Setting the Stage
      Alternatives
      HTTP: the application protocol
      Common Concerns
      Questions
      Resources
    3. Setting the Stage
    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
    9. ESB to the rescue!
    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
    12. Alternatives
    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.
    16. HTTP: the application protocol
      (and you thought the second T was for transport?)
    17. HTTP is comprehensive
      HTTP verbs
      GET
      PUT
      POST
      DELETE
      HEAD
      OPTIONS
      And more through extensibility!
    18. Messaging
      Request
      Response
      It’s about communication!
      GET /index.html HTTP/1.1
      Accept: application/xhtml+xml
      Accept-Language: en
      HTTP/1.1 200 OK
      Content-type: application/xhtml+xml
      Content-length: 16
      Hello TechFest!
    19. Status Codes
      100 – 101 Informational
      200 – 206 Success
      300 – 307 Redirection
      400 – 417 Client Error
      500 – 505 Server Error
    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
    22. POST
      Create a new resource
      Not necessarily safe
    23. DELETE
      Disable a resource (though not necessarily destroy)
      Safe to repeat, but the response is generally different when the resource doesn’t exist.
    24. HEAD
      Retrieves only the headers
      Conditional GET
    25. OPTIONS
      Retrieves the HTTP verbs a resource URI will accept.
      The protocol tells the client how it may proceed.
    26. Hypermedia Types
      XHTML (application/xhtml+xml)
      RSS (application/rss-2.0)
      Atom/AtomPub (application/atom+xml)
      Custom (application/vnd.my-format)
    27. XHTML?
    28. XHTML for Messaging
    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
    31. Add Semantics
      Microformats
      RDF / RDFa(FOAF)
      Prefermicroformats(rel tag)
    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
    33. HATEOAS
      http://www.infoq.com/articles/subbu-allamaraju-rest
    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
    37. Scalability
      Stateless, so massively scalable
      Client and Proxy caches
    38. Transactions
      Hypermedia (HATEOAS)
      Different paradigm with richer semantics
      Workflows and state transitions
    39. How to GET a Cup of Coffee
      http://www.infoq.com/articles/webber-rest-workflow
    40. Common Concerns
    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
    43. OpenRasta (C#)
    44. Limonade (PHP)
    45. Sinatra (Ruby)
    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)
    47. Summary
    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
    50. Questions?
    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

    + Ryan RileyRyan Riley, 1 month ago

    custom

    234 views, 1 favs, 1 embeds more stats

    Presented at Houston Tech Fest 2009.

    Many develope more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 234
      • 217 on SlideShare
      • 17 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 6
    Most viewed embeds
    • 17 views on http://wizardsofsmart.net

    more

    All embeds
    • 17 views on http://wizardsofsmart.net

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories