SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Designing
Enterprise IT Systems with REST:
     A (Cloudy) Case Study




                                      Stuart Charlton
                     Chief Software Architect, Elastra



             San Francisco 2008
Objectives
 What enterprise problem domains does
 RESTful architecture handle well?

 Understanding Hypermedia as a primary
 systems abstraction

 Suggested capabilities of RESTful Clients
  • Metadata & Versioning
  • Semantics & Querying
  • Security

   San Francisco 2008                        2
About Your Presenter
 Stuart Charlton
  • Canadian,
    now in San Francisco
 Chief Architect, Elastra
  • Responsible for technical
    direction & long-term
    product strategy
 In prior lives...
  • BEA Systems,
    Rogers Communications,
    Financial Services,
    global training & consulting
 Stu Says Stuff
 http://stucharlton.com/blog


    San Francisco 2008             3
Caveats
 REST is defined in Roy Fielding’s thesis
  • Go there for truth, I’m merely a theologian
 Web architecture is an evolving field
  • This is most of what I’m talking about
 I don’t expect everyone to agree with me
  • Some think actions via HTTP POST are a bad thing
  • I think they’re essential; “REST is not File Storage”
 I actually like the Semantic Web
  • ...and thus cannot be trusted
    San Francisco 2008                                      4
A Simple Reference Architecture



                  Presentation Services (e.g. GUI)


         Business Services (e.g. Transactions, BPM)


Data Services (e.g. DBMS, Logs, Event Streams, etc.)




       San Francisco 2008                              5
Web architecture helps to burst silos

                                       Web Architecture


                  Presentation Services (e.g. GUI)


         Business Services (e.g. Transactions, BPM)


Data Services (e.g. DBMS, Logs, Event Streams, etc.)




       San Francisco 2008                                 6
Classic “Good SOA” Interfaces




   San Francisco 2008           7
The Hypermedia Alternative




   San Francisco 2008        8
Problem Domain
 A Take on “Enterprise Cloud Computing”
 • Drastically reduced lead times to provision/change
 • Visible, declarative designs & infrastructure
      Wire Funds
       Web App


       Msg Bus


                 Acct
    Wire         Svc
   Process
                 DB




   San Francisco 2008                                   9
Problem Domain
IT Services Management & Provisioning




             Element           Resource
            Management        Management


                 Software & Hardware



   San Francisco 2008                      10
Problem Domain
Architectural & Change Considerations
                         Designs
                   (Architectural Views)

                          Lifecycle
          (Birth, Growth, Failure, Recovery, Death)




             Element                 Resource
            Management              Management


                    Software & Hardware



   San Francisco 2008                                 11
Organizational & Geographic Distribution
     Wire Funds                                           WLS
      Web App       Design                       MQ       10.1

     Msg Bus
                                                            MySQL
                                               Packages
             Acct                                           Tomcat
    Wire     Svc                                             V 5.5
   Process
             DB
                              Configurations
                             ECML
                              ECML    ECML
                                       ECML




Resource Pool A                                  Resource Pool B
                             How can you
                             affect change?


         San Francisco 2008                                          12
Hyperlinked Enterprise IT Infrastructure
 The Decentralized, Declarative Data Center
                           Designs
                     (Architectural Views)

                            Lifecycle
            (Birth, Growth, Failure, Recovery, Death)

                       Web of Metadata
     Categories, Capabilities, Configurations & Dependencies

                Element                Resource
               Management             Management


                      Software & Hardware



    San Francisco 2008                                         13
Hypermedia Application Flow

                                           Dynamic
           Search, Feeds,                 Interfaces
                etc.
                              Graph of
Bookmark      Collection    Information
                                and
                             Interfaces
              (optional)                    New or
                                           Changed
                                          Information



     San Francisco 2008                                14
Hypermedia is a mix of data and control

     Global graph database that also describes interfaces

                            Agent


Data Out    Data In      Interface       Process




                                                            Response Codes
 (GET)       (PUT,          Out         Something
           DELETE)         (GET)         (POST)


                                           Dynamic
                                           Interface



       San Francisco 2008                                                15
What’s a Dynamic Interface?
   Interaction port that is bound at runtime
    • CORBA Dynamic Invocation Interface
    • java.lang.Reflect
    • Capability negotiation (e.g. TELNET)
   Agent matches what they know to what’s available
   The Big Difference? Metadata over Methods
    • The semantics are in the context of the link
<control about=”http://myrobot.com/robot/controls/wave”>
  <title>Wave</title>
  <description>This will ask your robot to wave X many times</description>
  <action href=”http://myrobot.com/processor”>
        <input rel=”waveTimes” name=”waves” type=”xsd:positiveInteger”/>
  </action>
</control>




       San Francisco 2008                                                    16
A RESTFul Amazon EC2
                            Resource        Security
Collections    Images                                  Credentials
                            Bundles         Groups



                                       links
Linked          Image
                                                          Capabilites
 Data         Description
                               Bundle
                              Description



                                                           Run/
 Dynamic
                                                         Terminate
Interfaces
                                                        Requirements



         San Francisco 2008                                             17
Observing Application State
                               GET

                  Representations                    Server
Agent
                                      next states
                                                    Resources

                        Current
                        State
                primary & secondary




          Representation
          History


        San Francisco 2008                                 18
A RESTFul Amazon EC2
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
   <feed xmlns=quot;http://www.w3.org/2005/Atomquot;>
   <title type=quot;textquot;>Amazon EC2 Bundles</title>
   <entry>
        <title>Amazon EC2 Standard Small Instance</title>
        <summary>1.7 GB Memory, 1 ECU Core, 160 Gigabytes of Storage</summary>
        <content type=quot;application/edml+xmlquot;
               src=quot;http://www.mycloud.com/bundles/ec2/2008/08/Smallquot;/>
        <updated>2008-07-31T12:29:29Z</updated>
        <published>2007-12-13T08:29:29-04:00</published>
   </entry>
   <entry>
        <title>Amazon EC2 Standard Large Instance</title>
        <summary>8 GB of Memory, 2 ECU Cores, 850 GB of Storage</summary>
        <content type=quot;application/edml+xmlquot;
                src=quot;http://www.mycloud.com/bundles/ec2/2008/08/Largequot;/>
        <updated>2008-07-31T12:29:29Z</updated>
        <published>2007-12-13T08:29:29-04:00</published>
   </entry>
</feed>




           San Francisco 2008                                                    19
Traversing a Link
                             GET

                                                 Server
Agent
                     Current                    Resources
                     State




          Representation                    next states
          History
                                   Cached
                                   State


        San Francisco 2008                                20
A RESTful Amazon EC2: Templates
GET http://www.mycloud.com/bundles/ec2/2008/08/Small
Host: www.mycloud.com
Date: Mon, 17 Nov 2008 09:15:16 PST
Authorization: <token here>
Accept: application/edml+xml

HTTP/1.1 200 OK
Host: www.mycloud.com
Date: Mon, 17 Nov 2008 09:15:19 PST
Content-Type: application/edml+xml

   <ResourceBundle xmlns=quot;http://exml.com/2008/09/edmlquot;>
        <name xml:lang=quot;enquot;>Amazon EC2 Standard Small Instance</rdfs:label>
        <provides>
        <capability href=quot;http://www.mycloud.com/platforms/ec2#SmallStoragequot; />
        <capability href=quot;http://www.mycloud.com/platforms/ec2#SmallCPUquot; />
        <capability href=quot;http://www.mycloud.com/platforms/ec2#SmallMemoryquot; />
        </provides>
    </ResourceBundle>




           San Francisco 2008                                                     21
A RESTful Amazon EC2: Images

<Image xmlns=quot;http://exml.com/2008/09/edmlquot;>
     <name>Fedora Core 8 , x86_64, build 3</name>
     <provides>
     <capability>http://purl.org/edml/OperatingSystems/Linux</capability>
     <capability>http://purl.org/edml/OperatingSystems/64Bit</capability>
     </provides>
     <requires>
     <capability>http://purl.org/edml/ChipArchitectures/64Bit</capability
     </requires>
     <run action=quot;quot;>

        <bundle />
         <quantity />
         <groups />
         <keypair />
     </run>
</Image>




           San Francisco 2008                                               22
Changing Resource State

                                  GET
Agent
                                                           Server
                        Current                           Resources
                        State              POST links
Known
        Do I know the intent of this?
Media   Do I know how to construct this?
Types
                         POST an appropriate media type




    San Francisco 2008                                           23
Requesting an Instance


POST /images/ec2/FC8x86_64b3
Host: www.mycloud.com
Date: Mon, 17 Nov 2008 09:15:16 PST
Authorization: <token here>
Content-Type: applicaton/edml+xml

<run xmlns=quot;http://exml.com/edmlv2quot;>
   <bundle href=quot;http://www.mycloud.com/bundles/ec2/2008/08/Smallquot;/>
   <quantity>2</quantity>
   <groups>http://www.mycloud.com/groups/default</groups>
   <keypairs>http://www.mycloud.com/keypairs/stuartc-keypair</keypairs>
</run>




         San Francisco 2008                                               24
Receiving an Instance
HTTP/1.1 201 Created
Location: /reservations/a9311f3
Host: www.mycloud.com
Date: Mon, 17 Nov 2008 09:15:19 PST
Content-Type: application/edml+xml

<Reservation xmlns=quot;http://exml.com/2008/09/edmlquot;>
 <terminate action=quot;http://www.mycloud.com/reservations/a9311f3quot;/>
 <Resource>
    <state>launching</state>
    <link rel=quot;selfquot; href=quot;http://www.mycloud.com/reservations/a9311f3/1quot;/>
    <bundle href=quot;http://www.mycloud.com/bundles/ec2/2008/08/Smallquot;/>
    <image href=quot;http://www.mycloud.com/bundles/ec2/FC8x86_64b3quot;/>
    <terminate action=quot;http://www.mycloud.com/reservations/a9311f3/1quot;/>
  </Resource>
  <Resource>
    <state>launching</state>
    <link rel=quot;selfquot; href=quot;http://www.mycloud.com/reservations/a9311f3/2quot;/>
    <bundle href=quot;http://www.mycloud.com/bundles/ec2/2008/08/Smallquot;/>
    <image href=quot;http://www.mycloud.com/images/ec2/FC8x86_64b3quot;/>
    <terminate action=quot;http://www.mycloud.com/reservations/a9311f3/2quot;/>
  </Resource>
</Reservation>



            San Francisco 2008                                                25
How can I describe my interfaces?


 Tightly Coupled
  • XML Schema Definitions with minOccurs > 0
 Looser Coupled
  • Dynamically generated XML Schema Definitions
  • Edit Link Relations (e.g. AtomPub Media Entries)
  • Forms (e.g. XForms, HTML)
  • Annotate each field with a Persistent URI


    San Francisco 2008                                 26
What about Versioning and Provenance?

                         “Metabase”
                        Intermediary


Agent                                                Server


                                 Annotation


 Collections,                          Shredded historical
 Search,                               representations
 SPARQL Query



        San Francisco 2008                                    27
Security: Federated Identity


 Federated Identity is increasingly needed
  • Best bet, treat it as orthogonal for now
       SAML, (very robust in Java world)
       WS-Federation, (for Microsoft integration)
       OpenID (mind the phishing)
       Point-to-Point (sadly)


 OAuth has promise but is very young




    San Francisco 2008                              28
Towards the Semantic Web
 It’s not crazy, it’s just...
  • Layering logic on top of the Web (An Open-World RDBMS)
  • Enabling querying and mashing of web pages without
     neurosurgery
 SPARQL is very a big win for RESTful implementers
  • Query databases or the web of hypermedia
  • Same syntax - nothing changes
  • Declarative integrity enforcement for PUT and POST
 RDFa and GRDDL are easy to use
  • Just annotate your HTML or write your own XSLT
 Semantic Web Client Library - Query the Web
  • http://www4.wiwiss.fu-berlin.de/bizer/ng4j/semwebclient/


    San Francisco 2008                                         29
Conclusions
 Hypermedia bursts traditional IT silos
  • The same technology can handle Data, Service, and Presentation
  • At the expense of efficiency in some cases
 Hypermedia gives you ...
  • A global database of linked data
  • Human interactions embedded with the data
  • Dynamic Interfaces embedded with the data
        Dynamic interfaces are like CORBA DII or Reflection with a
        ProcessThis(...) method
        Need to look at the surrounding context

 Semantic web technology is practical today for early adopters
  • Especially GRDDL, SPARQL and RDFa

    San Francisco 2008                                              30
Thank You




                           Stuart Charlton
          Chief Software Architect, Elastra



  San Francisco 2008

Weitere ähnliche Inhalte

Was ist angesagt? (6)

Ebs idm con9020_pdf_9020_0001
Ebs idm con9020_pdf_9020_0001Ebs idm con9020_pdf_9020_0001
Ebs idm con9020_pdf_9020_0001
 
Grottarossa:Why?
Grottarossa:Why?Grottarossa:Why?
Grottarossa:Why?
 
Ikenstudiolive
IkenstudioliveIkenstudiolive
Ikenstudiolive
 
DB Luminous... Know Your Data
DB Luminous... Know Your DataDB Luminous... Know Your Data
DB Luminous... Know Your Data
 
Evaluating jaspersoft community & commercial editions
Evaluating jaspersoft community & commercial editionsEvaluating jaspersoft community & commercial editions
Evaluating jaspersoft community & commercial editions
 
Oracle tech fmw-02-soa-suite-11g-neum-15.04.2010
Oracle tech fmw-02-soa-suite-11g-neum-15.04.2010Oracle tech fmw-02-soa-suite-11g-neum-15.04.2010
Oracle tech fmw-02-soa-suite-11g-neum-15.04.2010
 

Andere mochten auch

A Novel Specification and Composition Language for Services
A Novel Specification and Composition Language for ServicesA Novel Specification and Composition Language for Services
A Novel Specification and Composition Language for Services
George Baryannis
 
Servant leader greg hutchings agile 2012sm
Servant leader greg hutchings agile 2012smServant leader greg hutchings agile 2012sm
Servant leader greg hutchings agile 2012sm
drewz lin
 
Closing the cloud gap by mike donaldson, vp of hosting dot com
Closing the cloud gap by mike donaldson, vp of hosting dot comClosing the cloud gap by mike donaldson, vp of hosting dot com
Closing the cloud gap by mike donaldson, vp of hosting dot com
Khazret Sapenov
 
Eland junior
Eland juniorEland junior
Eland junior
Sohyon Ju
 
The story of an african king and his friend
The story of an african king and his friendThe story of an african king and his friend
The story of an african king and his friend
Xenia Y
 
L7 Horiz Struc Pt 1
L7 Horiz Struc Pt 1L7 Horiz Struc Pt 1
L7 Horiz Struc Pt 1
chuhonsan
 

Andere mochten auch (20)

Db Explorer
Db ExplorerDb Explorer
Db Explorer
 
A Novel Specification and Composition Language for Services
A Novel Specification and Composition Language for ServicesA Novel Specification and Composition Language for Services
A Novel Specification and Composition Language for Services
 
Hacktivism - The Hacker News Magazine - May 2012 Issue
Hacktivism - The Hacker News Magazine - May 2012 IssueHacktivism - The Hacker News Magazine - May 2012 Issue
Hacktivism - The Hacker News Magazine - May 2012 Issue
 
Servant leader greg hutchings agile 2012sm
Servant leader greg hutchings agile 2012smServant leader greg hutchings agile 2012sm
Servant leader greg hutchings agile 2012sm
 
Closing the cloud gap by mike donaldson, vp of hosting dot com
Closing the cloud gap by mike donaldson, vp of hosting dot comClosing the cloud gap by mike donaldson, vp of hosting dot com
Closing the cloud gap by mike donaldson, vp of hosting dot com
 
My Name is Tina and I'm a Psychogeographer
My Name is Tina and I'm a PsychogeographerMy Name is Tina and I'm a Psychogeographer
My Name is Tina and I'm a Psychogeographer
 
Almo
AlmoAlmo
Almo
 
Eigrp
EigrpEigrp
Eigrp
 
Unit 6 Sharing or Stealing
Unit 6 Sharing or StealingUnit 6 Sharing or Stealing
Unit 6 Sharing or Stealing
 
Eland junior
Eland juniorEland junior
Eland junior
 
Final not yet
Final not yetFinal not yet
Final not yet
 
English Business Culture Report
English Business Culture ReportEnglish Business Culture Report
English Business Culture Report
 
Fw 190 G8
Fw 190 G8Fw 190 G8
Fw 190 G8
 
The story of an african king and his friend
The story of an african king and his friendThe story of an african king and his friend
The story of an african king and his friend
 
What is difference between Prefix & Postfix (++i ,--i & i++ , i--)
   What is difference between Prefix & Postfix   (++i ,--i & i++ , i--)   What is difference between Prefix & Postfix   (++i ,--i & i++ , i--)
What is difference between Prefix & Postfix (++i ,--i & i++ , i--)
 
Don't Forget Your Camera: Lessons Learned In Documentation
Don't Forget Your Camera: Lessons Learned In DocumentationDon't Forget Your Camera: Lessons Learned In Documentation
Don't Forget Your Camera: Lessons Learned In Documentation
 
L7 Horiz Struc Pt 1
L7 Horiz Struc Pt 1L7 Horiz Struc Pt 1
L7 Horiz Struc Pt 1
 
Bifocals 4
Bifocals 4Bifocals 4
Bifocals 4
 
Channel of Distribution Management Unit 1
Channel of Distribution Management Unit 1Channel of Distribution Management Unit 1
Channel of Distribution Management Unit 1
 
2014 pin nl english version
2014 pin nl english version2014 pin nl english version
2014 pin nl english version
 

Ähnlich wie Designing Enterprise IT Systems with REST - QCon San Francisco 2008

Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
rsnarayanan
 
Sean Java Arch
Sean Java ArchSean Java Arch
Sean Java Arch
Sean Bob
 
Model Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Future
elliando dias
 
BAM CEP / Business Activity Monitoring , Complex Event Processingomplex
BAM CEP / Business Activity Monitoring , Complex Event Processingomplex BAM CEP / Business Activity Monitoring , Complex Event Processingomplex
BAM CEP / Business Activity Monitoring , Complex Event Processingomplex
Liviu Claudiu Cismaru
 

Ähnlich wie Designing Enterprise IT Systems with REST - QCon San Francisco 2008 (20)

Cloud Computing for Developers and Architects - QCon 2008 Tutorial
Cloud Computing for Developers and Architects - QCon 2008 TutorialCloud Computing for Developers and Architects - QCon 2008 Tutorial
Cloud Computing for Developers and Architects - QCon 2008 Tutorial
 
Qué hay de nuevo en sql azure
Qué hay de nuevo en sql azureQué hay de nuevo en sql azure
Qué hay de nuevo en sql azure
 
SnapLogic corporate presentation
SnapLogic corporate presentationSnapLogic corporate presentation
SnapLogic corporate presentation
 
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
 
Microservices Architecture & Testing Strategies
Microservices Architecture & Testing StrategiesMicroservices Architecture & Testing Strategies
Microservices Architecture & Testing Strategies
 
Webinar Data Mesh - Part 3
Webinar Data Mesh - Part 3Webinar Data Mesh - Part 3
Webinar Data Mesh - Part 3
 
Salesforce & SAP Integration
Salesforce & SAP IntegrationSalesforce & SAP Integration
Salesforce & SAP Integration
 
IT Governance Portals
IT Governance   PortalsIT Governance   Portals
IT Governance Portals
 
MicroServices-Part-1.pdf
MicroServices-Part-1.pdfMicroServices-Part-1.pdf
MicroServices-Part-1.pdf
 
21st Century Service Oriented Architecture
21st Century Service Oriented Architecture21st Century Service Oriented Architecture
21st Century Service Oriented Architecture
 
Integration SharePoint 2010 with CRM 2010 by Mai Omar Desouki
Integration SharePoint 2010 with CRM 2010 by Mai Omar DesoukiIntegration SharePoint 2010 with CRM 2010 by Mai Omar Desouki
Integration SharePoint 2010 with CRM 2010 by Mai Omar Desouki
 
An overview of Microsoft data mining technology
An overview of Microsoft data mining technologyAn overview of Microsoft data mining technology
An overview of Microsoft data mining technology
 
Engineering practices in big data storage and processing
Engineering practices in big data storage and processingEngineering practices in big data storage and processing
Engineering practices in big data storage and processing
 
Java one 2010
Java one 2010Java one 2010
Java one 2010
 
Sean Java Arch
Sean Java ArchSean Java Arch
Sean Java Arch
 
Model Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Future
 
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
 
eXtremeDB FE
eXtremeDB FEeXtremeDB FE
eXtremeDB FE
 
BAM CEP / Business Activity Monitoring , Complex Event Processingomplex
BAM CEP / Business Activity Monitoring , Complex Event Processingomplex BAM CEP / Business Activity Monitoring , Complex Event Processingomplex
BAM CEP / Business Activity Monitoring , Complex Event Processingomplex
 
Rackwise DCM
Rackwise DCMRackwise DCM
Rackwise DCM
 

Mehr von Stuart Charlton

Mehr von Stuart Charlton (14)

Applied tactics for your transformation
Applied tactics for your transformationApplied tactics for your transformation
Applied tactics for your transformation
 
Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!
 
The Cloud Foundry Story on OpenStack
The Cloud Foundry Story on OpenStackThe Cloud Foundry Story on OpenStack
The Cloud Foundry Story on OpenStack
 
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
 
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014
Speeding up enterprises, one deploy at a time - Devopsdays Toronto 2014
 
Linking Data and Actions on the Web
Linking Data and Actions on the WebLinking Data and Actions on the Web
Linking Data and Actions on the Web
 
I'll See You On the Write Side of the Web
I'll See You On the Write Side of the WebI'll See You On the Write Side of the Web
I'll See You On the Write Side of the Web
 
From Agile Development to Agile Operations (QCon SF 2009)
From Agile Development to Agile Operations (QCon SF 2009)From Agile Development to Agile Operations (QCon SF 2009)
From Agile Development to Agile Operations (QCon SF 2009)
 
Designing for the Cloud Tutorial - QCon SF 2009
Designing for the Cloud Tutorial - QCon SF 2009Designing for the Cloud Tutorial - QCon SF 2009
Designing for the Cloud Tutorial - QCon SF 2009
 
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)
OOPSLA Cloud Workshop - Designing for the Cloud (Elastra)
 
Software Licensing In The Cloud (CloudWorld 2009)
Software Licensing In The Cloud  (CloudWorld 2009)Software Licensing In The Cloud  (CloudWorld 2009)
Software Licensing In The Cloud (CloudWorld 2009)
 
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...
Cloud Computing and the Next-Generation of Enterprise Architecture - Cloud Co...
 
Oopsla 2007 - The Web: Distributed Objects Realized!
Oopsla 2007 - The Web: Distributed Objects Realized!Oopsla 2007 - The Web: Distributed Objects Realized!
Oopsla 2007 - The Web: Distributed Objects Realized!
 

Kürzlich hochgeladen

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
panagenda
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

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
 
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)
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Designing Enterprise IT Systems with REST - QCon San Francisco 2008

  • 1. Designing Enterprise IT Systems with REST: A (Cloudy) Case Study Stuart Charlton Chief Software Architect, Elastra San Francisco 2008
  • 2. Objectives What enterprise problem domains does RESTful architecture handle well? Understanding Hypermedia as a primary systems abstraction Suggested capabilities of RESTful Clients • Metadata & Versioning • Semantics & Querying • Security San Francisco 2008 2
  • 3. About Your Presenter Stuart Charlton • Canadian, now in San Francisco Chief Architect, Elastra • Responsible for technical direction & long-term product strategy In prior lives... • BEA Systems, Rogers Communications, Financial Services, global training & consulting Stu Says Stuff http://stucharlton.com/blog San Francisco 2008 3
  • 4. Caveats REST is defined in Roy Fielding’s thesis • Go there for truth, I’m merely a theologian Web architecture is an evolving field • This is most of what I’m talking about I don’t expect everyone to agree with me • Some think actions via HTTP POST are a bad thing • I think they’re essential; “REST is not File Storage” I actually like the Semantic Web • ...and thus cannot be trusted San Francisco 2008 4
  • 5. A Simple Reference Architecture Presentation Services (e.g. GUI) Business Services (e.g. Transactions, BPM) Data Services (e.g. DBMS, Logs, Event Streams, etc.) San Francisco 2008 5
  • 6. Web architecture helps to burst silos Web Architecture Presentation Services (e.g. GUI) Business Services (e.g. Transactions, BPM) Data Services (e.g. DBMS, Logs, Event Streams, etc.) San Francisco 2008 6
  • 7. Classic “Good SOA” Interfaces San Francisco 2008 7
  • 8. The Hypermedia Alternative San Francisco 2008 8
  • 9. Problem Domain A Take on “Enterprise Cloud Computing” • Drastically reduced lead times to provision/change • Visible, declarative designs & infrastructure Wire Funds Web App Msg Bus Acct Wire Svc Process DB San Francisco 2008 9
  • 10. Problem Domain IT Services Management & Provisioning Element Resource Management Management Software & Hardware San Francisco 2008 10
  • 11. Problem Domain Architectural & Change Considerations Designs (Architectural Views) Lifecycle (Birth, Growth, Failure, Recovery, Death) Element Resource Management Management Software & Hardware San Francisco 2008 11
  • 12. Organizational & Geographic Distribution Wire Funds WLS Web App Design MQ 10.1 Msg Bus MySQL Packages Acct Tomcat Wire Svc V 5.5 Process DB Configurations ECML ECML ECML ECML Resource Pool A Resource Pool B How can you affect change? San Francisco 2008 12
  • 13. Hyperlinked Enterprise IT Infrastructure The Decentralized, Declarative Data Center Designs (Architectural Views) Lifecycle (Birth, Growth, Failure, Recovery, Death) Web of Metadata Categories, Capabilities, Configurations & Dependencies Element Resource Management Management Software & Hardware San Francisco 2008 13
  • 14. Hypermedia Application Flow Dynamic Search, Feeds, Interfaces etc. Graph of Bookmark Collection Information and Interfaces (optional) New or Changed Information San Francisco 2008 14
  • 15. Hypermedia is a mix of data and control Global graph database that also describes interfaces Agent Data Out Data In Interface Process Response Codes (GET) (PUT, Out Something DELETE) (GET) (POST) Dynamic Interface San Francisco 2008 15
  • 16. What’s a Dynamic Interface? Interaction port that is bound at runtime • CORBA Dynamic Invocation Interface • java.lang.Reflect • Capability negotiation (e.g. TELNET) Agent matches what they know to what’s available The Big Difference? Metadata over Methods • The semantics are in the context of the link <control about=”http://myrobot.com/robot/controls/wave”> <title>Wave</title> <description>This will ask your robot to wave X many times</description> <action href=”http://myrobot.com/processor”> <input rel=”waveTimes” name=”waves” type=”xsd:positiveInteger”/> </action> </control> San Francisco 2008 16
  • 17. A RESTFul Amazon EC2 Resource Security Collections Images Credentials Bundles Groups links Linked Image Capabilites Data Description Bundle Description Run/ Dynamic Terminate Interfaces Requirements San Francisco 2008 17
  • 18. Observing Application State GET Representations Server Agent next states Resources Current State primary & secondary Representation History San Francisco 2008 18
  • 19. A RESTFul Amazon EC2 <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <feed xmlns=quot;http://www.w3.org/2005/Atomquot;> <title type=quot;textquot;>Amazon EC2 Bundles</title> <entry> <title>Amazon EC2 Standard Small Instance</title> <summary>1.7 GB Memory, 1 ECU Core, 160 Gigabytes of Storage</summary> <content type=quot;application/edml+xmlquot; src=quot;http://www.mycloud.com/bundles/ec2/2008/08/Smallquot;/> <updated>2008-07-31T12:29:29Z</updated> <published>2007-12-13T08:29:29-04:00</published> </entry> <entry> <title>Amazon EC2 Standard Large Instance</title> <summary>8 GB of Memory, 2 ECU Cores, 850 GB of Storage</summary> <content type=quot;application/edml+xmlquot; src=quot;http://www.mycloud.com/bundles/ec2/2008/08/Largequot;/> <updated>2008-07-31T12:29:29Z</updated> <published>2007-12-13T08:29:29-04:00</published> </entry> </feed> San Francisco 2008 19
  • 20. Traversing a Link GET Server Agent Current Resources State Representation next states History Cached State San Francisco 2008 20
  • 21. A RESTful Amazon EC2: Templates GET http://www.mycloud.com/bundles/ec2/2008/08/Small Host: www.mycloud.com Date: Mon, 17 Nov 2008 09:15:16 PST Authorization: <token here> Accept: application/edml+xml HTTP/1.1 200 OK Host: www.mycloud.com Date: Mon, 17 Nov 2008 09:15:19 PST Content-Type: application/edml+xml <ResourceBundle xmlns=quot;http://exml.com/2008/09/edmlquot;> <name xml:lang=quot;enquot;>Amazon EC2 Standard Small Instance</rdfs:label> <provides> <capability href=quot;http://www.mycloud.com/platforms/ec2#SmallStoragequot; /> <capability href=quot;http://www.mycloud.com/platforms/ec2#SmallCPUquot; /> <capability href=quot;http://www.mycloud.com/platforms/ec2#SmallMemoryquot; /> </provides> </ResourceBundle> San Francisco 2008 21
  • 22. A RESTful Amazon EC2: Images <Image xmlns=quot;http://exml.com/2008/09/edmlquot;> <name>Fedora Core 8 , x86_64, build 3</name> <provides> <capability>http://purl.org/edml/OperatingSystems/Linux</capability> <capability>http://purl.org/edml/OperatingSystems/64Bit</capability> </provides> <requires> <capability>http://purl.org/edml/ChipArchitectures/64Bit</capability </requires> <run action=quot;quot;> <bundle /> <quantity /> <groups /> <keypair /> </run> </Image> San Francisco 2008 22
  • 23. Changing Resource State GET Agent Server Current Resources State POST links Known Do I know the intent of this? Media Do I know how to construct this? Types POST an appropriate media type San Francisco 2008 23
  • 24. Requesting an Instance POST /images/ec2/FC8x86_64b3 Host: www.mycloud.com Date: Mon, 17 Nov 2008 09:15:16 PST Authorization: <token here> Content-Type: applicaton/edml+xml <run xmlns=quot;http://exml.com/edmlv2quot;> <bundle href=quot;http://www.mycloud.com/bundles/ec2/2008/08/Smallquot;/> <quantity>2</quantity> <groups>http://www.mycloud.com/groups/default</groups> <keypairs>http://www.mycloud.com/keypairs/stuartc-keypair</keypairs> </run> San Francisco 2008 24
  • 25. Receiving an Instance HTTP/1.1 201 Created Location: /reservations/a9311f3 Host: www.mycloud.com Date: Mon, 17 Nov 2008 09:15:19 PST Content-Type: application/edml+xml <Reservation xmlns=quot;http://exml.com/2008/09/edmlquot;> <terminate action=quot;http://www.mycloud.com/reservations/a9311f3quot;/> <Resource> <state>launching</state> <link rel=quot;selfquot; href=quot;http://www.mycloud.com/reservations/a9311f3/1quot;/> <bundle href=quot;http://www.mycloud.com/bundles/ec2/2008/08/Smallquot;/> <image href=quot;http://www.mycloud.com/bundles/ec2/FC8x86_64b3quot;/> <terminate action=quot;http://www.mycloud.com/reservations/a9311f3/1quot;/> </Resource> <Resource> <state>launching</state> <link rel=quot;selfquot; href=quot;http://www.mycloud.com/reservations/a9311f3/2quot;/> <bundle href=quot;http://www.mycloud.com/bundles/ec2/2008/08/Smallquot;/> <image href=quot;http://www.mycloud.com/images/ec2/FC8x86_64b3quot;/> <terminate action=quot;http://www.mycloud.com/reservations/a9311f3/2quot;/> </Resource> </Reservation> San Francisco 2008 25
  • 26. How can I describe my interfaces? Tightly Coupled • XML Schema Definitions with minOccurs > 0 Looser Coupled • Dynamically generated XML Schema Definitions • Edit Link Relations (e.g. AtomPub Media Entries) • Forms (e.g. XForms, HTML) • Annotate each field with a Persistent URI San Francisco 2008 26
  • 27. What about Versioning and Provenance? “Metabase” Intermediary Agent Server Annotation Collections, Shredded historical Search, representations SPARQL Query San Francisco 2008 27
  • 28. Security: Federated Identity Federated Identity is increasingly needed • Best bet, treat it as orthogonal for now SAML, (very robust in Java world) WS-Federation, (for Microsoft integration) OpenID (mind the phishing) Point-to-Point (sadly) OAuth has promise but is very young San Francisco 2008 28
  • 29. Towards the Semantic Web It’s not crazy, it’s just... • Layering logic on top of the Web (An Open-World RDBMS) • Enabling querying and mashing of web pages without neurosurgery SPARQL is very a big win for RESTful implementers • Query databases or the web of hypermedia • Same syntax - nothing changes • Declarative integrity enforcement for PUT and POST RDFa and GRDDL are easy to use • Just annotate your HTML or write your own XSLT Semantic Web Client Library - Query the Web • http://www4.wiwiss.fu-berlin.de/bizer/ng4j/semwebclient/ San Francisco 2008 29
  • 30. Conclusions Hypermedia bursts traditional IT silos • The same technology can handle Data, Service, and Presentation • At the expense of efficiency in some cases Hypermedia gives you ... • A global database of linked data • Human interactions embedded with the data • Dynamic Interfaces embedded with the data Dynamic interfaces are like CORBA DII or Reflection with a ProcessThis(...) method Need to look at the surrounding context Semantic web technology is practical today for early adopters • Especially GRDDL, SPARQL and RDFa San Francisco 2008 30
  • 31. Thank You Stuart Charlton Chief Software Architect, Elastra San Francisco 2008