SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
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
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
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
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
      3.SOAP




                                                                      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


                      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
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
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
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
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
Atom Data Model
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
Feed Data Model




    Source:Beyond Blogging: Feeds in Action, Dave Johnson, 2007 Java One Conference
                                                                                      13
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
Atom and Enterprise Software
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
Demo 1 - Atom Feeds and ERP
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
Demo 2 - Google Spreadsheets and ERP
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
Atom Lessons Learned
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
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
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
Atom Open Issues
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
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
Final Thoughts
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
Who Are We?
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
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

Contenu connexe

Similaire à SAP REST Summit 2009 - Atom At Work

Oracle on AWS partner webinar series
Oracle on AWS partner webinar series Oracle on AWS partner webinar series
Oracle on AWS partner webinar series Tom Laszewski
 
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
 
system automation, integration and recovery
system automation, integration and recoverysystem automation, integration and recovery
system automation, integration and recoveryDerek Chang
 
Standardizing Identity Provisioning with SCIM
Standardizing Identity Provisioning with SCIMStandardizing Identity Provisioning with SCIM
Standardizing Identity Provisioning with SCIMWSO2
 
RSS and Atom in the Social Web
RSS and Atom in the Social WebRSS and Atom in the Social Web
RSS and Atom in the Social Webhchen1
 
Plone FSR
Plone FSRPlone FSR
Plone FSRfulv
 
Cloud Computing Primer: Using cloud computing tools in your museum
Cloud Computing Primer: Using cloud computing tools in your museumCloud Computing Primer: Using cloud computing tools in your museum
Cloud Computing Primer: Using cloud computing tools in your museumRobert J. Stein
 
Cloud Computing Workshop
Cloud Computing WorkshopCloud Computing Workshop
Cloud Computing WorkshopCharlie Moad
 
Python Web Framework – A Detailed List of Web Frameworks in Python
Python Web Framework – A Detailed List of Web Frameworks in PythonPython Web Framework – A Detailed List of Web Frameworks in Python
Python Web Framework – A Detailed List of Web Frameworks in Pythonabhishekdf3
 
Personium mydata2016 0902
Personium mydata2016 0902Personium mydata2016 0902
Personium mydata2016 0902暁生 下野
 
Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Steven Evatt
 
IUT presentation - English
IUT presentation - EnglishIUT presentation - English
IUT presentation - EnglishRaymond Gao
 
StratusLab at FOSDEM'13
StratusLab at FOSDEM'13StratusLab at FOSDEM'13
StratusLab at FOSDEM'13stratuslab
 
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA RegistryPaul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registrydeimos
 
Building an MLOps Stack for Companies at Reasonable Scale
Building an MLOps Stack for Companies at Reasonable ScaleBuilding an MLOps Stack for Companies at Reasonable Scale
Building an MLOps Stack for Companies at Reasonable ScaleMerelda
 
Serverless by Example: Building a Real-Time Chat System
Serverless by Example: Building a Real-Time Chat SystemServerless by Example: Building a Real-Time Chat System
Serverless by Example: Building a Real-Time Chat SystemAmazon Web Services
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudMicrosoft ArcReady
 

Similaire à SAP REST Summit 2009 - Atom At Work (20)

Oracle on AWS partner webinar series
Oracle on AWS partner webinar series Oracle on AWS partner webinar series
Oracle on AWS partner webinar series
 
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
 
system automation, integration and recovery
system automation, integration and recoverysystem automation, integration and recovery
system automation, integration and recovery
 
Standardizing Identity Provisioning with SCIM
Standardizing Identity Provisioning with SCIMStandardizing Identity Provisioning with SCIM
Standardizing Identity Provisioning with SCIM
 
RSS and Atom in the Social Web
RSS and Atom in the Social WebRSS and Atom in the Social Web
RSS and Atom in the Social Web
 
Plone FSR
Plone FSRPlone FSR
Plone FSR
 
Cloud Computing Primer: Using cloud computing tools in your museum
Cloud Computing Primer: Using cloud computing tools in your museumCloud Computing Primer: Using cloud computing tools in your museum
Cloud Computing Primer: Using cloud computing tools in your museum
 
Cloud Computing Workshop
Cloud Computing WorkshopCloud Computing Workshop
Cloud Computing Workshop
 
Python Web Framework – A Detailed List of Web Frameworks in Python
Python Web Framework – A Detailed List of Web Frameworks in PythonPython Web Framework – A Detailed List of Web Frameworks in Python
Python Web Framework – A Detailed List of Web Frameworks in Python
 
Personium mydata2016 0902
Personium mydata2016 0902Personium mydata2016 0902
Personium mydata2016 0902
 
Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009
 
IUT presentation - English
IUT presentation - EnglishIUT presentation - English
IUT presentation - English
 
ODF Mashups
ODF MashupsODF Mashups
ODF Mashups
 
StratusLab at FOSDEM'13
StratusLab at FOSDEM'13StratusLab at FOSDEM'13
StratusLab at FOSDEM'13
 
CSG 2012
CSG 2012CSG 2012
CSG 2012
 
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA RegistryPaul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registry
 
Building an MLOps Stack for Companies at Reasonable Scale
Building an MLOps Stack for Companies at Reasonable ScaleBuilding an MLOps Stack for Companies at Reasonable Scale
Building an MLOps Stack for Companies at Reasonable Scale
 
Serverless by Example: Building a Real-Time Chat System
Serverless by Example: Building a Real-Time Chat SystemServerless by Example: Building a Real-Time Chat System
Serverless by Example: Building a Real-Time Chat System
 
EEDC SOAP vs REST
EEDC SOAP vs RESTEEDC SOAP vs REST
EEDC SOAP vs REST
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
 

Dernier

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Dernier (20)

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

SAP REST Summit 2009 - Atom At Work

  • 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. 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. 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. How Did We Get Here?
  • 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. 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. 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. 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. 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. 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
  • 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. Feed Data Model Source:Beyond Blogging: Feeds in Action, Dave Johnson, 2007 Java One Conference 13
  • 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
  • 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. Demo 1 - Atom Feeds and ERP
  • 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. Demo 2 - Google Spreadsheets and ERP
  • 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
  • 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. 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. 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
  • 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. 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
  • 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
  • 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. 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