An Investigation: Atom-based
The Case For Atom
APIs For The Enterprise
Not All REST APIs Are Created              Office
 ...
Agenda


   Background (5 mins)
        little bit of history
        Atom adopters
   Atom overview (5 mins)
       ...
The (not-so) Hidden Agenda:
Evangelizing Support for Atom Within SAP

Atom as a standard platform access mechanism
     R...
How Did We Get Here?
A Quiz To Start


Which of these technologies got its start in the world of Blogging?
      1.RSS/ Atom
      2.XML-RPC
  ...
A Quiz To Start


Which of these technologies got its start in the world of Blogging?
      1.RSS/ Atom
      2.XML-RPC
  ...
Where Did The Idea of Atom as a General
Purpose Web Syndication Format Come From?

   Blog Syndication was a mess:
   at ...
Why Is Atom Used in APIs?



So what’s the big idea?
 - Most structured data can naturally exposed as simple lists of thin...
Atom Feeds: From Web 2.0 to Business Apps

                                      Producer
                             Goo...
Google Data (Gdata):
    A Family of Atom-based REST APIs




              Source: Google Data Protocol http://code.googl...
Atom Data Model
What is Atom?


IETF Atom WG Charter:
   “Atom defines a feed format for representing and a protocol for editing Web
    ...
Feed Data Model




    Source:Beyond Blogging: Feeds in Action, Dave Johnson, 2007 Java One Conference
                  ...
Service Document for Feed Discovery


           Service                                                               ‣ D...
Atom and Enterprise Software
Atom and Enterprise Software - Scenarios


Scenario 1: Enterprise Application as Atom Publisher
 Worklists (POWL) as Atom...
Demo 1 - Atom Feeds and ERP
Demo Scenario - Contact Feed


Disclaimer:   We used Blue Ruby (a Ruby VM running on the ABAP Server) to
              bui...
Demo 2 - Google Spreadsheets and ERP
Demo Scenario - Contact Data Cleansing


A simple Data Cleansing Application using a Google Spreadsheet
   Contact data (...
Atom Lessons Learned
Lessons 1: ERP is a Rich Source for Feeds!


   Most Documents (we often call them “Business Objects”) fit the Atom parad...
Lessons 2: “Designing protocols is hard”


When Building Your REST API - Did You Think About.....


                      ...
Lessons 3: Links in Content is Good!


Atom is modular - at a minimum you should consider using atom:link in
your APIs (th...
Atom Open Issues
Atom is Far From Perfect or Even Complete

 Missing from Atom
     Filtering/ Searching/ Paging - use OpenSearch protoco...
But It Still Gets You 80% of the Way There


Gdata and the 80/20 Rule

“Google has definitively provided a simple but powe...
Final Thoughts
Adam Bosworth Was One of the Earliest
Voices Pushing ATOM for Business Data

Adam Bosworth in 2005 - Lessons of last 10 ye...
Who Are We?
Contact


Juergen Schmerder                                 Murray Spork
Office of                                        ...
About the Office of the Chief Scientist


                             The Office of the Chief Scientist (oCS) is
        ...
Upcoming SlideShare
Loading in …5
×

SAP REST Summit 2009 - Atom At Work

2,116 views

Published on

Slides Murray and I presented at the SAP REST Summit 2009, an SAP-internal online conference on RESTful development at SAP

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,116
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

SAP REST Summit 2009 - Atom At Work

  1. 1. An Investigation: Atom-based The Case For Atom APIs For The Enterprise Not All REST APIs Are Created Office of the Equal Chief Using Atom With ERP and Scientist Google Spreadsheets Murray Spork, Juergen Schmerder October 6, 23, 2009 September 2009 Version 1 DRAFT
  2. 2. Agenda  Background (5 mins)  little bit of history  Atom adopters  Atom overview (5 mins)  Conceptual model  Some examples  ERP and Atom (5 mins)  ERP and GData (5 mins)  Lessons learned (2 mins)  Open Issues (3 mins) 2
  3. 3. The (not-so) Hidden Agenda: Evangelizing Support for Atom Within SAP Atom as a standard platform access mechanism  ReST as the next “Tower of Babel”?  Instead - leverage network effects by adopting an existing and widely supported protocol  Atom is in already in our ecosystem: Microsoft, IBM, Google, Oracle .... Atom as exemplar for REST best practices  Understanding ReST can be difficult  Sometimes the benefits appear too abstract - “What the heck is hypermedia as the engine of application state”??  ReSTless POX-over-HTTP misses many of the benefits of the Web Architecture  Atom embodies many ReST best practices 3
  4. 4. How Did We Get Here?
  5. 5. A Quiz To Start Which of these technologies got its start in the world of Blogging? 1.RSS/ Atom 2.XML-RPC 3.SOAP 5
  6. 6. A Quiz To Start Which of these technologies got its start in the world of Blogging? 1.RSS/ Atom 2.XML-RPC 3.SOAP Answer = All of the above! “Like XML-RPC and SOAP before, feeds and publishing protocols were born in the blogopshere and quickly moved beyond blogging.” 6
  7. 7. Where Did The Idea of Atom as a General Purpose Web Syndication Format Come From? Blog Syndication was a mess: at least 4 different formats (RSS) poor extensibility many ambiguities ... let’s clean it up! “SOAP seems too heavy-weight for the Web - but do I have to define my own protocol for Atom sharing data over HTTP?” Atom Pub “If we do a better job at separating “Feeds are basically lists of things... form from content intermediaries what other kinds of information can can do a lot more with feeds” we share via feeds besides blogs?” --> Aggregators --> Filters --> Mashups Gdata (Google) --> repurpose content Lotus (IBM) Live Mesh (Microsoft) … many others 7
  8. 8. Why Is Atom Used in APIs? So what’s the big idea? - Most structured data can naturally exposed as simple lists of things (i.e. collections of entries) - Collections may contain other nested collections - Entries (within a collection) can link to other entries or other collections - Entries (Resources) can represent anything: documents, business objects, events, processes… - Atom can do all of this in a “web-friendly” way (URLs for everything) - Alternative representations of the same resource is possible (HTML, JSON, XML, media files…) 8
  9. 9. Atom Feeds: From Web 2.0 to Business Apps Producer Google Docs CICS Blog Servers Del.ic.ious Open Gov - eGov.org WebCenter Europa build system (Eclipse) Open Cloud Live Mesh Lotus Connections Sharepoint Web 2.0 Enterprise Bitsy & AtomDB Yahoo Pipes Browsers Outlook Feed Readers Consumer 9
  10. 10. Google Data (Gdata): A Family of Atom-based REST APIs Source: Google Data Protocol http://code.google.com/apis/gdata/ The APIs that Google currently offer based on Atom and Atom Publishing Protocol 10
  11. 11. Atom Data Model
  12. 12. What is Atom? IETF Atom WG Charter:  “Atom defines a feed format for representing and a protocol for editing Web resources such as Weblogs, online journals, Wikis and similar content” Things to note:  A syndication format: RFC-4287 (published December 2005)  A publishing protocol: RFC 5023 (published October 2007)  A “Web resource” can represent anything 12
  13. 13. Feed Data Model Source:Beyond Blogging: Feeds in Action, Dave Johnson, 2007 Java One Conference 13
  14. 14. Service Document for Feed Discovery Service ‣ Discovery - from a “well known location” ‣ Service Document structures Feeds (= Collections) into 1..* Workspaces Workspace Workspace 1..* Collection Collection <?xml version="1.0" encoding='utf-8'?> <service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom"> <workspace> <atom:title>Address Book of User SCHMERDER</atom:title> <collection href="http://nspah223.pal.sap.corp:50000/sap/sruby_rack/sinatra/address_book/contacts" > <atom:title>My Contacts</atom:title> </collection> </workspace> </service> 14
  15. 15. Atom and Enterprise Software
  16. 16. Atom and Enterprise Software - Scenarios Scenario 1: Enterprise Application as Atom Publisher  Worklists (POWL) as Atom Feeds  Monitoring / Log Feeds that show recorded events & exceptions  “Business Objects” (BOR, AP, …) as Atom Collections and Entries * ⇒ Display data on any device that supports Atom/RSS Scenario 2: Enterprise Application as Atom Consumer  Feed SAP data into non-SAP applications (and load it back in) *  Google Docs  River / Coghead Scenario 3: Enterprise Application as Atom Publisher & Consumer  Peer-to-peer data synchronization  Distributed Data Management  FeedSync  PubSubHubBub * = Demo 16
  17. 17. Demo 1 - Atom Feeds and ERP
  18. 18. Demo Scenario - Contact Feed Disclaimer: We used Blue Ruby (a Ruby VM running on the ABAP Server) to build the demo scenarios. This was for rapid prototyping purposes only. Everything we show could be built in plain ABAP. Address book feed powered by SAP Business Partner: Contact persons for the current user (= BusinessPartners of type “Person” that have a Relationship of type “Is Contact Person for” to a BusinessPartner mapped to SY- UNAME) are exposed as Atom Feed The feed can be shown in any client that supports Atom Clients can publish data to the feed 18
  19. 19. Demo 2 - Google Spreadsheets and ERP
  20. 20. Demo Scenario - Contact Data Cleansing A simple Data Cleansing Application using a Google Spreadsheet  Contact data (the feed from Demo 1) is uploaded to a Google Spreadsheet  Data is maintained in the Google Spreadsheed  Changed data is pulled back into the ABAP backend  Records that have not changed are ignored (using Etags)  Data is not re-imported if it has changed in the backend (using Timestamps)  Extra: Workflow linkage for event BusinessPartner.changed updates spreadsheet when data changes in backend Upload contact data Update changed data Download changed data 20
  21. 21. Atom Lessons Learned
  22. 22. Lessons 1: ERP is a Rich Source for Feeds!  Most Documents (we often call them “Business Objects”) fit the Atom paradigms of collections and entries  Collections are lists of objects, Entries are single objects or parts of objects  It’s always been good practice to record creation/change times and users  A lot of events are recorded as documents in the ABAP Backend  Syndication and Aggregation of different resources could help end-users (e.g. Universal Work List as aggregation of Object Work Lists)  Publish / Subscribe totally underused  Etags and Timestamps allow for optimistic locking  Plus: many more examples here @ REST Summit 2009  If you have any more ideas - please talk to us! 22
  23. 23. Lessons 2: “Designing protocols is hard” When Building Your REST API - Did You Think About..... ‣ encoding & escaping ‣ content-negotiation ‣ empty v not-present ‣ required v optional ‣ extensions & new formats ‣ timestamps ‣ bi-directional ‣ caching & versioning ....didn't think so ;). Sources: 1. Bill deHora, “Snowflake APIs”, http://www.dehora.net/journal/2009/01/09/snowflake-apis/ 23
  24. 24. Lessons 3: Links in Content is Good! Atom is modular - at a minimum you should consider using atom:link in your APIs (there are examples of APIs that do this - can we find any?) <entry gd:etag='"YDwqeyI."'> <id>http://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId</id> <updated>2006-11-17T18:23:45.173Z</updated> <title type="text">Sheet1</title> <content type="text">Sheet1</content> <link rel="http://schemas.google.com/spreadsheets/2006#listfeed" type="application/atom+xml" href="http://spreadsheets.google.com/feeds/list/key/worksheetId/private/full"/> <link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed" type="application/atom+xml" href="http://spreadsheets.google.com/feeds/cells/key/worksheetId/private/full"/> <link rel="self" type="application/atom+xml" href="http://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId"/> <link rel="edit" type="application/atom+xml" href="http://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId/version"/> <gs:rowCount>100</gs:rowCount> <gs:colCount>20</gs:colCount> </entry> 24
  25. 25. Atom Open Issues
  26. 26. Atom is Far From Perfect or Even Complete  Missing from Atom  Filtering/ Searching/ Paging - use OpenSearch protocol  Support for hierarchies – In-lining extensions for Atom (draft proposal from Oracle) – Atom threading extensions – Microformats – Hierarchy IDs  Handling partial updates  POST or PATCH?  Diff/delta format needed?  Best practices for incorporating foreign markup and other data inside Atom feed  As children of atom:entry (Gdata model)  As children of atom:content with media type text/xml  Define custom media type  Microformats  How to handle batch updates  Adopt the google batch model?  Transaction/sync models  Is optimistic concurrency good enough? (we think so - for most things)  Can we make it easier to resolve conflicts? – Microsofts FeedSync spec.  How do we tell clients how to add or update entries?  What replaces html:form?  Xform, RDF-Forms, WADL …? 26
  27. 27. But It Still Gets You 80% of the Way There Gdata and the 80/20 Rule “Google has definitively provided a simple but powerful enough API for accessing their services. They do not want to solve 100% of all use cases but rather provide a simple and uniform API for the majority (80%)” Our takeaway: Even considering the various open questions, Atom is good enough for a lot of things already today. 27
  28. 28. Final Thoughts
  29. 29. Adam Bosworth Was One of the Earliest Voices Pushing ATOM for Business Data Adam Bosworth in 2005 - Lessons of last 10 years:  Open up your front end to wire formats and data that are easy open and extensible (create network effects)  There is a serious change in computing happening - similar to the advent of the web - around data  We need a standard simple protocol for data feeds  It needs to be sloppy (“democratize data”)  Needs to support updates  Has to scale - scale needs “stupidity” - complex things break - simple things work  We have and answer in RSS 2.0/Atom - does for data what HTML did for content Source: 2005 Keynote at MySQL 29
  30. 30. Who Are We?
  31. 31. Contact Juergen Schmerder Murray Spork Office of Office of Chief Scientist Chief Scientist (now in IP&NW - Solution Management) Juergen joined SAP in 1999 and worked in Murray joined SAP Research in 2003 where he various development projects in CRM, has lead several projects in diverse areas such Netweaver and SAP Business ByDesign - both as model-driven engineering, Semantic Web, in ABAP and Java. In 2007 he moved to Palo Web 2.0, introducing scripting languages into Alto, California, where he joined the Office of the ABAP stack and network-enabled multi- the CTO to lead the research project Blue enterprise business apps. He is passionate Ruby - a Ruby VM, implemented in ABAP. He about any technology that facilitates works part time as a project manager, part collaboration and decentralization and time as an evangelist for scripting languages empowers “innovation at the edges” of an and part time as a developer. organization. Email: juergen.schmerder@sap.com EMail: murray.spork@sap.com 31
  32. 32. About the Office of the Chief Scientist The Office of the Chief Scientist (oCS) is responsible for assuring SAP's awareness and planning with respect to critical technologies, especially those that are externally driven from industry, academic institutions and customers. The group, led by SAP Chief Scientist, Ike Nassi, is part of the Office of the CTO (oCTO). oCS is not only expected to think, project, and experiment, but also to grow deep technical competencies ensuring an ongoing ability to keep SAP at the forefront of the industry. The four main areas of work performed by oCS include:  Knowledge and Technology Scouting  Technology Vision and Guidance  Engineering Services  Experimentation and Prototyping For more information on the group and its work: http://ocs.pal.sap.corp:1080 32

×