Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Web Oriented Architecture (WOA) Gluecon, May 2010


Published on

Web Oriented Architecture. Presented at Gluecon 2010 by Aaron Fulkerson

Published in: Technology

Web Oriented Architecture (WOA) Gluecon, May 2010

  1. 1. Web-Oriented ArchitectureOriginally presented at Gluecon 2010<br />Aaron Fulkerson<br />@roebot<br />
  2. 2. About MindTouch<br />Open source company<br />Strategic documentation platform<br />And a new kind of ECM<br />Projects <br /><ul><li>DReAM
  3. 3. SGMLReader
  4. 4. MindTouch Core/2010</li></li></ul><li>What is WOA?<br />
  5. 5. WOA in a Nutshell<br />(<br />)<br />REST<br />WWW<br />WOA<br />*Originally coined by Nick Gall @ironick (Gartner) 2005<br />
  6. 6. REST Cheat Sheet<br />Representational state transfer (REST) is a style of software architecture for distributed hypermedia systems such as the World Wide Web. (source: Wikipedia)<br />Principles<br /><ul><li>Everything is a RESOURCE
  7. 7. Every resource has a REPRESENTATION
  8. 8. Every resource has a canonical NAME
  9. 9. There is a finite VOCABULARY of actions
  10. 10. State transitions require DISCOVERY</li></li></ul><li>WOA in a Nutshell<br />Information is represented as Resources<br />Resources are identified by URIs<br />Resources are manipulated via HTTP<br />Contracts are implicit in the representation of the resource<br />Interfaces are generic <br />
  11. 11. REST applied to WWW<br />
  12. 12. God Bless HTTP<br />Leverage HTTP to its full potential<br /><ul><li>Simple: verbs, headers, status codes
  13. 13. Scalable: every operation is self-contained</li></ul>Every browser can be a client<br /><ul><li>Easy discovery
  14. 14. Easy debugging</li></ul>Build on existing (standard) infrastructure<br /><ul><li>Proxies
  15. 15. Load balancers</li></li></ul><li>Of Clients and Servers<br />In WOA…<br /><ul><li>Services rely on other services
  16. 16. Communicate over HTTP
  17. 17. Are clients of some resources and servers of others
  18. 18. Extensibility, Scalability == Interconnection</li></li></ul><li>Web APIs everywhere<br />APIs allow others to integrate with you<br /><ul><li>Simplifies integration
  19. 19. Frees you from custom engineering for partners</li></ul>Fosters “Unexpected reuse”<br />Let others provide features not on your roadmap<br />
  20. 20. Most APIs are Data Island Veneer<br />Closed, specific internal architecture<br />Only exposes use cases directly envisioned by API designers<br />Only outward facing<br />Do not aid internal integration stories <br />
  21. 21. Web APIs, WOA style<br />Connect internal systems over REST services<br /><ul><li>Internals become generic
  22. 22. Extensibility becomes application neutral
  23. 23. Location, availability and breadth of dependencies can take advantage of HTTP
  24. 24. Enables internal innovation without requiring integration work</li></li></ul><li>API first!<br />Don’t expose a feature after the fact via an API<br />Build an API for every feature first<br /><ul><li>Better understanding the feature by internal and external consumers
  25. 25. No blind spots of API inaccessible parts</li></li></ul><li>A word about MindTouch Core/2010<br />Open source collaboration platform<br />for the enterprise and the web<br />Built with Mono/.NET and PHP<br />Runs on SLES, RHEL, Debian/Ubuntu, Windows and even Solaris<br />Downloaded over 500,000 times<br />Used by over 15M people<br />MindTouch is API first!<br />
  26. 26. Application Architecture<br />Email<br />Authentication<br />Extensions<br />Scripts<br />Package<br />Core<br />Subscriptions<br />Lucene<br />PubSub<br />Varnish<br />PubSub<br />Host<br />Storage<br />MindTouch DReAM<br />
  27. 27. MindTouch API<br /><br />Exposes capabilities of MindTouch as web services<br />MindTouch web UI uses API<br /><ul><li>Anything the web UI can do, a third party can do</li></ul>Uses REST for extensibility<br />Service Discoverability<br /><ul><li>@blueprint
  28. 28. @about</li></li></ul><li>Some links<br /> (glorious)<br /><br /><br /><br /><br />{{web.xml("")}}<br /><br /><br /><br />
  29. 29. Extensibility<br />Web Services<br /><ul><li>Standalone services</li></ul>Local or remote<br />Only requirement: provide a REST API<br /><ul><li>Extensions</li></ul>Hosted or remote<br /><ul><li>DekiScript Extensions</li></ul>Hosted or remote<br />Native or script<br />
  30. 30. Architectural Benefits<br />100% API coverage there’s an API for that<br />Uniform programming model<br /><ul><li>One model to rule them all!</li></ul>Agnostic extensibility<br /><ul><li>Any programming language
  31. 31. Hosted anywhere on the network</li></ul>Flexible deployment topologies<br /><ul><li>Many sites on one machine
  32. 32. Many machines for one site</li></li></ul><li>The DReAM REST framework<br />MindTouch is built on DReAM<br />DReAM optimizes REST calls within framework, by providing an in-process HTTP pipeline<br /><ul><li>Local REST calls do not hit the wire
  33. 33. Serialization/Deserialization only required for out of framework calls
  34. 34. Local Routing of bypasses DNS</li></li></ul><li>WOA makes your life easier<br />Simplifies extensibility, scalability<br />Reduces development time for new features<br />Reduces engineering time spent on integration<br />Creates opportunity for mash-ups and other unforeseen user stories<br />
  35. 35. Thanks<br />Aaron Fulkerson<br />@roebot<br />