Sunday, November 23, 2008

2008-11-20 Thursday - QCon 2008 Afternoon

Disclaimer: There may be some many mistakes/errors in my blog notes for QCon over the next few days - as I am writing these posts while I'm sitting in sessions - and much of these notes are stream-of-consciousness - as I try to keep up with the presenters.

I'm in San Francisco attending QCon 2008 this week.


Designing Enterprise IT Systems with REST: A (Cloudy) Case Study
presenter: Stuart Charlton, Chief Software Architect, Elastra

Web architecture helps to burst silos

Classical "Good SOA" interfaces

FEA - large dictionary for Canonical Semantics

Conway's Law:

"...organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations"

"Any piece of software reflects the organizational structure that produced it"

"It is a consequence of the fact that two software modules A and B cannot interface correctly with each other unless the designer and implementer of A communicates with the designer and implementer of B. Thus the interface structure of a software system necessarily will show a congruence with the social structure of the organization that produced it."

The Hypermedia Alternative
- create a document that describes a "state machine"

Problem Domain
(Elastra is a cloud computing vendor)
- IT Services Management & Provisioning

Architectural & Change Considerations
Designs: Architectural Views
- Lifecycle: birth, growth, failure, recovery, death

Organizational & Geographic Distribution

Governance Fallacy:
...Federation: there is a chief at the top that has the will and the control authority



The Decentralized, Declarative Data Center

You don't need a registry in a RESTful collection of services - by definition, a REST request is self-describing (?)

Graph of Information and Interfaces

The agent (browser) surfs the graph of information and interfaces -- nodes of which may expose Dynamic Interfces - which results in a new or changed bit of information (and may modify the graph of information and interfaces).

Hypermedia is a mix of data and control

Data Out (GET)
Data In (PUT)
Interface Out (GET)
Process Something (POST)

==> returns Response Codes

What's a Dynamic Interface?
- Interaction port that is bound at runtime
-- CORBA Dynamic Invocation interface
-- java.lang.Reflect
-- capability to negotiate (e.g. TELNET)

- Agent matches what they know to what's available

- The Big Ddifference? Metadata over Methods
-- The semantics are in the context of the link

How can I describe my interfaces?
-Tightly Couples
-- XML Schema Definition 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 Persisent URL

What about Versioning and Provenance?
- "Metabase" Intermediary
-- Annotation
---- Collections, Search, SPARQL Query
---- Shredded historical representations

Tooling is a bit sparse...

Security: Federated Identity
- SAML (very robust in a Java world) - complex
- WS-Federation (for Microsoft integration)
- OpenID (mind the phishing)
- Point-to-Point (sadly)

- OAuth has promise but is very young - the current flavor for RESTful implementations

Towards the Semantic Web
- Its not crazy - its just
-- layering logic on top of the web (an Open-World RDBMS)
-- enabling querying and mashing of web pages without neurosurgery

- SPARQL ("sparkle") is very big win for RESTful implementations
-- query database or the web of hypermedia
-- same syntax - nothing changes
-- declarative integrity enforcement for PUT and POST

- RDFa and GRDDL are easy to use (microformats?)
-- just annotate your HTML or write your own XSLT

Semantic Web Client Library - Query the web

To Research: RDF serialization of JSON