SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
RESTful Enterprise Development
                          Ian Robinson




http://iansrobinson.com
The Challenge

Large entertainment and communications company
   •   Digital phone
   •   Broadband internet
   •   Cable TV
   •   Domestic and business subscribers

Replace 20+ year old VAX BASIC billing application
   •   Order capture
   •   Order fulfilment
   •   Product catalogue
   •   Field force management
   •   Provisioning
   •   Rating and mediation
   •   Billing
Business Services (Subset)


       Product
     Management




                               Order
                                          Provisioning
                             Management




      Customer
     Management
Self-Sufficient Business Services


        Product
      Management


          Product


                                Order
                                               Provisioning
                              Management


                                    Order            Product
                                    Product          Activity
                                    Customer


       Customer
      Management


           Customer
Isn’t This Data Redundancy?




         Product




                              Order      Product
                              Product    Activity
                              Customer




         Customer
Custom and COTs


       Product
     Management


         Vendor
         Product
          App

                       Order
                                  Provisioning
                     Management


                                        Product
                         Vendor
                          App           Activity



      Customer
     Management


          Customer
Who Needs to Know What?


                                                Service Ordered
       Product
                      Product Updated
     Management




                                   Order
                                                        Provisioning
                                 Management




      Customer
     Management



                                                 Service Provisioned
                          Customer Updated


                  Entity state                Application protocol
Implementation Options

 Point-to-point
    • Publisher maintains subscriber list
    • Queues to reduce temporal coupling

 Bus
    • Subscriptions and guaranteed delivery delegated to
      middleware
    • Reduced location and temporal coupling

 Consumers pull events
    • Consumers pull events
    • Guaranteed delivery delegated to consumers
    • No list of subscribers to maintain
Polling with Atom

             Order
           Management


             Vendor
              App

              WS-*


                     Atom Client




            Atom                   http://example.com/products/notifications.atom
             Product
           Management
Atom and AtomPub

 Atom     What does published information look like?
      XML vocabulary
        Feed Directory of published resources
        Entry Content, or link to content

 AtomPub       How do you publish information?
      Protocol
         Discover Service & category documents
         Publish Collections and members
                   POST, GET, PUT, DELETE
                   Response codes and location headers
         Conflicts ETags, conditional GETs
On the Wire

    Request
   GET /products/notifications.atom HTTP/1.1
   Host: example.com


                                                                               Response

   HTTP/1.1 200 OK
   Cache-Control: max-age=60
   Content-Length: 12230
   Content-Type: application/atom+xml;charset=quot;utf-8quot;
   Content-Location: http://example.com/products/notifications/2008/9/10/13.atom
   Last-Modified: Wed, 10 Sep 2008 13:50:32 GMT
   ETag: quot;6a0806caquot;
   Date: Wed, 10 Sep 2008 13:51:03 GMT

   <feed xmlns=quot;http://www.w3.org/2005/Atomquot;><title type=quot;textquot;>Product
   Notifications</title><id>urn:uuid:be21b6b0-57b4-4029-ada4-
   09585ee74adc</id><updated>2008-09-10T14:50:32+01:00</updated><author><name>Product
   Management</name><uri>http://example.com/products</uri></author><link rel=quot;selfquot;
   href=quot;http://example.com/products/notifications/2008/9/10/14.atomquot;/><link rel=quot;nextquot;
   href=quot;http://example.com/products/notifications/2008/9/10/13.atomquot;/><entry><id>urn:u
   uid:95506d98-aae9-4d34-a8f4-1ff30bece80c</id><title type=quot;textquot;>product
   created</title><updated>2008-09-10T14:45:32+01:00</updated><link rel=quot;selfquot;
   href=quot;http://example.com/products/notifications/95506d98-aae9-4d34-a8f4-
   1ff30bece80c.atomquot;/><category term=quot;productquot;/><category term=quot;createdquot;/><content
   type=quot;application/xmlquot;><ProductCreated xmlns =quot;http://example.com/productsquot;><Id>52
   ...
Atom Feed Represents an Event Stream

  <feed xmlns=quot;http://www.w3.org/2005/Atomquot;>

   <title type=quot;textquot;>Product Notifications</title>
   <id>urn:uuid:be21b6b0-57b4-4029-ada4-09585ee74adc</id>
   <updated>2008-09-10T14:50:32+01:00</updated>
   <author>
     <name>Product Management</name>
     <uri>http://example.com/products</uri>
   </author>

   <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/2008/9/10/13.atomquot;/>
   <link rel=quot;nextquot; href=quot;http://example.com/products/notifications/2008/9/10/12.atomquot;/>

   <entry>
     <id>urn:uuid:95506d98-aae9-4d34-a8f4-1ff30bece80c</id>
     <title type=quot;textquot;>product created</title>
     <updated>2008-09-10T14:45:32+01:00</updated>

      <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/95506d98-aae9-4d34-a8f4-
  1ff30bece80c.atomquot;/>

     <category term=quot;productquot;/>
     <category term=quot;createdquot;/>

     <content type=quot;application/xmlquot;>
       <ProductCreated xmlns=quot;http://example.com/productsquot;>
         <Id>527</Id>
         <Href>http://example.com/products/product/527</Href>
         <Version>1</Version>
         <Code>DP</Code>
         <Name>Digital Phone</Name>
         ...
Retrieving the Archive by Following Links

     Request
   GET /products/notifications/2008/9/10/12.atom HTTP/1.1
   GET /products/notifications/2008/9/10/12.atom HTTP/1.1
   Host: example.com


                                                                              Response

   HTTP/1.1 200 OK
   Cache-Control: max-age=2592000
   Content-Length: 9877
   Content-Type: application/atom+xml;charset=quot;utf-8quot;
   Last-Modified: Wed, 10 Sep 2008 12:57:14 GMT
   Date: Wed, 10 Sep 2008 13:51:46 GMT

   <feed xmlns=quot;http://www.w3.org/2005/Atomquot;><title type=quot;textquot;>Product
   Notifications</title><id>urn:uuid:4cbc0acf-a211-40ce-a50e-
   a75d299571da</id><updated>2008-09-10T13:57:14+01:00</updated><author><name>Product
   Management</name><uri>http://example.com/products</uri></author><link rel=quot;selfquot;
   href=quot;http://example.com/products/notifications/2008/9/10/12.atomquot;/><link rel=quot;nextquot;
   href=quot;http://example.com/products/notifications/2008/9/10/11.atomquot;/><link
   rel=quot;previousquot;
   href=quot;http://example.com/products/notifications/2008/9/10/13.atomquot;/><entry><id>urn:u
   uid:b436fda6-93f5-4c00-98a3-06b62c3d31b8</id><title type=quot;textquot;>hardware
   deprecated</title><updated>2008-09-10T13:57:14+01:00</updated><link rel=quot;selfquot;
   href=quot;http://example.com/products/notifications/b436fda6-93f5-4c00-98a3-
   06b62c3d31b8.atomquot;/><category term=quot;hardwarequot;/><category term=quot;deprecatedquot;/><content
   type=quot;application/xmlquot;><HardwareDeprecated xmlns =quot;http://example.com/productsquot;><Id>
   ...
Archive

  <feed xmlns=quot;http://www.w3.org/2005/Atomquot;>
    <title type=quot;textquot;>Product Notifications</title>
    <id>urn:uuid:4cbc0acf-a211-40ce-a50e-a75d299571da</id>
    <updated>2008-09-10T13:57:14+01:00</updated>
    <author>
      <name>Product Management</name>
      <uri>http://example.com/products</uri>
    </author>

   <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/2008/9/10/12.atomquot;/>
   <link rel=quot;nextquot; href=quot;http://example.com/products/notifications/2008/9/10/11.atomquot;/>
   <link rel=quot;previousquot; href=quot;http://example.com/products/notifications/2008/9/10/13.atomquot;/>

   <entry>
     <id>urn:uuid:b436fda6-93f5-4c00-98a3-06b62c3d31b8</id>
     <title type=quot;textquot;>hardware deprecated</title>
     <updated>2008-09-10T13:57:14+01:00</updated>

      <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/b436fda6-93f5-4c00-98a3-
  06b62c3d31b8.atomquot;/>

     <category term=quot;hardwarequot;/>
     <category term=quot;deprecatedquot;/>

     <content type=quot;application/xmlquot;>
         <HardwareDeprecated xmlns=quot;http://example.com/productsquot;>
            <Id>391</Id>
         </HardwareDeprecated>
     </content>
   </entry>
   ...
Navigating the Archive


      Latest                          Archive




                                                                          10 Sept 2008
                                                                          10:00 – 11:00


                                                          10 Sept 2008
                                                          11:00 – 12:00


                                         10 Sept 2008
                                         12:00 – 13:00


                      10 Sept 2008
                      13:00 – 14:00




                                                  Local Cache

         http://example.com/products/notifications.atom
         http://example.com/products/notifications/2008/9/10/11.atom
         http://example.com/products/notifications/2008/9/10/12.atom
         http://example.com/products/notifications/2008/9/10/13.atom
Handling Eager Re-polling

    Request
   GET /products/notifications.atom HTTP/1.1
   Host: example.com
   If-None-Match:
   If-None-Match: quot;6a0806caquot;



                                               Response

   HTTP/1.1 304 Not Modified
   HTTP/1.1 304 Not Modified
   Date: Wed, 10 Sep 2008 13:57:20 GMT
An Alternative Feed Format

  <feed xmlns=quot;http://www.w3.org/2005/Atomquot;>

    <entry>
      <id>urn:uuid:95506d98-aae9-4d34-a8f4-1ff30bece80c</id>
      <title type=quot;textquot;>product created</title>
      <updated>2008-09-10T14:45:32+01:00</updated>
      <link rel=quot;alternatequot; href=quot;http://example.com/products/notifications/95506d98-aae9-4d34-
  a8f4-1ff30bece80c.atomquot;/>
      <category term=quot;productquot;/>
      <category term=quot;createdquot;/>
    </entry>

    <entry>
      <id>urn:uuid:a1ec0fba-faa7-4d73-b6ce-c69c86c205b6</id>
      <title type=quot;textquot;>product deprecated</title>
      <updated>2008-09-10T14:37:20+01:00</updated>
      <link rel=quot;alternatequot; href=quot;http://example.com/products/notifications/a1ec0fba-faa7-4d73-
  b6ce-c69c86c205b6.atomquot;/>
      <category term=quot;productquot;/>
      <category term=quot;deprecatedquot;/>
    </entry>

    <entry>
      <id>urn:uuid:f6e14ff6-4007-498e-9d68-076b3b8b0ed2</id>
      <title type=quot;textquot;>hardware updated</title>
      <updated>2008-09-10T14:21:46+01:00</updated>
      <link rel=quot;alternatequot; href=quot;http://example.com/products/notifications/f6e14ff6-4007-498e-
  9d68-076b3b8b0ed2.atomquot;/>
      <category term=quot;hardwarequot;/>
      <category term=quot;updatedquot;/>
    </entry>
    ...
Atom Entry Represents an Event

  <entry xmlns=quot;http://www.w3.org/2005/Atomquot;>
    <id>urn:uuid:95506d98-aae9-4d34-a8f4-1ff30bece80c</id>
    <title type=quot;textquot;>product created</title>
    <updated>2008-09-10T14:45:32+01:00</updated>
    <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/95506d98-aae9-4d34-a8f4-
  1ff30bece80c.atomquot;/>
    <category term=quot;productquot;/>
    <category term=quot;createdquot;/>
    <content type=quot;application/xmlquot;>
      <ProductCreated xmlns=quot;http://example.com/productsquot;>
        <Id>527</Id>
        <Link etag=quot;1quot;>http://example.com/products/product/527.xml</Link>
        <Code>DP</Code>
        <Name>Digital Phone</Name>
        <Price>120.00</Price>
        <Features>
          <Feature>
            <Name>Voice mail</Name>
          </Feature>
          <Feature>
            <Name>Call waiting</Name>
          </Feature>
        </Features>
        <Hardware>
          <Hardware>
            <Id>931</Id>
            <Link etag=quot;6quot;>http://example.com/products/hardware/931.xml</Link>
          </Hardware>
        </Hardware>
      </ProductCreated>
    </content>
  </entry>
Is This the Latest Version of an Entity?

     Request
    HEAD /products/hardware/931.xml HTTP/1.1
    Host: example.com
    If-None-Match: quot;6quot;



                                               Response
    HTTP/1.1 304 Not Modified
    Date: Fri, 12 Sep 2008 09:00:34 GMT
Connectedness

              http://example.com/products/notifications/2008/9/10/12.atom

                                                                                                             Events
          feed                                                              entry
       http://example.com/products/notifications/95506d98-aae9-4d34-a8f4-1ff30bece80c.atom




                                http://example.com/products/product/527.xml      http://example.com/products/hardware/931.xml
   Entities
                                   product                                                               hardware
                                                         http://example.com/products/hardware/931.xml
Implementing the Feed Using Domain Query


                            Atom
Implementing the Feed Using AtomPub


                                       Atom Server
                            Atom
                           AtomPub




                                   AtomPub Client
Atom- and AtomPub-Enabled Service




        AtomPub                     AtomPub



                                              Atom
                   Atom
Handling Conflicts


                  C

                          With Versioning
                          A applies U1(v2)
                          B applies U2(v3)

                          B publishes U2(v3)
                          A publishes U1(v2)

              A       B   Feed = U1(v2), U2(v3)

                          C applies U2(v3)
                          C discards U1(v2)
Caching


  Uri                                                        Description      Caching
  /products/notifications.atom                                                 Short
                                                               Latest

  /products/notifications/{year}/{month}/{day}/{hour}.atom                     Long
                                                               Archive

  /products/notifications/{entry-id}.atom                                      Long
                                                               Notification

  /products/product/{product-id}.xml                                           Varies
                                                               Product

  /products/hardware/{hardware-id}.xml                                         Varies
                                                               Hardware
Caching the Bus


  Client

                  Caching Proxy
                                  Service

  Client




  Client
Caching Dilemma



     Efficient use of network
                    resources


             High TTL              Low TTL

                                Publisher controls freshness
                                of data
Cache Channels

Mark Nottingham, Yahoo
  • http://www.mnot.net/cache_channels/

Use Atom to extend the freshness of cached responses

                                                                               Response
   Cache-Control: max-age=60, channel=quot;http://example.com/products/channel/index.atomquot;,
   channel-maxage




Response remains fresh as long as:
   • Cache polls channel at least as often as quot;precisionquot;
     specified by channel
   • Channel doesn’t issue stale event
FriendFeed’s Simple Update Protocol



              50b56c98


                         ba202c4f

                                                           cfd52350 = http://...
         cfd52350
                                                           4e073754 = http://..
                    4e073754

              7eed6773
                                    http://friendfeed.com/api/sup.json
                                    {quot;since_timequot;:quot;2008-09-
                                    29T16:15:58Zquot;,quot;update_timequot;:quot;2008-09-
                                    29T16:17:08Zquot;,quot;available_periodsquot;:{600:quot;h
                                    ttp://friendfeed.com/api/sup.json?seconds
                                    =600quot;,300:quot;http://friendfeed.com/api/sup.
                                    json?seconds=300quot;,60:quot;http://friendfeed.c
                                    om/api/sup.json?seconds=60quot;},quot;periodquot;:60,
                                    quot;updatesquot;:[[quot;504a7c79quot;,quot;09tgcquot;],[quot;f250566
                                    3quot;,quot;09tgcquot;],[quot;db778326quot;,quot;09tgDquot;],[quot;0dfa45
                                    29quot;,quot;09tgrquot;],[quot;57216b13quot;,quot;09tgrquot;],[quot;64c1a
                                                    cfd52350
                                    99equot;,quot;09tgfquot;],[quot;cfd52350quot;,quot;09tgUquot;],[quot;35aa
                                    0a37quot;,quot;09tg1quot;],[quot;e690f0e9quot;,quot;09tgDquot;],[quot;ad0
                                    c0b24quot;,quot;09tgDquot;],[quot;a8d879e9quot;,quot;09tgqquot;],[quot;bc
                                    df1a15quot;,quot;09tgMquot;],[quot;4e073754quot;,quot;09tgCquot;],[quot;8
                                                       4e073754
Summary

 Service-oriented
   Self-sufficient business services
   Process decoupling
   Distributed architecture inside service boundary
 Event-driven
   Achieve eventual consistency
   Advance execution of application protocol
 RESTful
   Connected, addressable resources
   Atom and AtomPub to implement events
   Caching supports resilience and scalability
   ETags support consistency
Thank you




http://iansrobinson.com

Más contenido relacionado

La actualidad más candente

Performance Management In The New Frontier Of Rich Internet Applications
Performance Management In The New Frontier Of Rich Internet ApplicationsPerformance Management In The New Frontier Of Rich Internet Applications
Performance Management In The New Frontier Of Rich Internet ApplicationsBen Rushlo
 
Maximize your ax roi leveraging mobile apps
Maximize your ax roi leveraging mobile appsMaximize your ax roi leveraging mobile apps
Maximize your ax roi leveraging mobile appsINDUSA Technical Corp.
 
Infopulse presentation
Infopulse presentation Infopulse presentation
Infopulse presentation HI-TECH_Org_Ua
 
Are Your Applications Delivering What Your End-Users Expect?
Are Your Applications Delivering What Your End-Users Expect?Are Your Applications Delivering What Your End-Users Expect?
Are Your Applications Delivering What Your End-Users Expect?Compuware APM
 
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM USSmartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM USIBM Danmark
 
2008 11 18_contracts _oaug-sig
2008 11 18_contracts _oaug-sig2008 11 18_contracts _oaug-sig
2008 11 18_contracts _oaug-sigDZee Solutions
 
Recent Survey Reveals that Optimized APM Approaches Increase Business Efficie...
Recent Survey Reveals that Optimized APM Approaches Increase Business Efficie...Recent Survey Reveals that Optimized APM Approaches Increase Business Efficie...
Recent Survey Reveals that Optimized APM Approaches Increase Business Efficie...Compuware APM
 
Predictable testing for faster time to market.
Predictable testing for faster time to market.Predictable testing for faster time to market.
Predictable testing for faster time to market.Mindtree Ltd.
 
Archer Software Presentation
Archer Software  PresentationArcher Software  Presentation
Archer Software PresentationHI-TECH_Org_Ua
 
Supply chain presentation 11 2006
Supply chain presentation 11 2006Supply chain presentation 11 2006
Supply chain presentation 11 2006Girard Brewer
 
BPOS Information
BPOS InformationBPOS Information
BPOS Informationsleyland
 

La actualidad más candente (14)

Navyug corporate presentation 2012
Navyug corporate presentation 2012Navyug corporate presentation 2012
Navyug corporate presentation 2012
 
Performance Management In The New Frontier Of Rich Internet Applications
Performance Management In The New Frontier Of Rich Internet ApplicationsPerformance Management In The New Frontier Of Rich Internet Applications
Performance Management In The New Frontier Of Rich Internet Applications
 
Maximize your ax roi leveraging mobile apps
Maximize your ax roi leveraging mobile appsMaximize your ax roi leveraging mobile apps
Maximize your ax roi leveraging mobile apps
 
Infopulse presentation
Infopulse presentation Infopulse presentation
Infopulse presentation
 
Oracle Realizing the Potential of SOA
Oracle Realizing the Potential of SOAOracle Realizing the Potential of SOA
Oracle Realizing the Potential of SOA
 
Are Your Applications Delivering What Your End-Users Expect?
Are Your Applications Delivering What Your End-Users Expect?Are Your Applications Delivering What Your End-Users Expect?
Are Your Applications Delivering What Your End-Users Expect?
 
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM USSmartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
 
Introduction to Force.com
Introduction to Force.comIntroduction to Force.com
Introduction to Force.com
 
2008 11 18_contracts _oaug-sig
2008 11 18_contracts _oaug-sig2008 11 18_contracts _oaug-sig
2008 11 18_contracts _oaug-sig
 
Recent Survey Reveals that Optimized APM Approaches Increase Business Efficie...
Recent Survey Reveals that Optimized APM Approaches Increase Business Efficie...Recent Survey Reveals that Optimized APM Approaches Increase Business Efficie...
Recent Survey Reveals that Optimized APM Approaches Increase Business Efficie...
 
Predictable testing for faster time to market.
Predictable testing for faster time to market.Predictable testing for faster time to market.
Predictable testing for faster time to market.
 
Archer Software Presentation
Archer Software  PresentationArcher Software  Presentation
Archer Software Presentation
 
Supply chain presentation 11 2006
Supply chain presentation 11 2006Supply chain presentation 11 2006
Supply chain presentation 11 2006
 
BPOS Information
BPOS InformationBPOS Information
BPOS Information
 

Similar a Res Tful Enterprise Development

Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insightruiruitang
 
Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insightruiruitang
 
Caveo Corporation 10
Caveo Corporation 10Caveo Corporation 10
Caveo Corporation 10Hans Olo
 
Java micro-services
Java micro-servicesJava micro-services
Java micro-servicesJames Lewis
 
How to stop fingerpointing when your application is down
How to stop fingerpointing when your application is downHow to stop fingerpointing when your application is down
How to stop fingerpointing when your application is downCompuware ASEAN
 
Solving 21st Century App Performance Problems Without 21 People
Solving 21st Century App Performance Problems Without 21 PeopleSolving 21st Century App Performance Problems Without 21 People
Solving 21st Century App Performance Problems Without 21 PeopleDynatrace
 
OrchestratedFuel - SAP for Petroleum Distributors and Suppliers
OrchestratedFuel - SAP for Petroleum Distributors and SuppliersOrchestratedFuel - SAP for Petroleum Distributors and Suppliers
OrchestratedFuel - SAP for Petroleum Distributors and SuppliersOrchestratedFuel
 
Medical Device Agile Quality Demo
Medical Device Agile Quality DemoMedical Device Agile Quality Demo
Medical Device Agile Quality DemoZero Wait-State
 
Insta Serv A Conceptual Simplified Oss Architecture
Insta Serv   A Conceptual Simplified Oss ArchitectureInsta Serv   A Conceptual Simplified Oss Architecture
Insta Serv A Conceptual Simplified Oss ArchitectureIndranil Roychowdhury
 
IEEE-SCCPresentation.290214544
IEEE-SCCPresentation.290214544IEEE-SCCPresentation.290214544
IEEE-SCCPresentation.290214544ypai
 
Oracle SOA Suite Overview - Integration in a Service-Oriented World
Oracle SOA Suite Overview - Integration in a Service-Oriented WorldOracle SOA Suite Overview - Integration in a Service-Oriented World
Oracle SOA Suite Overview - Integration in a Service-Oriented WorldOracleContractors
 
CSG CommsDay Melb Congress CSG/VicTrack
CSG CommsDay Melb Congress CSG/VicTrackCSG CommsDay Melb Congress CSG/VicTrack
CSG CommsDay Melb Congress CSG/VicTrackGrahameLynch1
 
Lunch and Learn and Sneakers
Lunch and Learn and SneakersLunch and Learn and Sneakers
Lunch and Learn and SneakersBill Zajac
 
Ibm cloud forum managing heterogenousclouds_final
Ibm cloud forum managing heterogenousclouds_finalIbm cloud forum managing heterogenousclouds_final
Ibm cloud forum managing heterogenousclouds_finalMauricio Godoy
 
Paul Butterworth S O A Runtime Governance Practices
Paul  Butterworth    S O A  Runtime  Governance  PracticesPaul  Butterworth    S O A  Runtime  Governance  Practices
Paul Butterworth S O A Runtime Governance PracticesSOA Symposium
 
Oracle Enterprise 2.0 & Business Applications
Oracle Enterprise 2.0 &  Business ApplicationsOracle Enterprise 2.0 &  Business Applications
Oracle Enterprise 2.0 & Business ApplicationsJaime Cid
 
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Vinícius Carvalho
 
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...VMware Tanzu
 

Similar a Res Tful Enterprise Development (20)

Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insight
 
Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insight
 
Caveo Corporation 10
Caveo Corporation 10Caveo Corporation 10
Caveo Corporation 10
 
Java micro-services
Java micro-servicesJava micro-services
Java micro-services
 
How to stop fingerpointing when your application is down
How to stop fingerpointing when your application is downHow to stop fingerpointing when your application is down
How to stop fingerpointing when your application is down
 
Performance Engineering Basics
Performance Engineering BasicsPerformance Engineering Basics
Performance Engineering Basics
 
Solving 21st Century App Performance Problems Without 21 People
Solving 21st Century App Performance Problems Without 21 PeopleSolving 21st Century App Performance Problems Without 21 People
Solving 21st Century App Performance Problems Without 21 People
 
OrchestratedFuel - SAP for Petroleum Distributors and Suppliers
OrchestratedFuel - SAP for Petroleum Distributors and SuppliersOrchestratedFuel - SAP for Petroleum Distributors and Suppliers
OrchestratedFuel - SAP for Petroleum Distributors and Suppliers
 
Medical Device Agile Quality Demo
Medical Device Agile Quality DemoMedical Device Agile Quality Demo
Medical Device Agile Quality Demo
 
Insta Serv A Conceptual Simplified Oss Architecture
Insta Serv   A Conceptual Simplified Oss ArchitectureInsta Serv   A Conceptual Simplified Oss Architecture
Insta Serv A Conceptual Simplified Oss Architecture
 
IEEE-SCCPresentation.290214544
IEEE-SCCPresentation.290214544IEEE-SCCPresentation.290214544
IEEE-SCCPresentation.290214544
 
Oracle SOA Suite Overview - Integration in a Service-Oriented World
Oracle SOA Suite Overview - Integration in a Service-Oriented WorldOracle SOA Suite Overview - Integration in a Service-Oriented World
Oracle SOA Suite Overview - Integration in a Service-Oriented World
 
CSG CommsDay Melb Congress CSG/VicTrack
CSG CommsDay Melb Congress CSG/VicTrackCSG CommsDay Melb Congress CSG/VicTrack
CSG CommsDay Melb Congress CSG/VicTrack
 
Lunch and Learn and Sneakers
Lunch and Learn and SneakersLunch and Learn and Sneakers
Lunch and Learn and Sneakers
 
Ibm cloud forum managing heterogenousclouds_final
Ibm cloud forum managing heterogenousclouds_finalIbm cloud forum managing heterogenousclouds_final
Ibm cloud forum managing heterogenousclouds_final
 
Paul Butterworth S O A Runtime Governance Practices
Paul  Butterworth    S O A  Runtime  Governance  PracticesPaul  Butterworth    S O A  Runtime  Governance  Practices
Paul Butterworth S O A Runtime Governance Practices
 
Oracle Enterprise 2.0 & Business Applications
Oracle Enterprise 2.0 &  Business ApplicationsOracle Enterprise 2.0 &  Business Applications
Oracle Enterprise 2.0 & Business Applications
 
Puppet on a string
Puppet on a stringPuppet on a string
Puppet on a string
 
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
 
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
 

Más de ConSanFrancisco123

Open Ap Is State Of The Market
Open Ap Is State Of The MarketOpen Ap Is State Of The Market
Open Ap Is State Of The MarketConSanFrancisco123
 
Yahoo Pipes Middleware In The Cloud
Yahoo Pipes Middleware In The CloudYahoo Pipes Middleware In The Cloud
Yahoo Pipes Middleware In The CloudConSanFrancisco123
 
Yellowpagescom Behind The Curtain
Yellowpagescom Behind The CurtainYellowpagescom Behind The Curtain
Yellowpagescom Behind The CurtainConSanFrancisco123
 
Teamwork Is An Individual Skill How To Build Any Team Any Time
Teamwork Is An Individual Skill How To Build Any Team Any TimeTeamwork Is An Individual Skill How To Build Any Team Any Time
Teamwork Is An Individual Skill How To Build Any Team Any TimeConSanFrancisco123
 
Agility Possibilities At A Personal Level
Agility Possibilities At A Personal LevelAgility Possibilities At A Personal Level
Agility Possibilities At A Personal LevelConSanFrancisco123
 
Behind The Scenes At My Spacecom
Behind The Scenes At My SpacecomBehind The Scenes At My Spacecom
Behind The Scenes At My SpacecomConSanFrancisco123
 
Making Threat Modeling Useful To Software Development
Making Threat Modeling Useful To Software DevelopmentMaking Threat Modeling Useful To Software Development
Making Threat Modeling Useful To Software DevelopmentConSanFrancisco123
 
Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static AnalysisConSanFrancisco123
 
Agile Software Development In The Large
Agile Software Development In The LargeAgile Software Development In The Large
Agile Software Development In The LargeConSanFrancisco123
 
Introduction Challenges In Agile And How To Overcome Them
Introduction Challenges In Agile And How To Overcome ThemIntroduction Challenges In Agile And How To Overcome Them
Introduction Challenges In Agile And How To Overcome ThemConSanFrancisco123
 
Business Natural Languages Development In Ruby
Business Natural Languages Development In RubyBusiness Natural Languages Development In Ruby
Business Natural Languages Development In RubyConSanFrancisco123
 
Orbitz World Wide An Architectures Response To Growth And Change
Orbitz World Wide An Architectures Response To Growth And ChangeOrbitz World Wide An Architectures Response To Growth And Change
Orbitz World Wide An Architectures Response To Growth And ChangeConSanFrancisco123
 
Introduction Architectures Youve Always Wondered About
Introduction Architectures Youve Always Wondered AboutIntroduction Architectures Youve Always Wondered About
Introduction Architectures Youve Always Wondered AboutConSanFrancisco123
 

Más de ConSanFrancisco123 (20)

Open Ap Is State Of The Market
Open Ap Is State Of The MarketOpen Ap Is State Of The Market
Open Ap Is State Of The Market
 
Yahoo Pipes Middleware In The Cloud
Yahoo Pipes Middleware In The CloudYahoo Pipes Middleware In The Cloud
Yahoo Pipes Middleware In The Cloud
 
Ruby V Ms A Comparison
Ruby V Ms A ComparisonRuby V Ms A Comparison
Ruby V Ms A Comparison
 
Yellowpagescom Behind The Curtain
Yellowpagescom Behind The CurtainYellowpagescom Behind The Curtain
Yellowpagescom Behind The Curtain
 
Teamwork Is An Individual Skill How To Build Any Team Any Time
Teamwork Is An Individual Skill How To Build Any Team Any TimeTeamwork Is An Individual Skill How To Build Any Team Any Time
Teamwork Is An Individual Skill How To Build Any Team Any Time
 
Agility Possibilities At A Personal Level
Agility Possibilities At A Personal LevelAgility Possibilities At A Personal Level
Agility Possibilities At A Personal Level
 
Gallio Crafting A Toolchain
Gallio Crafting A ToolchainGallio Crafting A Toolchain
Gallio Crafting A Toolchain
 
10 Ways To Improve Your Code
10 Ways To Improve Your Code10 Ways To Improve Your Code
10 Ways To Improve Your Code
 
Http Status Report
Http Status ReportHttp Status Report
Http Status Report
 
Behind The Scenes At My Spacecom
Behind The Scenes At My SpacecomBehind The Scenes At My Spacecom
Behind The Scenes At My Spacecom
 
Building Blueprint With Gwt
Building Blueprint With GwtBuilding Blueprint With Gwt
Building Blueprint With Gwt
 
Security Cas And Open Id
Security Cas And Open IdSecurity Cas And Open Id
Security Cas And Open Id
 
Soa And Web Services Security
Soa And Web Services SecuritySoa And Web Services Security
Soa And Web Services Security
 
Making Threat Modeling Useful To Software Development
Making Threat Modeling Useful To Software DevelopmentMaking Threat Modeling Useful To Software Development
Making Threat Modeling Useful To Software Development
 
Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static Analysis
 
Agile Software Development In The Large
Agile Software Development In The LargeAgile Software Development In The Large
Agile Software Development In The Large
 
Introduction Challenges In Agile And How To Overcome Them
Introduction Challenges In Agile And How To Overcome ThemIntroduction Challenges In Agile And How To Overcome Them
Introduction Challenges In Agile And How To Overcome Them
 
Business Natural Languages Development In Ruby
Business Natural Languages Development In RubyBusiness Natural Languages Development In Ruby
Business Natural Languages Development In Ruby
 
Orbitz World Wide An Architectures Response To Growth And Change
Orbitz World Wide An Architectures Response To Growth And ChangeOrbitz World Wide An Architectures Response To Growth And Change
Orbitz World Wide An Architectures Response To Growth And Change
 
Introduction Architectures Youve Always Wondered About
Introduction Architectures Youve Always Wondered AboutIntroduction Architectures Youve Always Wondered About
Introduction Architectures Youve Always Wondered About
 

Último

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
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
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
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...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Res Tful Enterprise Development

  • 1. RESTful Enterprise Development Ian Robinson http://iansrobinson.com
  • 2. The Challenge Large entertainment and communications company • Digital phone • Broadband internet • Cable TV • Domestic and business subscribers Replace 20+ year old VAX BASIC billing application • Order capture • Order fulfilment • Product catalogue • Field force management • Provisioning • Rating and mediation • Billing
  • 3. Business Services (Subset) Product Management Order Provisioning Management Customer Management
  • 4. Self-Sufficient Business Services Product Management Product Order Provisioning Management Order Product Product Activity Customer Customer Management Customer
  • 5. Isn’t This Data Redundancy? Product Order Product Product Activity Customer Customer
  • 6. Custom and COTs Product Management Vendor Product App Order Provisioning Management Product Vendor App Activity Customer Management Customer
  • 7. Who Needs to Know What? Service Ordered Product Product Updated Management Order Provisioning Management Customer Management Service Provisioned Customer Updated Entity state Application protocol
  • 8. Implementation Options Point-to-point • Publisher maintains subscriber list • Queues to reduce temporal coupling Bus • Subscriptions and guaranteed delivery delegated to middleware • Reduced location and temporal coupling Consumers pull events • Consumers pull events • Guaranteed delivery delegated to consumers • No list of subscribers to maintain
  • 9. Polling with Atom Order Management Vendor App WS-* Atom Client Atom http://example.com/products/notifications.atom Product Management
  • 10. Atom and AtomPub Atom What does published information look like? XML vocabulary Feed Directory of published resources Entry Content, or link to content AtomPub How do you publish information? Protocol Discover Service & category documents Publish Collections and members POST, GET, PUT, DELETE Response codes and location headers Conflicts ETags, conditional GETs
  • 11. On the Wire Request GET /products/notifications.atom HTTP/1.1 Host: example.com Response HTTP/1.1 200 OK Cache-Control: max-age=60 Content-Length: 12230 Content-Type: application/atom+xml;charset=quot;utf-8quot; Content-Location: http://example.com/products/notifications/2008/9/10/13.atom Last-Modified: Wed, 10 Sep 2008 13:50:32 GMT ETag: quot;6a0806caquot; Date: Wed, 10 Sep 2008 13:51:03 GMT <feed xmlns=quot;http://www.w3.org/2005/Atomquot;><title type=quot;textquot;>Product Notifications</title><id>urn:uuid:be21b6b0-57b4-4029-ada4- 09585ee74adc</id><updated>2008-09-10T14:50:32+01:00</updated><author><name>Product Management</name><uri>http://example.com/products</uri></author><link rel=quot;selfquot; href=quot;http://example.com/products/notifications/2008/9/10/14.atomquot;/><link rel=quot;nextquot; href=quot;http://example.com/products/notifications/2008/9/10/13.atomquot;/><entry><id>urn:u uid:95506d98-aae9-4d34-a8f4-1ff30bece80c</id><title type=quot;textquot;>product created</title><updated>2008-09-10T14:45:32+01:00</updated><link rel=quot;selfquot; href=quot;http://example.com/products/notifications/95506d98-aae9-4d34-a8f4- 1ff30bece80c.atomquot;/><category term=quot;productquot;/><category term=quot;createdquot;/><content type=quot;application/xmlquot;><ProductCreated xmlns =quot;http://example.com/productsquot;><Id>52 ...
  • 12. Atom Feed Represents an Event Stream <feed xmlns=quot;http://www.w3.org/2005/Atomquot;> <title type=quot;textquot;>Product Notifications</title> <id>urn:uuid:be21b6b0-57b4-4029-ada4-09585ee74adc</id> <updated>2008-09-10T14:50:32+01:00</updated> <author> <name>Product Management</name> <uri>http://example.com/products</uri> </author> <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/2008/9/10/13.atomquot;/> <link rel=quot;nextquot; href=quot;http://example.com/products/notifications/2008/9/10/12.atomquot;/> <entry> <id>urn:uuid:95506d98-aae9-4d34-a8f4-1ff30bece80c</id> <title type=quot;textquot;>product created</title> <updated>2008-09-10T14:45:32+01:00</updated> <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/95506d98-aae9-4d34-a8f4- 1ff30bece80c.atomquot;/> <category term=quot;productquot;/> <category term=quot;createdquot;/> <content type=quot;application/xmlquot;> <ProductCreated xmlns=quot;http://example.com/productsquot;> <Id>527</Id> <Href>http://example.com/products/product/527</Href> <Version>1</Version> <Code>DP</Code> <Name>Digital Phone</Name> ...
  • 13. Retrieving the Archive by Following Links Request GET /products/notifications/2008/9/10/12.atom HTTP/1.1 GET /products/notifications/2008/9/10/12.atom HTTP/1.1 Host: example.com Response HTTP/1.1 200 OK Cache-Control: max-age=2592000 Content-Length: 9877 Content-Type: application/atom+xml;charset=quot;utf-8quot; Last-Modified: Wed, 10 Sep 2008 12:57:14 GMT Date: Wed, 10 Sep 2008 13:51:46 GMT <feed xmlns=quot;http://www.w3.org/2005/Atomquot;><title type=quot;textquot;>Product Notifications</title><id>urn:uuid:4cbc0acf-a211-40ce-a50e- a75d299571da</id><updated>2008-09-10T13:57:14+01:00</updated><author><name>Product Management</name><uri>http://example.com/products</uri></author><link rel=quot;selfquot; href=quot;http://example.com/products/notifications/2008/9/10/12.atomquot;/><link rel=quot;nextquot; href=quot;http://example.com/products/notifications/2008/9/10/11.atomquot;/><link rel=quot;previousquot; href=quot;http://example.com/products/notifications/2008/9/10/13.atomquot;/><entry><id>urn:u uid:b436fda6-93f5-4c00-98a3-06b62c3d31b8</id><title type=quot;textquot;>hardware deprecated</title><updated>2008-09-10T13:57:14+01:00</updated><link rel=quot;selfquot; href=quot;http://example.com/products/notifications/b436fda6-93f5-4c00-98a3- 06b62c3d31b8.atomquot;/><category term=quot;hardwarequot;/><category term=quot;deprecatedquot;/><content type=quot;application/xmlquot;><HardwareDeprecated xmlns =quot;http://example.com/productsquot;><Id> ...
  • 14. Archive <feed xmlns=quot;http://www.w3.org/2005/Atomquot;> <title type=quot;textquot;>Product Notifications</title> <id>urn:uuid:4cbc0acf-a211-40ce-a50e-a75d299571da</id> <updated>2008-09-10T13:57:14+01:00</updated> <author> <name>Product Management</name> <uri>http://example.com/products</uri> </author> <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/2008/9/10/12.atomquot;/> <link rel=quot;nextquot; href=quot;http://example.com/products/notifications/2008/9/10/11.atomquot;/> <link rel=quot;previousquot; href=quot;http://example.com/products/notifications/2008/9/10/13.atomquot;/> <entry> <id>urn:uuid:b436fda6-93f5-4c00-98a3-06b62c3d31b8</id> <title type=quot;textquot;>hardware deprecated</title> <updated>2008-09-10T13:57:14+01:00</updated> <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/b436fda6-93f5-4c00-98a3- 06b62c3d31b8.atomquot;/> <category term=quot;hardwarequot;/> <category term=quot;deprecatedquot;/> <content type=quot;application/xmlquot;> <HardwareDeprecated xmlns=quot;http://example.com/productsquot;> <Id>391</Id> </HardwareDeprecated> </content> </entry> ...
  • 15. Navigating the Archive Latest Archive 10 Sept 2008 10:00 – 11:00 10 Sept 2008 11:00 – 12:00 10 Sept 2008 12:00 – 13:00 10 Sept 2008 13:00 – 14:00 Local Cache http://example.com/products/notifications.atom http://example.com/products/notifications/2008/9/10/11.atom http://example.com/products/notifications/2008/9/10/12.atom http://example.com/products/notifications/2008/9/10/13.atom
  • 16. Handling Eager Re-polling Request GET /products/notifications.atom HTTP/1.1 Host: example.com If-None-Match: If-None-Match: quot;6a0806caquot; Response HTTP/1.1 304 Not Modified HTTP/1.1 304 Not Modified Date: Wed, 10 Sep 2008 13:57:20 GMT
  • 17. An Alternative Feed Format <feed xmlns=quot;http://www.w3.org/2005/Atomquot;> <entry> <id>urn:uuid:95506d98-aae9-4d34-a8f4-1ff30bece80c</id> <title type=quot;textquot;>product created</title> <updated>2008-09-10T14:45:32+01:00</updated> <link rel=quot;alternatequot; href=quot;http://example.com/products/notifications/95506d98-aae9-4d34- a8f4-1ff30bece80c.atomquot;/> <category term=quot;productquot;/> <category term=quot;createdquot;/> </entry> <entry> <id>urn:uuid:a1ec0fba-faa7-4d73-b6ce-c69c86c205b6</id> <title type=quot;textquot;>product deprecated</title> <updated>2008-09-10T14:37:20+01:00</updated> <link rel=quot;alternatequot; href=quot;http://example.com/products/notifications/a1ec0fba-faa7-4d73- b6ce-c69c86c205b6.atomquot;/> <category term=quot;productquot;/> <category term=quot;deprecatedquot;/> </entry> <entry> <id>urn:uuid:f6e14ff6-4007-498e-9d68-076b3b8b0ed2</id> <title type=quot;textquot;>hardware updated</title> <updated>2008-09-10T14:21:46+01:00</updated> <link rel=quot;alternatequot; href=quot;http://example.com/products/notifications/f6e14ff6-4007-498e- 9d68-076b3b8b0ed2.atomquot;/> <category term=quot;hardwarequot;/> <category term=quot;updatedquot;/> </entry> ...
  • 18. Atom Entry Represents an Event <entry xmlns=quot;http://www.w3.org/2005/Atomquot;> <id>urn:uuid:95506d98-aae9-4d34-a8f4-1ff30bece80c</id> <title type=quot;textquot;>product created</title> <updated>2008-09-10T14:45:32+01:00</updated> <link rel=quot;selfquot; href=quot;http://example.com/products/notifications/95506d98-aae9-4d34-a8f4- 1ff30bece80c.atomquot;/> <category term=quot;productquot;/> <category term=quot;createdquot;/> <content type=quot;application/xmlquot;> <ProductCreated xmlns=quot;http://example.com/productsquot;> <Id>527</Id> <Link etag=quot;1quot;>http://example.com/products/product/527.xml</Link> <Code>DP</Code> <Name>Digital Phone</Name> <Price>120.00</Price> <Features> <Feature> <Name>Voice mail</Name> </Feature> <Feature> <Name>Call waiting</Name> </Feature> </Features> <Hardware> <Hardware> <Id>931</Id> <Link etag=quot;6quot;>http://example.com/products/hardware/931.xml</Link> </Hardware> </Hardware> </ProductCreated> </content> </entry>
  • 19. Is This the Latest Version of an Entity? Request HEAD /products/hardware/931.xml HTTP/1.1 Host: example.com If-None-Match: quot;6quot; Response HTTP/1.1 304 Not Modified Date: Fri, 12 Sep 2008 09:00:34 GMT
  • 20. Connectedness http://example.com/products/notifications/2008/9/10/12.atom Events feed entry http://example.com/products/notifications/95506d98-aae9-4d34-a8f4-1ff30bece80c.atom http://example.com/products/product/527.xml http://example.com/products/hardware/931.xml Entities product hardware http://example.com/products/hardware/931.xml
  • 21. Implementing the Feed Using Domain Query Atom
  • 22. Implementing the Feed Using AtomPub Atom Server Atom AtomPub AtomPub Client
  • 23. Atom- and AtomPub-Enabled Service AtomPub AtomPub Atom Atom
  • 24. Handling Conflicts C With Versioning A applies U1(v2) B applies U2(v3) B publishes U2(v3) A publishes U1(v2) A B Feed = U1(v2), U2(v3) C applies U2(v3) C discards U1(v2)
  • 25. Caching Uri Description Caching /products/notifications.atom Short Latest /products/notifications/{year}/{month}/{day}/{hour}.atom Long Archive /products/notifications/{entry-id}.atom Long Notification /products/product/{product-id}.xml Varies Product /products/hardware/{hardware-id}.xml Varies Hardware
  • 26. Caching the Bus Client Caching Proxy Service Client Client
  • 27. Caching Dilemma Efficient use of network resources High TTL Low TTL Publisher controls freshness of data
  • 28. Cache Channels Mark Nottingham, Yahoo • http://www.mnot.net/cache_channels/ Use Atom to extend the freshness of cached responses Response Cache-Control: max-age=60, channel=quot;http://example.com/products/channel/index.atomquot;, channel-maxage Response remains fresh as long as: • Cache polls channel at least as often as quot;precisionquot; specified by channel • Channel doesn’t issue stale event
  • 29. FriendFeed’s Simple Update Protocol 50b56c98 ba202c4f cfd52350 = http://... cfd52350 4e073754 = http://.. 4e073754 7eed6773 http://friendfeed.com/api/sup.json {quot;since_timequot;:quot;2008-09- 29T16:15:58Zquot;,quot;update_timequot;:quot;2008-09- 29T16:17:08Zquot;,quot;available_periodsquot;:{600:quot;h ttp://friendfeed.com/api/sup.json?seconds =600quot;,300:quot;http://friendfeed.com/api/sup. json?seconds=300quot;,60:quot;http://friendfeed.c om/api/sup.json?seconds=60quot;},quot;periodquot;:60, quot;updatesquot;:[[quot;504a7c79quot;,quot;09tgcquot;],[quot;f250566 3quot;,quot;09tgcquot;],[quot;db778326quot;,quot;09tgDquot;],[quot;0dfa45 29quot;,quot;09tgrquot;],[quot;57216b13quot;,quot;09tgrquot;],[quot;64c1a cfd52350 99equot;,quot;09tgfquot;],[quot;cfd52350quot;,quot;09tgUquot;],[quot;35aa 0a37quot;,quot;09tg1quot;],[quot;e690f0e9quot;,quot;09tgDquot;],[quot;ad0 c0b24quot;,quot;09tgDquot;],[quot;a8d879e9quot;,quot;09tgqquot;],[quot;bc df1a15quot;,quot;09tgMquot;],[quot;4e073754quot;,quot;09tgCquot;],[quot;8 4e073754
  • 30. Summary Service-oriented Self-sufficient business services Process decoupling Distributed architecture inside service boundary Event-driven Achieve eventual consistency Advance execution of application protocol RESTful Connected, addressable resources Atom and AtomPub to implement events Caching supports resilience and scalability ETags support consistency