Your SlideShare is downloading. ×
Web Oriented Architecture - a battle with the dark side?
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Web Oriented Architecture - a battle with the dark side?

1,515
views

Published on

Web Architectures presentation for the IET

Web Architectures presentation for the IET

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,515
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. Web Oriented Architecture - a battle with the dark side?
    • 2. ABOUT ME 2
    • 3. WHAT WE WILL COVER•A Brief History•Service Orientated Architectures•Web Orientated Architectures 2
    • 4. ARCHITECTURE 2
    • 5. fundamental structure and properties •components •resilience •scalability •adaptability reliability •changeability •maintainability •extensibility •security •technology •standards 2
    • 6. DEVELOPMENT PRACTICES FOR ARCHITECTURES•Choose the right data structures•Separation of Concerns•Vendor selection 2
    • 7. SOFTWARE DEVELOPMENT 1970 2
    • 8. SOFTWARE DEVELOPMENT 1970 2
    • 9. SOFTWARE DEVELOPMENT 1980-90 2
    • 10. SOFTWARE DEVELOPMENT 1980-90 2
    • 11. SOFTWARE DEVELOPMENT 2000 2
    • 12. SOFTWARE DEVELOPMENT 2000 2
    • 13. FOUR STYLES OF INTEGRATION• 2
    • 14. FOUR STYLES OF INTEGRATION• 2
    • 15. FOUR STYLES OF INTEGRATION• 2
    • 16. FOUR STYLES OF INTEGRATION• 2
    • 17. FOUR STYLES OF INTEGRATION• 2
    • 18. INTEGRATION AS A KEY ARCHITECTURAL COMPONENT• 30%+ of IT spend is on integration - Bitpipe• Consuming 40% of available resources on average - Aberdeengroup report• Rising to 60%+ on an enterprise project - Oracle 2
    • 19. ALONG CAME Service Orientated Architectures (SOA)• Methods for systems development and integration.allows different applications to exchange data withone another, in a common way.• Loose coupling of services separates functions intodistinct units that users can combine and reuse in theproduction of applications 2
    • 20. SOA’s FOCUS•Service encapsulation•Service loose coupling•Service contract•Service abstraction•Service reusability•Service composability•Service discoverabilityThese map onto underlying architectural principles 2
    • 21. SOA’s FOCUS•Service encapsulation•Service loose coupling•Service contract•Service abstraction•Service reusability•Service composability•Service discoverabilityThese map onto underlying architectural principles Gartner expects 80% of all development uses these principles 2
    • 22. SERVICE ORIENTED ARCHITECTURE (SOA)• Idea - Build on top of XML Extensible Markup Language• Open Standards - SOAP Simple Object Access Protocol and WSDL Web Services Description Language• Create - modular services which can interact• Create - an open platform 2
    • 23. SOAP - SIMPLE OBJECT ACCESS PROTOCOL• XML• Transport Neutral, Messaging Oriented.• Everything required is inside the message Headers Reliability Security information 2
    • 24. SOAP EXAMPLE OST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPrice> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> 2
    • 25. SOAP EXAMPLE HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope> 2
    • 26. WSDL - WEB SERVICE DESCRIPTION LANGUAGE • XML Based • Uses XSD(XML Schema Document) to describe the operations, services and datatype) • Allow other platforms to determine how they can interact • Form the Service Contract 2
    • 27. WSDL definition of a simple service supporting a singleoperation called GetLastTradePrice <?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions> 2
    • 28. WSDL definition of a simple service supporting a singleoperation called GetLastTradePrice <?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> </message> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <message name="GetLastTradePriceOutput"> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType> <part name="body" element="xsd1:TradePrice"/> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> </message> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions> 2
    • 29. WSDL definition of a simple service supporting a singleoperation called GetLastTradePrice <?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" •Can be complex xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> </message> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <message name="GetLastTradePriceOutput"> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType> <part name="body" element="xsd1:TradePrice"/> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> </message> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions> 2
    • 30. WSDL definition of a simple service supporting a singleoperation called GetLastTradePrice <?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" •Can be complex xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> •WS-* specifications are not always <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> pervasive so services may not be <all> <element name="tickerSymbol" type="string"/> </all> </complexType> interoperable </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> </message> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <message name="GetLastTradePriceOutput"> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType> <part name="body" element="xsd1:TradePrice"/> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> </message> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions> 2
    • 31. WSDL DEMOAmazon http://soap.amazon.com/schemas2/AmazonWebServices.wsdl 2
    • 32. 2
    • 33. 2
    • 34. 2
    • 35. EXISTING SOA HAS BECOME A CHALLENGE• 60+ standards• Lock in & Vendor thinking• Creation complexity• Often top down approach to design 2
    • 36. EXISTING SOA HAS BECOME A CHALLENGE • 60+ standards • Lock in & Vendor thinking • Creation complexity • Often top down approach to designGartner, 40% of companies with SOA-based methodologies do notmeasure the time to achieve return on investment for their SOA efforts 2
    • 37. EXISTING SOA HAS BECOME A CHALLENGE • 60+ standards • Lock in & Vendor thinking • Creation complexity • Often top down approach to designGartner, 40% of companies with SOA-based methodologies do notmeasure the time to achieve return on investment for their SOA efforts it’s not working for many organizations - Burton Group 2
    • 38. OK SO THAT’S NOT SO GOOD THEN•Enter Web 2.0 and Web Oriented Architecture (WOA) 2
    • 39. HOW WEB 2.0 AIDED THE ADOPTION OF WOA• Open platforms, rather than internal stand-alone apps• Self distributing • API’s, widgets, libraries, syndication -> mash-ups• Build on the shoulders of giants• The long tail of consumption 2
    • 40. WEB 2.0 INTRODUCED THE NETWORK EFFECT TO WEBSITESIn economics and business, a network effect (also called networkexternality) is the effect that one user of a good or service has onthe value of that product to other people. WikiPediaget a better definition,• i.e The Value increases with participation •Phones, Post, train tracks and faxes •anything with an open network structure 2
    • 41. GOING BACK TO THE ORIGINAL VISION 2
    • 42. ENTER WOA 2
    • 43. ENTER WOA REST is a style and WOA is the architecture 2
    • 44. REST Representation State Transfer –Roy Fielding coined the term for his thesis which sought to provide the architectural basis for HTTP Why did he do this, why is it important 2
    • 45. REST Representation State Transfer –Roy Fielding coined the term for his thesis which sought to provide the architectural basis for HTTP Why did he do this, why is it important • Performance • Scalability • Generality • Simplicity • Modifiability 2
    • 46. REST - EVOLVING THE USE OF HTTP• HTTP was originally used for transferring Web pages, imagesetc, but is capable of transferring any data type• There is no limit on the amount of data that can betransferred• Proven to be secure and scale to global use (www)• has built in caching mechanisms (web and browser) 2
    • 47. REST SCALABILITY•All communication is stateless•Session state is kept on the Client•Client is responsible for transitioning to new states•States are represented by URIs 2
    • 48. REST• In REST, everything on the network is aresource –Resources are addressable via URIs (URL) –Resources are self descriptive• Resources are manipulated via HTTP verbs 2
    • 49. REST• In REST, everything on the network is aresource –Resources are addressable via URIs (URL) –Resources are self descriptive• Resources are manipulated via HTTP verbs 2
    • 50. REST VERBS SIMILARITY WITH DATABASE OPERATIONSSome "RESTful" services will extend the POST method 2
    • 51. REST STATE REPRESENTATION•XML•JSON•YAML•Fast Infoset•ATOM 34
    • 52. REST ADVANTAGES• Simplicity (easy of use in production and consumption)• Everything is accessible and addressable via a URL• Bookmarking of the URL, send via email etc• Discoverability no need for a separate resource directory• Simplicity (easy of use in production and consumption) 2
    • 53. REST ADVANTAGES Continued• Easily understood Uniform interface• Easily created no need to client side-software• Easily Tested from a browser• Easily consumed by dynamic languages• Highly performant, improves response times and reduces load• Future proofing 2
    • 54. PROOF FOR REST IN THE WEB 2.0 WORLD 2
    • 55. PROOF FOR REST IN THE WEB 2.0 WORLD •Amazon 2
    • 56. PROOF FOR REST IN THE WEB 2.0 WORLD •Amazon •1st Gen. Product: E-commerce store 2
    • 57. PROOF FOR REST IN THE WEB 2.0 WORLD •Amazon •1st Gen. Product: E-commerce store •2nd Gen. Product: E-commerce platform 2
    • 58. PROOF FOR REST IN THE WEB 2.0 WORLD •Amazon •1st Gen. Product: E-commerce store •2nd Gen. Product: E-commerce platform •3rd Gen. Product: A series of Web platforms 2
    • 59. PROOF FOR REST IN THE WEB 2.0 WORLD •Amazon •1st Gen. Product: E-commerce store •2nd Gen. Product: E-commerce platform •3rd Gen. Product: A series of Web platforms •85%+ of all interaction is RESTful 2
    • 60. PROOF FOR REST IN THE WEB 2.0 WORLD •Amazon •1st Gen. Product: E-commerce store •2nd Gen. Product: E-commerce platform •3rd Gen. Product: A series of Web platforms •85%+ of all interaction is RESTful •Twitter 2
    • 61. PROOF FOR REST IN THE WEB 2.0 WORLD •Amazon •1st Gen. Product: E-commerce store •2nd Gen. Product: E-commerce platform •3rd Gen. Product: A series of Web platforms •85%+ of all interaction is RESTful •Twitter •80% of all interaction is is RESTful 2
    • 62. PROOF FOR REST IN THE WEB 2.0 WORLD •Amazon •1st Gen. Product: E-commerce store •2nd Gen. Product: E-commerce platform •3rd Gen. Product: A series of Web platforms •85%+ of all interaction is RESTful •Twitter •80% of all interaction is is RESTful •Google - Discontinued there SOAP API 2
    • 63. PROOF FOR REST IN THE WEB 2.0 WORLD - sourceJSR 311: JAX-RS Microsoft adoption of REST 2
    • 64. THREE QUICK REST DEMOS •Twitter •Google •Delicious 2
    • 65. WOA WINS, LET’S ALL USE THAT THEN? Ok so i cheated a little •disadvantages of SOAP AND WSDL •advantages of REST 2
    • 66. ;47<0=>*?03@*A4345.>4=403+ LETS NOT FORGET THE ENTERPRISE.=/ H F=345-50/4*9.,-130=> :0D3154*E5.,*F50D*G4?D.,452*B(G)I: 9B9 BC ()*+,-./01,*%$$&2*),/34567, %# 8%$$&*94/754 :7137//. 2
    • 67. ;47<0=>*?03@*A4345.>4=403+ LETS NOT FORGET THE ENTERPRISE.=/ H F=345-50/4*9.,-130=> :0D3154*E5.,*F50D*G4?D.,452*B(G)I: 9B9 BC ()*+,-./01,*%$$&2*),/34567, %# But8%$$&*94/754 a movement there is :7137//. of IT infrastructure into the cloud. 2
    • 68. COMPARING SOA AND WOA• SOAs WS * (standards) are more flexible ataddressing advanced quality of servicerequirements and governance commonlyoccurring in enterprise computing• WOAs does not have the rigour ofstandards associated with it. It is all aboutAgile consumption, through a simplemechanism, SOAP. 2
    • 69. COMPARING SOA AND WOA• SOAs limited number of endpointsservicings multiple requests and data types• WOAs large number of endpoints one foreach individual resource instance 2
    • 70. COMPARING SOA AND WOA• SOA designed from the top-downto be tool friendly• WOA emerged from the bottom upand is naturally supported by the web, it isconsumable by anything that can use aURL - it’s ‘Cloud Friendly’ 2
    • 71. COMPARING SOA AND WOA • SOA builds a messaging layer above HTTP • WOA uses HTTP as the transfer mechanism 2
    • 72. COMPARING SOA AND WOA • SOA may have to open up the firewall to service bespoke ports • WOA uses standard ports (80 and 443) and as such requires no change to firewall 2
    • 73. CONCLUSION - link back to the speedboat • SOA Freedom-of-choice •WOA Freedom-from-choice 2
    • 74. CONCLUSION cont. 2
    • 75. CONCLUSION cont.• WOA is starting to be viewed as a subset of SOA 2
    • 76. CONCLUSION cont.• WOA is starting to be viewed as a subset of SOA• Its about thinking about the data and providing best of breed control 2
    • 77. CONCLUSION cont.• WOA is starting to be viewed as a subset of SOA• Its about thinking about the data and providing best of breed control •Freedom of choice 2
    • 78. CONCLUSION cont.• WOA is starting to be viewed as a subset of SOA• Its about thinking about the data and providing best of breed control •Freedom of choice •Freedom from choice 2
    • 79. CONCLUSION cont.• WOA is starting to be viewed as a subset of SOA• Its about thinking about the data and providing best of breed control •Freedom of choice •Freedom from choice• Its about focusing on the solution that gets the job done 2
    • 80. CONCLUSION cont.• WOA is starting to be viewed as a subset of SOA• Its about thinking about the data and providing best of breed control •Freedom of choice •Freedom from choice• Its about focusing on the solution that gets the job done• It’s about thinking about the long-tail i.e not just the potential users 2
    • 81. CONCLUSION cont.• WOA is starting to be viewed as a subset of SOA• Its about thinking about the data and providing best of breed control •Freedom of choice •Freedom from choice• Its about focusing on the solution that gets the job done• It’s about thinking about the long-tail i.e not just the potential users• It’s about collective intelligence 2
    • 82. CONCLUSION cont.• WOA is starting to be viewed as a subset of SOA• Its about thinking about the data and providing best of breed control •Freedom of choice •Freedom from choice• Its about focusing on the solution that gets the job done• It’s about thinking about the long-tail i.e not just the potential users• It’s about collective intelligence So sometimes the dark side is not as bad as its cracked up to be! 2
    • 83. 2
    • 84. Thank you web: www.incendiaryblue.com, www.markedgington.com email: mark.markedgington@incendiaryblue.com twitter: @markedgington skype: markedgington 2
    • 85. REFERENCES•x•y•z 2