SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
22-10-2008




                          This Presentation Courtesy of the
                          International SOA Symposium
                          October 7-8, 2008 Amsterdam Arena
                          www.soasymposium.com
                          info@soasymposium.com


                                          Founding Sponsors




Platinum Sponsors




Gold Sponsors       Silver Sponsors




                         GET /Connected
                      Web Integration the Starbucks Way




                                 Dr. Jim Webber
                            http://jim.webber.name




                                                                      1
22-10-2008




              Roadmap
• A little Swedish
• Some home truths
  – About Web Services and the Web
• Implementing Workflows
  – The Starbuck’s example
• Q&A




Jag heter Jim und kommer du
           England
• I like Web Services        • I wrote this book,
  – I am a MESTian at          about WS-*
    heart
• I like the Web
  – I have sympathies
    that lie with the
    RESTafarians




                                                            2
22-10-2008




 Jag heter Jim und kommer du
            England
• I like Web Services        Mark Baker’s           • I am “similarly
                          consulting company,         minded”
  – I am a MESTian at           Coactus

    heart
• I like the Web
  – I have sympathies
    that lie with the
    RESTafarians


       That’s me




         Falling out of Love?
                          I hate WSDL. I wanna
 • Two things:            kick it squarely in the
                                    nuts!
    – WSDL
      • It’s an XML IDL for RPC
      • Therefore ill-suited for Internet scale               Photo: Comedy Central




    – All the superfluous WS-* standards and
      politics
 • Toolkits hide essential complexity




                                                                                              3
22-10-2008




Why Web Services Rock My World
 • Good Web Services/SOA are message-
   oriented
   – SSDL rules!
 • Business processes tend to be message-
   oriented
 • End-to-end processing model
   – Defined by SOAP, not WSDL!
 • Composable model
   – Ignore most of the WS-* stack
      • Except WSDL because the toolkits embrace it    Photo: Comedy Central




               Web Abuse
                                  Tunnelling is
                                 all a bunch of
 • Two lo-fi approaches to       tree-hugging
    “Web” integration              hippy crap!

   – URI tunnelling
   – POX
 • Both models treat HTTP as a transport                Photo: Comedy Central




   – More or less
 • Yet some of the Web jihadists don’t see this
 • Both of these approaches overlay the Web
   with their own (weak) models...




                                                                                        4
22-10-2008




             URI Tunnelling
• Web servers understand URIs
• URIs have structure
• Methods have signatures
• Can match URI structure to method
  signature
• E.g.
    – http://example.com/addNumbers?p1=10&p2=11
    – intaddNumbers(inti, int j) { return i + j; }




     URI Tunnelling Strengths
• Very easy to understand
• Great for simple procedure-calls
• Simple to code
    – Do it with the servlet API, HttpListener,
      IHttpHandler, Rails, whatever!
• Interoperable
    – It’s just URIs!
• Cacheable – providing you don’t abuse
  GET



                                                             5
22-10-2008




  URI Tunnelling Weaknesses
• Often used for brittle RPC
• Tight coupling, no metadata
• Lacks robustness
  – Except for idempotent cases
• No metadata support
  – Construct the URIs yourself, map them to the
    function manually




           POX Pattern
• POX uses XML in the HTTP request and
  response to move a call stack between
  client and server
• Web servers understand how to process
  requests with bodies
• Hence we have another RPC mechanism




                                                           6
22-10-2008




          POX Strengths
• Simplicity – just use HTTP POST and XML
• Re-use existing infrastructure and
  libraries
• Interoperable
  – It’s just XML and HTTP POST
• Can use complex data structures
  – By representing them in XML




        POX Weaknesses
• Client and server must collude on XML
  payload
  – Tightly coupled approach
• No metadata support
  – Unless you’re using a POX toolkit that
    supports WSDL with HTTP binding (like WCF)
• Does not use Web for robustness
• Does not use SOAP + WS-* for robustness




                                                         7
22-10-2008




 RPC is Commonplace Today
• To err is human, to really mess things up you
  need a computer
• To really, really mess things up you need a
  distributed system
  – “A Note on Distributed Computing”
• Bad Web Services and Web integration
  have much in common
  – It’s RPC!
  – With latencies and nasty partial failure
    characteristics




          </rant>


                                                          8
22-10-2008




        Web Fundamentals
• To embrace the Web, we need to
  understand how it works
• The Web is a distributed hypermedia
  model
   – It doesn’t try to hide that distribution from
     you!
• Our challenge:
   – Figure out the mapping between our problem
     domain and the underlying Web platform




  Why the Web was Inevitable
Tim Berners-Lee is a physicist




                   (Sir Tim is also a knight, but that’s not
                     important right now)




                                                                       9
22-10-2008




Why the Web was Inevitable
                He lived in a hole in the ground




 Underneath a big mountain
 (in Switzerland)




Why the Web was Inevitable
                And because he was a physicist (and
                 not yet a knight)...




...he only had a big atom-
 smashing thing for
 company




                                                             10
22-10-2008




Why the Web was Inevitable
                And for a lonesome physicist
                 stuck underground with smashed
                 up atoms for company...




...gopher just wasn’t
 going to cut it!




   The Web broke the rules




                                                         11
22-10-2008




          Web Characteristics
•   Scalable
•   Fault-tolerant
•   Recoverable
•   Secure
•   Loosely coupled

• Precisely the same characteristics we
  want in business software systems!




Tenets for Web-based Services
• Resource-based
    – Rather than service-oriented (the Web is not MOM!)
• Addressability
    – Interesting things should have names
• Statelessness
    – No stateful conversations with a resource
• Representations
    – Resources can be serialised into representations
• Links
    – Resources
• Uniform Interface
    – No plumbing surprises!




                                                                  12
22-10-2008




       Resource Architecture
   Consumer
  (Web Client)       Uniform Interface
                       (Web Server)




                                Logical Resources

Resource Representation
  (e.g. XML document)
                                               Physical Resources




                          Links
• Connectedness is good in Web-based
  systems
• Resource representations can contain
  other URIs
• Links act as state transitions
• Application (conversation) state is
  captured in terms of these states




                                                                           13
22-10-2008




Describing Contracts with Links
• The value of the Web is its “linked-ness”
  – Links on a Web page constitute a contractfor
    page traversals
• The same is true of the programmatic
  Web
• Use Links to describe state transitions in
  programmatic Web services
  – By navigating resources you change
    application state




  Links are State Transitions




                                                          14
22-10-2008




              Links as APIs
<confirm xmlns="...">        • Following a link
<link rel="payment"
  href="https://pay"
                               causes an action to
  type="application/xml"/>
                               occur
<link rel="postpone"         • This is the start of a
  href="https://wishlist"      state machine!
  type="application/xml"/>
</confirm>
                             • Links lead to other
                               resources which also
                               have links
                             • Can make this
                               stronger with
                               semantics
                                – Microformats




              Microformats
• Microformats are an example of little “s”
  semantics
• Innovation at the edges of the Web
   – Not by some central design authority (e.g. W3C)
• Started by embedding machine-processable
  elements in Web pages
   – E.g. Calendar information, contact information,
     etc
   – Using existing HTML features like class, rel,
     etc




                                                               15
22-10-2008




 Microformats and Resources
• Use Microformats to structure resources where
  formats exist
  – I.e. Use hCard for contacts, hCalendar for data
• Create your own formats (sparingly) in other
  places
  – Annotating links is a good start
  – <link rel="withdraw.cash" .../>
  – <link rel="service.post"
    type="application/x.atom+xml"
    href="{post-uri}" title="some title">
• The rel attribute describes the semantics of the
  referred resource




     We have a framework!
• The Web gives us a processing and metadata
  model
  – Verbs and status codes
  – Headers
• Gives us metadata contracts or Web “APIs”
  – URI Templates
  – Links
• Strengthened with semantics
  – Little “s”




                                                             16
22-10-2008




                 Workflow
• How does a typical enterprise workflow look
  when it’s implemented in a Web-friendly
  way?
• Let’s take Starbuck’s as an example, the
  happy path is:
  – Make selection
     • Add any specialities
  – Pay
  – Wait for a while
  – Collect drink




        Workflow and MOM
• With Web Services we
  exchange messages
  with the service
                                Order Drink
• Resource state is
  hidden from view
                                                   Starbuck’s Service




                              Add Specialities
• Conversation state is
  all we know
                              Order Confirmation
  – Advertise it with
    SSDL, BPEL
• Uniform interface,                 Pay
  roles defined by SOAP
  – No “operations”                  Coffee!




                                                                               17
22-10-2008




     Web-friendly Workflow
• What happens if workflow stages are
  modelled as resources?
• And state transitions are modelled as
  hyperlinks or URI templates?
• And events modelled by traversing links
  and changing resource states?
• Answer: we get Web-friendly workflow
  – With all the quality of service provided by
    the Web




              Placing an Order
• Place your order by POSTing it to a well-
  known URI
  – http://example.starbucks.com/order
                                         Starbuck’s Service




     Client




                                                                     18
22-10-2008




Placing an Order: On the Wire
                                      • Response
• Request                             201 Created
                                      Location:
POST /order HTTP 1.1
                                         http://starbucks.example.org/
Host: starbucks.example.org              order?1234
Content-Type: application/xml         Content-Type: application/xml
Content-Length: ...                   Content-Length: ...

<order xmlns="urn:starbucks">         <order xmlns="urn:starbucks">
<drink>latte</drink>                  <drink>latte</drink>
</order>                              <link rel="payment"
           If we have a (private)        href="https://starbucks.examp
                A link! Is this the
           microformat, this can         le.org/payment/order?1234"
                 start of an API?
             become a neat API!         type="application/xml"/>
                                      </order>




          Whoops! A mistake
• I like my coffee to taste like coffee!
• I need another shot of espresso
   – What are my OPTIONS?

 Request                              Response
OPTIONS /order?1234 HTTP 1.1          200 OK
Host: starbucks.example.org           Allow: GET, PUT    Phew! I can
                                                          update my
                                                        order, for now




                                                                                19
22-10-2008




Optional: Look Before You Leap
• See if the resource has changed since you
  submitted your order
   – If you’re fast your drink hasn’t been
     prepared yet
 Request                      Response
PUT /order?1234 HTTP 1.1      100 Continue
Host: starbucks.example.org                                I can still PUT this
Expect: 100-Continue                                       resource, for now.
                                                            (417 Expectation
                                                            Failed otherwise)




          Amending an Order
• Add specialities to you order via PUT
   – Starbucks needs 2 shots!
                                      Starbuck’s Service




       Client




                                                                                         20
22-10-2008




Amending an Order: On the Wire
 • Request                           • Response
 PUT /order?1234 HTTP 1.1            200 OK
 Host: starbucks.example.org         Location:
 Content-Type: application/xml          http://starbucks.example.org/o
 Content-Length: ...                    rder?1234
                                     Content-Type: application/xml
 <order xmlns="urn:starbucks">       Content-Length: ...
 <drink>latte</drink>
 <additions>shot</additions>         <order xmlns="urn:starbucks">
 <link rel="payment"                 <drink>latte</drink>
    href="https://starbucks.exampl   <additions>shot</additions>
    e.org/payment/order?1234"        <link rel="payment"
   type="application/xml"/>             href="https://starbucks.exampl
 </order>                               e.org/payment/order?1234"
                                       type="application/xml"/>
                                     </order>




                  Statelessness
 • Remember interactions with resources are stateless
 • The resource “forgets” about you while you’re not
   directly interacting with it
 • Which means race conditions are possible
 • Use If-Unmodified-Since on a timestamp to
   make sure
    – Or use If-Match and an ETag
 • You’ll get a 412 PreconditionFailed if you lost
   the race
    – But you’ll avoid potentially putting the resource into
      some inconsistent state




                                                                                21
22-10-2008




      Warning: Don’t be Slow!
• Can only make changes until someone
  actually makes your drink
   – You’re safe if you use If-Unmodified-Since
     or If-Match
   – But resource state can change without you!
 Request
                              Response
PUT /order?1234 HTTP 1.1
                               409 Conflict
Host: starbucks.example.org
...                                   Too slow! Someone else has
                                     changed the state of my order
 Request                       Response
OPTIONS /order?1234 HTTP 1.1   Allow: GET
Host: starbucks.example.org




           Order Confirmation
• Check your order status by GETing it
                                       Starbuck’s Service




        Client




                                                                            22
22-10-2008




Order Confirmation: On the Wire
• Request                                  • Response
GET /order?1234 HTTP 1.1                   200 OK
Host: starbucks.example.org                Location:
Content-Type: application/xml                 http://starbucks.example.org/orde
Content-Length: ...                           r?1234
                                           Content-Type: application/xml
                                           Content-Length: ...



                                           <order xmlns="urn:starbucks">
                                           <drink>latte</drink>
                                           <additions>shot</additions>
  Are they trying to tell me               <link rel="payment"
something with hypermedia?                    href="https://starbucks.example.o
                                              rg/payment/order?1234"
                                             type="application/xml"/>
                                           </order>




                     Order Payment
   • PUT your payment to the order resource
       https://starbucks.example.org/payment/order?1234
                                                        Starbuck’s Service




           Client




                                    New resource!
                    https://starbucks.example.org/payment/order?1234




                                                                                         23
22-10-2008




       How did I know to PUT?
 • The client knew the URI to PUT to from the link
    – PUT is also idempotent (can safely re-try) in case of failure
 • Verified with OPTIONS
    – Just in case you were in any doubt 



 Request                                     Response
OPTIONS /payment/order?1234 HTTP 1.1         Allow: GET, PUT
Host: starbucks.example.org




  Order Payment: On the Wire
 • Request                           • Response
 PUT /payment/order?1234 HTTP 1.1    201 Created
 Host: starbucks.example.org         Location:
 Content-Type: application/xml          https://starbucks.example.or
 Content-Length: ...                    g/payment/order?1234
                                     Content-Type: application/xml
 <payment xmlns="urn:starbucks">     Content-Length: ...
 <cardNo>123456789</cardNo>
 <expires>07/07</expires>
 <name>John Citizen</name>           <payment xmlns="urn:starbucks">
 <amount>4.00</amount>               <cardNo>123456789</cardNo>
 </payment>                          <expires>07/07</expires>
                                     <name>John Citizen</name>
                                     <amount>4.00</amount>
                                     </payment>




                                                                              24
22-10-2008




        Check that you’ve paid
• Request                       • Response
GET /order?1234 HTTP 1.1        200 OK
Host: starbucks.example.org     Content-Type: application/xml
Content-Type: application/xml   Content-Length: ...
Content-Length: ...

       My “API” has changed,    <order xmlns="urn:starbucks">
         because I’ve paid      <drink>latte</drink>
            enough now          <additions>shot</additions>
                                </order>




What Happened Behind the Scenes?

 • Starbucks can use the same resources!
 • Plus some private resources of their own
     – Master list of coffees to be prepared
 • Authenticate to provide security on some
   resources
     – E.g. only Starbuck’s are allowed to view
       payments




                                                                       25
22-10-2008




                         Payment
  • Only Starbucks systems can access the record of payments
      –   Using the URI template: http://.../payment/order?{order_id}
  • We can use HTTP authorisation to enforce this
                                           Response
 Request
GET /payment/order?1234 HTTP 1.1          401 Unauthorized
                                          WWW-Authenticate: Digest
Host: starbucks.example.org               realm="starbucks.example.org",
                                          qop="auth", nonce="ab656...",
                                          opaque="b6a9..."


   Request                                Response
GET /payment/order?1234 HTTP 1.1          200 OK
Host: starbucks.example.org
Authorization: Digest username="jw"       Content-Type: application/xml
realm="starbucks.example.org“             Content-Length: ...
nonce="..."
uri="payment/order?1234"                  <payment xmlns="urn:starbucks">
qop=auth                                  <cardNo>123456789</cardNo>
nc=00000001                               <expires>07/07</expires>
cnonce="..."                              <name>John Citizen</name>
reponse="..."                             <amount>4.00</amount>
opaque="..."                              </payment>




               Master Coffee List
 • /orders URI for all orders, only accepts GET
     – Anyone can use it, but it is only useful for Starbuck’s
     – It’s not identified in any of our public APIs anywhere, but the back-
       end systems know the URI
                                      Response
   Request                           200 OK
                                      Content-Type: application/xml
  GET /orders HTTP 1.1                Content-Length: ...
                                      <?xml version="1.0" ?>
  Host: starbucks.example.org         <feed xmlns="http://www.w3.org/2005/Atom">
                                      <title>Coffees to make</title>
                                      <link rel="alternate"
                                      href="http://example.starbucks.com/order.atom"/>
                                      <updated>2007-07-10T09:18:43Z</updated>
                                      <author><name>Johnny Barrista</name></author>
                  Atom feed!          <id>urn:starkbucks:45ftis90</id>

                                      <entry>
                                      <link rel="alternate" type="application/xml"
                                      href="http://starbucks.example.org/order?1234"/>
                                      <id>urn:starbucks:a3tfpfz3</id>
                                      </entry>
                                       ...
                                      </feed>




                                                                                                26
22-10-2008




     Finally drink your coffee...




   Source: http://images.businessweek.com/ss/06/07/top_brands/image/starbucks.jpg




What did we learn from Starbucks?
  • HTTP has a header/status combination for every occasion
  • APIs are expressed in terms of links, and links are great!
     – APP-esque APIs
  • APIs can also be constructed with URI templates and
    inference
     – But beware tight coupling outside of CRUD services!
  • XML is fine, but we could also use formats like Atom, JSON
    or even default to XHTML as a sensible middle ground
  • State machines (defined by links) are important
     – Just as in Web Services…




                                                                                           27
22-10-2008




                    Summary
• Web-based services are about state
  machines
   – The HATEOAS constraint from REST
• Use Web for massive scalability, fault
  tolerance
   – If you can tolerate higher latencies
• The Web is now starting to feel the love
  from middleware vendors too – beware!




Starbucks Written Up @ InfoQ




http://www.infoq.com/articles/webber-rest-workflow




                                                            28
22-10-2008




        Questions?

                               Blog:
                     http://jim.webber.name
GET /Connected

   Jim Webber
Savas Parastatidis
  Ian Robinson

Coming Q1 2009…




                                                     29

Weitere ähnliche Inhalte

Was ist angesagt?

Windows and Linux Interopability
Windows and Linux InteropabilityWindows and Linux Interopability
Windows and Linux InteropabilityNovell
 
Advanced DNS/DHCP for Novell eDirectory Environments
Advanced DNS/DHCP for Novell eDirectory EnvironmentsAdvanced DNS/DHCP for Novell eDirectory Environments
Advanced DNS/DHCP for Novell eDirectory EnvironmentsNovell
 
Custom Development with Novell Teaming
Custom Development with Novell TeamingCustom Development with Novell Teaming
Custom Development with Novell TeamingNovell
 
Xedapp - Overview
Xedapp - OverviewXedapp - Overview
Xedapp - OverviewXedapp
 
Zimbra Collaboration Suite Vs Microsoft Exchange 2007
Zimbra Collaboration Suite Vs Microsoft Exchange 2007Zimbra Collaboration Suite Vs Microsoft Exchange 2007
Zimbra Collaboration Suite Vs Microsoft Exchange 2007agileware
 
Lego Cloud SAP Virtualization Week 2012
Lego Cloud SAP Virtualization Week 2012Lego Cloud SAP Virtualization Week 2012
Lego Cloud SAP Virtualization Week 2012Benoit Hudzia
 
Novell Success Stories: Collaboration in Travel and Hospitality
Novell Success Stories: Collaboration in Travel and HospitalityNovell Success Stories: Collaboration in Travel and Hospitality
Novell Success Stories: Collaboration in Travel and HospitalityNovell
 
If You Know JSF, You Know Portals and Portlets
If You Know JSF, You Know Portals and PortletsIf You Know JSF, You Know Portals and Portlets
If You Know JSF, You Know Portals and PortletsWesley Hales
 
Portal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted TschoppPortal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted TschoppTed Tschopp
 
Managing change in the data center network
Managing change in the data center networkManaging change in the data center network
Managing change in the data center networkInterop
 
Hecatonchire kvm forum_2012_benoit_hudzia
Hecatonchire kvm forum_2012_benoit_hudziaHecatonchire kvm forum_2012_benoit_hudzia
Hecatonchire kvm forum_2012_benoit_hudziaBenoit Hudzia
 
Complex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBaseComplex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBasedarach
 
Automating Oracle Database deployment with Amazon Web Services, fabric, and boto
Automating Oracle Database deployment with Amazon Web Services, fabric, and botoAutomating Oracle Database deployment with Amazon Web Services, fabric, and boto
Automating Oracle Database deployment with Amazon Web Services, fabric, and botomjbommar
 
Redundant Internet service provision - customer viewpoint
Redundant Internet service provision - customer viewpointRedundant Internet service provision - customer viewpoint
Redundant Internet service provision - customer viewpointKae Hsu
 
Server Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenServer Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenJUG Genova
 
Performance Implications of Mobile Design
Performance Implications of Mobile DesignPerformance Implications of Mobile Design
Performance Implications of Mobile DesignGuy Podjarny
 
Twitter - Architecture and Scalability lessons
Twitter - Architecture and Scalability lessonsTwitter - Architecture and Scalability lessons
Twitter - Architecture and Scalability lessonsAditya Rao
 
Introduction to Enterprise Cloud Economics
Introduction to Enterprise Cloud EconomicsIntroduction to Enterprise Cloud Economics
Introduction to Enterprise Cloud EconomicsEverest Group
 
JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)Graeme_IBM
 
Cloud presentation 13 sept 2011-mia
Cloud presentation  13 sept 2011-miaCloud presentation  13 sept 2011-mia
Cloud presentation 13 sept 2011-miaSKALI Group
 

Was ist angesagt? (20)

Windows and Linux Interopability
Windows and Linux InteropabilityWindows and Linux Interopability
Windows and Linux Interopability
 
Advanced DNS/DHCP for Novell eDirectory Environments
Advanced DNS/DHCP for Novell eDirectory EnvironmentsAdvanced DNS/DHCP for Novell eDirectory Environments
Advanced DNS/DHCP for Novell eDirectory Environments
 
Custom Development with Novell Teaming
Custom Development with Novell TeamingCustom Development with Novell Teaming
Custom Development with Novell Teaming
 
Xedapp - Overview
Xedapp - OverviewXedapp - Overview
Xedapp - Overview
 
Zimbra Collaboration Suite Vs Microsoft Exchange 2007
Zimbra Collaboration Suite Vs Microsoft Exchange 2007Zimbra Collaboration Suite Vs Microsoft Exchange 2007
Zimbra Collaboration Suite Vs Microsoft Exchange 2007
 
Lego Cloud SAP Virtualization Week 2012
Lego Cloud SAP Virtualization Week 2012Lego Cloud SAP Virtualization Week 2012
Lego Cloud SAP Virtualization Week 2012
 
Novell Success Stories: Collaboration in Travel and Hospitality
Novell Success Stories: Collaboration in Travel and HospitalityNovell Success Stories: Collaboration in Travel and Hospitality
Novell Success Stories: Collaboration in Travel and Hospitality
 
If You Know JSF, You Know Portals and Portlets
If You Know JSF, You Know Portals and PortletsIf You Know JSF, You Know Portals and Portlets
If You Know JSF, You Know Portals and Portlets
 
Portal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted TschoppPortal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted Tschopp
 
Managing change in the data center network
Managing change in the data center networkManaging change in the data center network
Managing change in the data center network
 
Hecatonchire kvm forum_2012_benoit_hudzia
Hecatonchire kvm forum_2012_benoit_hudziaHecatonchire kvm forum_2012_benoit_hudzia
Hecatonchire kvm forum_2012_benoit_hudzia
 
Complex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBaseComplex Er[jl]ang Processing with StreamBase
Complex Er[jl]ang Processing with StreamBase
 
Automating Oracle Database deployment with Amazon Web Services, fabric, and boto
Automating Oracle Database deployment with Amazon Web Services, fabric, and botoAutomating Oracle Database deployment with Amazon Web Services, fabric, and boto
Automating Oracle Database deployment with Amazon Web Services, fabric, and boto
 
Redundant Internet service provision - customer viewpoint
Redundant Internet service provision - customer viewpointRedundant Internet service provision - customer viewpoint
Redundant Internet service provision - customer viewpoint
 
Server Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenServer Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef Arendsen
 
Performance Implications of Mobile Design
Performance Implications of Mobile DesignPerformance Implications of Mobile Design
Performance Implications of Mobile Design
 
Twitter - Architecture and Scalability lessons
Twitter - Architecture and Scalability lessonsTwitter - Architecture and Scalability lessons
Twitter - Architecture and Scalability lessons
 
Introduction to Enterprise Cloud Economics
Introduction to Enterprise Cloud EconomicsIntroduction to Enterprise Cloud Economics
Introduction to Enterprise Cloud Economics
 
JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)JVM Multitenancy (JavaOne 2012)
JVM Multitenancy (JavaOne 2012)
 
Cloud presentation 13 sept 2011-mia
Cloud presentation  13 sept 2011-miaCloud presentation  13 sept 2011-mia
Cloud presentation 13 sept 2011-mia
 

Andere mochten auch

Fixed Fee / Fixed Bid Delivery
Fixed Fee / Fixed Bid DeliveryFixed Fee / Fixed Bid Delivery
Fixed Fee / Fixed Bid DeliveryJeff Schneider
 
A MomentumSI Briefing: SOA in 2013
A MomentumSI Briefing: SOA in 2013A MomentumSI Briefing: SOA in 2013
A MomentumSI Briefing: SOA in 2013Jeff Schneider
 
Webinar: A Roadmap for DevOps Success
Webinar: A Roadmap for DevOps SuccessWebinar: A Roadmap for DevOps Success
Webinar: A Roadmap for DevOps SuccessJules Pierre-Louis
 
How to Build the Right Automation
How to Build the Right AutomationHow to Build the Right Automation
How to Build the Right AutomationJules Pierre-Louis
 
From Monolith to Microservices – and Beyond!
From Monolith to Microservices – and Beyond!From Monolith to Microservices – and Beyond!
From Monolith to Microservices – and Beyond!Jules Pierre-Louis
 
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesService Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesSreenivas Makam
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocitySam Newman
 

Andere mochten auch (10)

Fixed Fee / Fixed Bid Delivery
Fixed Fee / Fixed Bid DeliveryFixed Fee / Fixed Bid Delivery
Fixed Fee / Fixed Bid Delivery
 
Dev ops in 2013
Dev ops in 2013Dev ops in 2013
Dev ops in 2013
 
A MomentumSI Briefing: SOA in 2013
A MomentumSI Briefing: SOA in 2013A MomentumSI Briefing: SOA in 2013
A MomentumSI Briefing: SOA in 2013
 
Beyond technical debt
Beyond technical debtBeyond technical debt
Beyond technical debt
 
Webinar: A Roadmap for DevOps Success
Webinar: A Roadmap for DevOps SuccessWebinar: A Roadmap for DevOps Success
Webinar: A Roadmap for DevOps Success
 
How to Build the Right Automation
How to Build the Right AutomationHow to Build the Right Automation
How to Build the Right Automation
 
Starting and Scaling Devops
Starting and Scaling Devops Starting and Scaling Devops
Starting and Scaling Devops
 
From Monolith to Microservices – and Beyond!
From Monolith to Microservices – and Beyond!From Monolith to Microservices – and Beyond!
From Monolith to Microservices – and Beyond!
 
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesService Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and Kubernetes
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocity
 

Ähnlich wie Jim Webber R E S Tful Services

Jim Webber A Couple Of Ways To Skin An Internet Scale Catx
Jim Webber A Couple Of Ways To Skin An Internet Scale CatxJim Webber A Couple Of Ways To Skin An Internet Scale Catx
Jim Webber A Couple Of Ways To Skin An Internet Scale Catxdeimos
 
The Web of Things
The Web of ThingsThe Web of Things
The Web of ThingsFrank Greco
 
6 weeks 6 months live project summer industrial training in cmc limited 2012
6 weeks  6 months live project summer industrial training in cmc limited  20126 weeks  6 months live project summer industrial training in cmc limited  2012
6 weeks 6 months live project summer industrial training in cmc limited 2012CMC Limited
 
Mark Little R E S Tand W S Star
Mark  Little    R E S Tand W S StarMark  Little    R E S Tand W S Star
Mark Little R E S Tand W S StarSOA Symposium
 
Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Html5 web sockets - Brad Drysdale - London Web 2011-10-20Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Html5 web sockets - Brad Drysdale - London Web 2011-10-20Nathan O'Hanlon
 
What ya gonna do?
What ya gonna do?What ya gonna do?
What ya gonna do?CQD
 
Dc roundtablesmall webservices_2002
Dc roundtablesmall webservices_2002Dc roundtablesmall webservices_2002
Dc roundtablesmall webservices_2002eaiti
 
Skb web2.0
Skb web2.0Skb web2.0
Skb web2.0animove
 
ROMA User-Customizable NoSQL Database in Ruby
ROMA User-Customizable NoSQL Database in RubyROMA User-Customizable NoSQL Database in Ruby
ROMA User-Customizable NoSQL Database in RubyRakuten Group, Inc.
 
HATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTHATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTelliando dias
 
Alex Wade, Digital Library Interoperability
Alex Wade, Digital Library InteroperabilityAlex Wade, Digital Library Interoperability
Alex Wade, Digital Library Interoperabilityparker01
 
Getting out of the monolith hell
Getting out of the monolith hellGetting out of the monolith hell
Getting out of the monolith hellmimmozzo_
 
Reconceiving the Web as a Distributed (NoSQL) Data System
Reconceiving the Web as a Distributed (NoSQL) Data SystemReconceiving the Web as a Distributed (NoSQL) Data System
Reconceiving the Web as a Distributed (NoSQL) Data SystemDaniel Austin
 
SOA and WCF (Windows Communication Foundation) basics
SOA and WCF (Windows Communication Foundation) basicsSOA and WCF (Windows Communication Foundation) basics
SOA and WCF (Windows Communication Foundation) basicsYaniv Pessach
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...Serdar Basegmez
 

Ähnlich wie Jim Webber R E S Tful Services (20)

Jim Webber A Couple Of Ways To Skin An Internet Scale Catx
Jim Webber A Couple Of Ways To Skin An Internet Scale CatxJim Webber A Couple Of Ways To Skin An Internet Scale Catx
Jim Webber A Couple Of Ways To Skin An Internet Scale Catx
 
The Web of Things
The Web of ThingsThe Web of Things
The Web of Things
 
REST in Practice
REST in PracticeREST in Practice
REST in Practice
 
6 weeks 6 months live project summer industrial training in cmc limited 2012
6 weeks  6 months live project summer industrial training in cmc limited  20126 weeks  6 months live project summer industrial training in cmc limited  2012
6 weeks 6 months live project summer industrial training in cmc limited 2012
 
Mark Little R E S Tand W S Star
Mark  Little    R E S Tand W S StarMark  Little    R E S Tand W S Star
Mark Little R E S Tand W S Star
 
Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Html5 web sockets - Brad Drysdale - London Web 2011-10-20Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Html5 web sockets - Brad Drysdale - London Web 2011-10-20
 
What ya gonna do?
What ya gonna do?What ya gonna do?
What ya gonna do?
 
Dc roundtablesmall webservices_2002
Dc roundtablesmall webservices_2002Dc roundtablesmall webservices_2002
Dc roundtablesmall webservices_2002
 
Skb web2.0
Skb web2.0Skb web2.0
Skb web2.0
 
ROMA User-Customizable NoSQL Database in Ruby
ROMA User-Customizable NoSQL Database in RubyROMA User-Customizable NoSQL Database in Ruby
ROMA User-Customizable NoSQL Database in Ruby
 
HATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTHATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from REST
 
NoSQL
NoSQLNoSQL
NoSQL
 
Alex Wade, Digital Library Interoperability
Alex Wade, Digital Library InteroperabilityAlex Wade, Digital Library Interoperability
Alex Wade, Digital Library Interoperability
 
Getting out of the monolith hell
Getting out of the monolith hellGetting out of the monolith hell
Getting out of the monolith hell
 
The Dynamic Web
The Dynamic WebThe Dynamic Web
The Dynamic Web
 
Dynamic Web
Dynamic WebDynamic Web
Dynamic Web
 
Reconceiving the Web as a Distributed (NoSQL) Data System
Reconceiving the Web as a Distributed (NoSQL) Data SystemReconceiving the Web as a Distributed (NoSQL) Data System
Reconceiving the Web as a Distributed (NoSQL) Data System
 
SOA and WCF (Windows Communication Foundation) basics
SOA and WCF (Windows Communication Foundation) basicsSOA and WCF (Windows Communication Foundation) basics
SOA and WCF (Windows Communication Foundation) basics
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
 
Mini-Training: Let's have a rest
Mini-Training: Let's have a restMini-Training: Let's have a rest
Mini-Training: Let's have a rest
 

Mehr von SOA Symposium

Sven Hakan Olsson Composability Index V2
Sven Hakan Olsson    Composability  Index V2Sven Hakan Olsson    Composability  Index V2
Sven Hakan Olsson Composability Index V2SOA Symposium
 
Thomas Erl Introducing S O A Design Patterns
Thomas  Erl    Introducing  S O A  Design  PatternsThomas  Erl    Introducing  S O A  Design  Patterns
Thomas Erl Introducing S O A Design PatternsSOA Symposium
 
Radovan Janecek Avoiding S O A Pitfalls
Radovan  Janecek   Avoiding  S O A  PitfallsRadovan  Janecek   Avoiding  S O A  Pitfalls
Radovan Janecek Avoiding S O A PitfallsSOA Symposium
 
Natasja Paulssen S A P M D M And E S O A At Philips
Natasja  Paulssen    S A P  M D M And E S O A At  PhilipsNatasja  Paulssen    S A P  M D M And E S O A At  Philips
Natasja Paulssen S A P M D M And E S O A At PhilipsSOA Symposium
 
Anthony Carrato S O A Business Architecture
Anthony  Carrato    S O A  Business  ArchitectureAnthony  Carrato    S O A  Business  Architecture
Anthony Carrato S O A Business ArchitectureSOA Symposium
 
David Chappel S O A Grid
David  Chappel    S O A  GridDavid  Chappel    S O A  Grid
David Chappel S O A GridSOA Symposium
 
Johan Kumps Federal E S B
Johan  Kumps    Federal  E S BJohan  Kumps    Federal  E S B
Johan Kumps Federal E S BSOA Symposium
 
Laurent Tarin B P M Ilog
Laurent  Tarin    B P M  IlogLaurent  Tarin    B P M  Ilog
Laurent Tarin B P M IlogSOA Symposium
 
Jim Webber Guerrilla S O A With Web Services
Jim Webber    Guerrilla  S O A With  Web  ServicesJim Webber    Guerrilla  S O A With  Web  Services
Jim Webber Guerrilla S O A With Web ServicesSOA Symposium
 
Robert Schneider What Every Developer
Robert  Schneider    What Every DeveloperRobert  Schneider    What Every Developer
Robert Schneider What Every DeveloperSOA Symposium
 
Robert Schneider 10 Strategies
Robert  Schneider   10  StrategiesRobert  Schneider   10  Strategies
Robert Schneider 10 StrategiesSOA Symposium
 
Thomas Rischbeck Real Life E S B
Thomas  Rischbeck    Real  Life  E S BThomas  Rischbeck    Real  Life  E S B
Thomas Rischbeck Real Life E S BSOA Symposium
 
Stefan Pappe Making S O A Operational
Stefan  Pappe    Making  S O A  OperationalStefan  Pappe    Making  S O A  Operational
Stefan Pappe Making S O A OperationalSOA Symposium
 
Paul Brown Org Man Issues
Paul  Brown    Org  Man  IssuesPaul  Brown    Org  Man  Issues
Paul Brown Org Man IssuesSOA Symposium
 
Arnaud Simon Flight Data Processing
Arnaud  Simon    Flight  Data ProcessingArnaud  Simon    Flight  Data Processing
Arnaud Simon Flight Data ProcessingSOA Symposium
 
Paul Butterworth Policy Based Approach
Paul  Butterworth    Policy  Based  ApproachPaul  Butterworth    Policy  Based  Approach
Paul Butterworth Policy Based ApproachSOA Symposium
 
Mark Little Web Services And Transactions
Mark  Little    Web  Services And  TransactionsMark  Little    Web  Services And  Transactions
Mark Little Web Services And TransactionsSOA Symposium
 
S Ven Hakan Olsson Compos Index
S Ven  Hakan  Olsson    Compos IndexS Ven  Hakan  Olsson    Compos Index
S Ven Hakan Olsson Compos IndexSOA Symposium
 
Art Ligthart Service Identification Techniques
Art  Ligthart    Service  Identification  TechniquesArt  Ligthart    Service  Identification  Techniques
Art Ligthart Service Identification TechniquesSOA Symposium
 
Paul C Brown S O A Governance
Paul  C  Brown    S O A  GovernancePaul  C  Brown    S O A  Governance
Paul C Brown S O A GovernanceSOA Symposium
 

Mehr von SOA Symposium (20)

Sven Hakan Olsson Composability Index V2
Sven Hakan Olsson    Composability  Index V2Sven Hakan Olsson    Composability  Index V2
Sven Hakan Olsson Composability Index V2
 
Thomas Erl Introducing S O A Design Patterns
Thomas  Erl    Introducing  S O A  Design  PatternsThomas  Erl    Introducing  S O A  Design  Patterns
Thomas Erl Introducing S O A Design Patterns
 
Radovan Janecek Avoiding S O A Pitfalls
Radovan  Janecek   Avoiding  S O A  PitfallsRadovan  Janecek   Avoiding  S O A  Pitfalls
Radovan Janecek Avoiding S O A Pitfalls
 
Natasja Paulssen S A P M D M And E S O A At Philips
Natasja  Paulssen    S A P  M D M And E S O A At  PhilipsNatasja  Paulssen    S A P  M D M And E S O A At  Philips
Natasja Paulssen S A P M D M And E S O A At Philips
 
Anthony Carrato S O A Business Architecture
Anthony  Carrato    S O A  Business  ArchitectureAnthony  Carrato    S O A  Business  Architecture
Anthony Carrato S O A Business Architecture
 
David Chappel S O A Grid
David  Chappel    S O A  GridDavid  Chappel    S O A  Grid
David Chappel S O A Grid
 
Johan Kumps Federal E S B
Johan  Kumps    Federal  E S BJohan  Kumps    Federal  E S B
Johan Kumps Federal E S B
 
Laurent Tarin B P M Ilog
Laurent  Tarin    B P M  IlogLaurent  Tarin    B P M  Ilog
Laurent Tarin B P M Ilog
 
Jim Webber Guerrilla S O A With Web Services
Jim Webber    Guerrilla  S O A With  Web  ServicesJim Webber    Guerrilla  S O A With  Web  Services
Jim Webber Guerrilla S O A With Web Services
 
Robert Schneider What Every Developer
Robert  Schneider    What Every DeveloperRobert  Schneider    What Every Developer
Robert Schneider What Every Developer
 
Robert Schneider 10 Strategies
Robert  Schneider   10  StrategiesRobert  Schneider   10  Strategies
Robert Schneider 10 Strategies
 
Thomas Rischbeck Real Life E S B
Thomas  Rischbeck    Real  Life  E S BThomas  Rischbeck    Real  Life  E S B
Thomas Rischbeck Real Life E S B
 
Stefan Pappe Making S O A Operational
Stefan  Pappe    Making  S O A  OperationalStefan  Pappe    Making  S O A  Operational
Stefan Pappe Making S O A Operational
 
Paul Brown Org Man Issues
Paul  Brown    Org  Man  IssuesPaul  Brown    Org  Man  Issues
Paul Brown Org Man Issues
 
Arnaud Simon Flight Data Processing
Arnaud  Simon    Flight  Data ProcessingArnaud  Simon    Flight  Data Processing
Arnaud Simon Flight Data Processing
 
Paul Butterworth Policy Based Approach
Paul  Butterworth    Policy  Based  ApproachPaul  Butterworth    Policy  Based  Approach
Paul Butterworth Policy Based Approach
 
Mark Little Web Services And Transactions
Mark  Little    Web  Services And  TransactionsMark  Little    Web  Services And  Transactions
Mark Little Web Services And Transactions
 
S Ven Hakan Olsson Compos Index
S Ven  Hakan  Olsson    Compos IndexS Ven  Hakan  Olsson    Compos Index
S Ven Hakan Olsson Compos Index
 
Art Ligthart Service Identification Techniques
Art  Ligthart    Service  Identification  TechniquesArt  Ligthart    Service  Identification  Techniques
Art Ligthart Service Identification Techniques
 
Paul C Brown S O A Governance
Paul  C  Brown    S O A  GovernancePaul  C  Brown    S O A  Governance
Paul C Brown S O A Governance
 

Kürzlich hochgeladen

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Kürzlich hochgeladen (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Jim Webber R E S Tful Services

  • 1. 22-10-2008 This Presentation Courtesy of the International SOA Symposium October 7-8, 2008 Amsterdam Arena www.soasymposium.com info@soasymposium.com Founding Sponsors Platinum Sponsors Gold Sponsors Silver Sponsors GET /Connected Web Integration the Starbucks Way Dr. Jim Webber http://jim.webber.name 1
  • 2. 22-10-2008 Roadmap • A little Swedish • Some home truths – About Web Services and the Web • Implementing Workflows – The Starbuck’s example • Q&A Jag heter Jim und kommer du England • I like Web Services • I wrote this book, – I am a MESTian at about WS-* heart • I like the Web – I have sympathies that lie with the RESTafarians 2
  • 3. 22-10-2008 Jag heter Jim und kommer du England • I like Web Services Mark Baker’s • I am “similarly consulting company, minded” – I am a MESTian at Coactus heart • I like the Web – I have sympathies that lie with the RESTafarians That’s me Falling out of Love? I hate WSDL. I wanna • Two things: kick it squarely in the nuts! – WSDL • It’s an XML IDL for RPC • Therefore ill-suited for Internet scale Photo: Comedy Central – All the superfluous WS-* standards and politics • Toolkits hide essential complexity 3
  • 4. 22-10-2008 Why Web Services Rock My World • Good Web Services/SOA are message- oriented – SSDL rules! • Business processes tend to be message- oriented • End-to-end processing model – Defined by SOAP, not WSDL! • Composable model – Ignore most of the WS-* stack • Except WSDL because the toolkits embrace it  Photo: Comedy Central Web Abuse Tunnelling is all a bunch of • Two lo-fi approaches to tree-hugging “Web” integration hippy crap! – URI tunnelling – POX • Both models treat HTTP as a transport Photo: Comedy Central – More or less • Yet some of the Web jihadists don’t see this • Both of these approaches overlay the Web with their own (weak) models... 4
  • 5. 22-10-2008 URI Tunnelling • Web servers understand URIs • URIs have structure • Methods have signatures • Can match URI structure to method signature • E.g. – http://example.com/addNumbers?p1=10&p2=11 – intaddNumbers(inti, int j) { return i + j; } URI Tunnelling Strengths • Very easy to understand • Great for simple procedure-calls • Simple to code – Do it with the servlet API, HttpListener, IHttpHandler, Rails, whatever! • Interoperable – It’s just URIs! • Cacheable – providing you don’t abuse GET 5
  • 6. 22-10-2008 URI Tunnelling Weaknesses • Often used for brittle RPC • Tight coupling, no metadata • Lacks robustness – Except for idempotent cases • No metadata support – Construct the URIs yourself, map them to the function manually POX Pattern • POX uses XML in the HTTP request and response to move a call stack between client and server • Web servers understand how to process requests with bodies • Hence we have another RPC mechanism 6
  • 7. 22-10-2008 POX Strengths • Simplicity – just use HTTP POST and XML • Re-use existing infrastructure and libraries • Interoperable – It’s just XML and HTTP POST • Can use complex data structures – By representing them in XML POX Weaknesses • Client and server must collude on XML payload – Tightly coupled approach • No metadata support – Unless you’re using a POX toolkit that supports WSDL with HTTP binding (like WCF) • Does not use Web for robustness • Does not use SOAP + WS-* for robustness 7
  • 8. 22-10-2008 RPC is Commonplace Today • To err is human, to really mess things up you need a computer • To really, really mess things up you need a distributed system – “A Note on Distributed Computing” • Bad Web Services and Web integration have much in common – It’s RPC! – With latencies and nasty partial failure characteristics </rant> 8
  • 9. 22-10-2008 Web Fundamentals • To embrace the Web, we need to understand how it works • The Web is a distributed hypermedia model – It doesn’t try to hide that distribution from you! • Our challenge: – Figure out the mapping between our problem domain and the underlying Web platform Why the Web was Inevitable Tim Berners-Lee is a physicist (Sir Tim is also a knight, but that’s not important right now) 9
  • 10. 22-10-2008 Why the Web was Inevitable He lived in a hole in the ground Underneath a big mountain (in Switzerland) Why the Web was Inevitable And because he was a physicist (and not yet a knight)... ...he only had a big atom- smashing thing for company 10
  • 11. 22-10-2008 Why the Web was Inevitable And for a lonesome physicist stuck underground with smashed up atoms for company... ...gopher just wasn’t going to cut it! The Web broke the rules 11
  • 12. 22-10-2008 Web Characteristics • Scalable • Fault-tolerant • Recoverable • Secure • Loosely coupled • Precisely the same characteristics we want in business software systems! Tenets for Web-based Services • Resource-based – Rather than service-oriented (the Web is not MOM!) • Addressability – Interesting things should have names • Statelessness – No stateful conversations with a resource • Representations – Resources can be serialised into representations • Links – Resources • Uniform Interface – No plumbing surprises! 12
  • 13. 22-10-2008 Resource Architecture Consumer (Web Client) Uniform Interface (Web Server) Logical Resources Resource Representation (e.g. XML document) Physical Resources Links • Connectedness is good in Web-based systems • Resource representations can contain other URIs • Links act as state transitions • Application (conversation) state is captured in terms of these states 13
  • 14. 22-10-2008 Describing Contracts with Links • The value of the Web is its “linked-ness” – Links on a Web page constitute a contractfor page traversals • The same is true of the programmatic Web • Use Links to describe state transitions in programmatic Web services – By navigating resources you change application state Links are State Transitions 14
  • 15. 22-10-2008 Links as APIs <confirm xmlns="..."> • Following a link <link rel="payment" href="https://pay" causes an action to type="application/xml"/> occur <link rel="postpone" • This is the start of a href="https://wishlist" state machine! type="application/xml"/> </confirm> • Links lead to other resources which also have links • Can make this stronger with semantics – Microformats Microformats • Microformats are an example of little “s” semantics • Innovation at the edges of the Web – Not by some central design authority (e.g. W3C) • Started by embedding machine-processable elements in Web pages – E.g. Calendar information, contact information, etc – Using existing HTML features like class, rel, etc 15
  • 16. 22-10-2008 Microformats and Resources • Use Microformats to structure resources where formats exist – I.e. Use hCard for contacts, hCalendar for data • Create your own formats (sparingly) in other places – Annotating links is a good start – <link rel="withdraw.cash" .../> – <link rel="service.post" type="application/x.atom+xml" href="{post-uri}" title="some title"> • The rel attribute describes the semantics of the referred resource We have a framework! • The Web gives us a processing and metadata model – Verbs and status codes – Headers • Gives us metadata contracts or Web “APIs” – URI Templates – Links • Strengthened with semantics – Little “s” 16
  • 17. 22-10-2008 Workflow • How does a typical enterprise workflow look when it’s implemented in a Web-friendly way? • Let’s take Starbuck’s as an example, the happy path is: – Make selection • Add any specialities – Pay – Wait for a while – Collect drink Workflow and MOM • With Web Services we exchange messages with the service Order Drink • Resource state is hidden from view Starbuck’s Service Add Specialities • Conversation state is all we know Order Confirmation – Advertise it with SSDL, BPEL • Uniform interface, Pay roles defined by SOAP – No “operations” Coffee! 17
  • 18. 22-10-2008 Web-friendly Workflow • What happens if workflow stages are modelled as resources? • And state transitions are modelled as hyperlinks or URI templates? • And events modelled by traversing links and changing resource states? • Answer: we get Web-friendly workflow – With all the quality of service provided by the Web Placing an Order • Place your order by POSTing it to a well- known URI – http://example.starbucks.com/order Starbuck’s Service Client 18
  • 19. 22-10-2008 Placing an Order: On the Wire • Response • Request 201 Created Location: POST /order HTTP 1.1 http://starbucks.example.org/ Host: starbucks.example.org order?1234 Content-Type: application/xml Content-Type: application/xml Content-Length: ... Content-Length: ... <order xmlns="urn:starbucks"> <order xmlns="urn:starbucks"> <drink>latte</drink> <drink>latte</drink> </order> <link rel="payment" If we have a (private) href="https://starbucks.examp A link! Is this the microformat, this can le.org/payment/order?1234" start of an API? become a neat API! type="application/xml"/> </order> Whoops! A mistake • I like my coffee to taste like coffee! • I need another shot of espresso – What are my OPTIONS?  Request  Response OPTIONS /order?1234 HTTP 1.1 200 OK Host: starbucks.example.org Allow: GET, PUT Phew! I can update my order, for now 19
  • 20. 22-10-2008 Optional: Look Before You Leap • See if the resource has changed since you submitted your order – If you’re fast your drink hasn’t been prepared yet  Request  Response PUT /order?1234 HTTP 1.1 100 Continue Host: starbucks.example.org I can still PUT this Expect: 100-Continue resource, for now. (417 Expectation Failed otherwise) Amending an Order • Add specialities to you order via PUT – Starbucks needs 2 shots! Starbuck’s Service Client 20
  • 21. 22-10-2008 Amending an Order: On the Wire • Request • Response PUT /order?1234 HTTP 1.1 200 OK Host: starbucks.example.org Location: Content-Type: application/xml http://starbucks.example.org/o Content-Length: ... rder?1234 Content-Type: application/xml <order xmlns="urn:starbucks"> Content-Length: ... <drink>latte</drink> <additions>shot</additions> <order xmlns="urn:starbucks"> <link rel="payment" <drink>latte</drink> href="https://starbucks.exampl <additions>shot</additions> e.org/payment/order?1234" <link rel="payment" type="application/xml"/> href="https://starbucks.exampl </order> e.org/payment/order?1234" type="application/xml"/> </order> Statelessness • Remember interactions with resources are stateless • The resource “forgets” about you while you’re not directly interacting with it • Which means race conditions are possible • Use If-Unmodified-Since on a timestamp to make sure – Or use If-Match and an ETag • You’ll get a 412 PreconditionFailed if you lost the race – But you’ll avoid potentially putting the resource into some inconsistent state 21
  • 22. 22-10-2008 Warning: Don’t be Slow! • Can only make changes until someone actually makes your drink – You’re safe if you use If-Unmodified-Since or If-Match – But resource state can change without you!  Request  Response PUT /order?1234 HTTP 1.1 409 Conflict Host: starbucks.example.org ... Too slow! Someone else has changed the state of my order  Request  Response OPTIONS /order?1234 HTTP 1.1 Allow: GET Host: starbucks.example.org Order Confirmation • Check your order status by GETing it Starbuck’s Service Client 22
  • 23. 22-10-2008 Order Confirmation: On the Wire • Request • Response GET /order?1234 HTTP 1.1 200 OK Host: starbucks.example.org Location: Content-Type: application/xml http://starbucks.example.org/orde Content-Length: ... r?1234 Content-Type: application/xml Content-Length: ... <order xmlns="urn:starbucks"> <drink>latte</drink> <additions>shot</additions> Are they trying to tell me <link rel="payment" something with hypermedia? href="https://starbucks.example.o rg/payment/order?1234" type="application/xml"/> </order> Order Payment • PUT your payment to the order resource https://starbucks.example.org/payment/order?1234 Starbuck’s Service Client New resource! https://starbucks.example.org/payment/order?1234 23
  • 24. 22-10-2008 How did I know to PUT? • The client knew the URI to PUT to from the link – PUT is also idempotent (can safely re-try) in case of failure • Verified with OPTIONS – Just in case you were in any doubt   Request  Response OPTIONS /payment/order?1234 HTTP 1.1 Allow: GET, PUT Host: starbucks.example.org Order Payment: On the Wire • Request • Response PUT /payment/order?1234 HTTP 1.1 201 Created Host: starbucks.example.org Location: Content-Type: application/xml https://starbucks.example.or Content-Length: ... g/payment/order?1234 Content-Type: application/xml <payment xmlns="urn:starbucks"> Content-Length: ... <cardNo>123456789</cardNo> <expires>07/07</expires> <name>John Citizen</name> <payment xmlns="urn:starbucks"> <amount>4.00</amount> <cardNo>123456789</cardNo> </payment> <expires>07/07</expires> <name>John Citizen</name> <amount>4.00</amount> </payment> 24
  • 25. 22-10-2008 Check that you’ve paid • Request • Response GET /order?1234 HTTP 1.1 200 OK Host: starbucks.example.org Content-Type: application/xml Content-Type: application/xml Content-Length: ... Content-Length: ... My “API” has changed, <order xmlns="urn:starbucks"> because I’ve paid <drink>latte</drink> enough now <additions>shot</additions> </order> What Happened Behind the Scenes? • Starbucks can use the same resources! • Plus some private resources of their own – Master list of coffees to be prepared • Authenticate to provide security on some resources – E.g. only Starbuck’s are allowed to view payments 25
  • 26. 22-10-2008 Payment • Only Starbucks systems can access the record of payments – Using the URI template: http://.../payment/order?{order_id} • We can use HTTP authorisation to enforce this  Response  Request GET /payment/order?1234 HTTP 1.1 401 Unauthorized WWW-Authenticate: Digest Host: starbucks.example.org realm="starbucks.example.org", qop="auth", nonce="ab656...", opaque="b6a9..."  Request  Response GET /payment/order?1234 HTTP 1.1 200 OK Host: starbucks.example.org Authorization: Digest username="jw" Content-Type: application/xml realm="starbucks.example.org“ Content-Length: ... nonce="..." uri="payment/order?1234" <payment xmlns="urn:starbucks"> qop=auth <cardNo>123456789</cardNo> nc=00000001 <expires>07/07</expires> cnonce="..." <name>John Citizen</name> reponse="..." <amount>4.00</amount> opaque="..." </payment> Master Coffee List • /orders URI for all orders, only accepts GET – Anyone can use it, but it is only useful for Starbuck’s – It’s not identified in any of our public APIs anywhere, but the back- end systems know the URI  Response  Request 200 OK Content-Type: application/xml GET /orders HTTP 1.1 Content-Length: ... <?xml version="1.0" ?> Host: starbucks.example.org <feed xmlns="http://www.w3.org/2005/Atom"> <title>Coffees to make</title> <link rel="alternate" href="http://example.starbucks.com/order.atom"/> <updated>2007-07-10T09:18:43Z</updated> <author><name>Johnny Barrista</name></author> Atom feed! <id>urn:starkbucks:45ftis90</id> <entry> <link rel="alternate" type="application/xml" href="http://starbucks.example.org/order?1234"/> <id>urn:starbucks:a3tfpfz3</id> </entry> ... </feed> 26
  • 27. 22-10-2008 Finally drink your coffee... Source: http://images.businessweek.com/ss/06/07/top_brands/image/starbucks.jpg What did we learn from Starbucks? • HTTP has a header/status combination for every occasion • APIs are expressed in terms of links, and links are great! – APP-esque APIs • APIs can also be constructed with URI templates and inference – But beware tight coupling outside of CRUD services! • XML is fine, but we could also use formats like Atom, JSON or even default to XHTML as a sensible middle ground • State machines (defined by links) are important – Just as in Web Services… 27
  • 28. 22-10-2008 Summary • Web-based services are about state machines – The HATEOAS constraint from REST • Use Web for massive scalability, fault tolerance – If you can tolerate higher latencies • The Web is now starting to feel the love from middleware vendors too – beware! Starbucks Written Up @ InfoQ http://www.infoq.com/articles/webber-rest-workflow 28
  • 29. 22-10-2008 Questions? Blog: http://jim.webber.name GET /Connected Jim Webber Savas Parastatidis Ian Robinson Coming Q1 2009… 29