Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Enterprise IT vs. WWW

Enterprise IT vs. WWW

For years, the enterprise IT community used to believe they were the big guys, and those Web folks were just script kiddies building toy apps with PHP. But by now, the really interesting systems are those built on the Web, with non-functional requirements that make even the biggest banking or insurance app pale in comparison. Integration, as practiced on the Web, is also widely different from the typical enterprise IT approach - yet it seems to yield results that outshine years of effort in most large companies.

In this session, we'll take a look at how the typical enterprise IT landscape can benefit from the Web's architecture, what Java developers need to learn to be part of this, and why the whole idea of "applications" is going to disappear.

Stefan Tilkov

May 31, 2012
Tweet

More Decks by Stefan Tilkov

Other Decks in Technology

Transcript

  1. © 2012 innoQ Deutschland GmbH Enterprise IT vs. WWW Stefan

    Tilkov | @stilkov | JUG Ostfalen | AutoUni 31.03.2012 iSAQB Thursday, May 31, 12
  2. © 2012 innoQ Deutschland GmbH @stilkov 2. iSAQB Architecture Days/

    ObjektSPEKTRUM Information Days „So warearchitektur im Team. So warearchitektur im Wandel“ 20.-22.11.2012 Call for Papers: [email protected] iSAQB Thursday, May 31, 12
  3. © 2012 innoQ Deutschland GmbH @stilkov http://www.innoq.com Beratungsunternehmen mit Schwerpunkt

    auf Softwarearchitektur & effizienter Entwicklung Gründungsmitglied iSAQB e.V. ~60 Mitarbeiter (Q1 2012) Beratung, Schulung, Entwicklung Java/Java EE, Ruby on Rails u.a Standorte in Düsseldorf, Frankfurt, München, Zürich Thursday, May 31, 12
  4. © 2012 innoQ Deutschland GmbH @stilkov URIs Identi es Resources

    http://example.com/orders?year=2008 http://example.com/customers/1234 http://example.com/orders/2007/10/776654 http://example.com/products/4554 http://example.com/processes/sal-increase-234 Thursday, May 31, 12
  5. © 2012 innoQ Deutschland GmbH @stilkov Representations in di erent

    Formats XML HTML XHTML JSON YAML Plain Text PDF Binary Thursday, May 31, 12
  6. © 2012 innoQ Deutschland GmbH @stilkov Customer Order Delivery Product

    CustomerList ProductCatalog Rating «interface» Resource Thursday, May 31, 12
  7. © 2012 innoQ Deutschland GmbH @stilkov GET PUT POST DELETE

    «interface» Resource Thursday, May 31, 12
  8. © 2012 innoQ Deutschland GmbH @stilkov POST http://example.com/CustomerMgmt <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Body> <deleteCustomer xmlns="http://example.com/ns1"> <customerId>13</customerId> </ns:deleteCustomer> </soap:Body> </soap:Envelope> Method ID Endpoint Thursday, May 31, 12
  9. © 2012 innoQ Deutschland GmbH @stilkov “Thank you for nothing.”

    Enterprise Web "Here are the missing parts of the Web!” Thursday, May 31, 12
  10. © 2012 innoQ Deutschland GmbH @stilkov Resources Pretty URLs Bookmarks

    Collaboration Caching Hypermedia Thursday, May 31, 12
  11. © 2012 innoQ Deutschland GmbH @stilkov Using the Web vs.

    Abusing the Web Thursday, May 31, 12
  12. © 2012 innoQ Deutschland GmbH @stilkov Customer Order Delivery Product

    CustomerList ProductCatalog CustomerView OrderEntryForm ProductMaintenanceForm Thursday, May 31, 12
  13. © 2012 innoQ Deutschland GmbH @stilkov Customer Order Delivery Product

    CustomerList ProductCatalog Rating «interface» Resource CustomerView OrderEntryForm ProductMaintenanceForm Thursday, May 31, 12
  14. © 2012 innoQ Deutschland GmbH @stilkov URIs HTTP HTML CSS

    Javascript Syndication Web Servers Caching Proxies Load Balancers CDNs Thursday, May 31, 12
  15. © 2012 innoQ Deutschland GmbH @stilkov 10 million requests/day 3.6

    million pageviews/day 430,000 registered users 2.3 million projects 19 million forum posts 13 million private messages 8 million photos (Flickr) 70,000 active users/day 900 new sign ups/day 50,000 new forum posts/day 4 Months 1 Developer On weekends & evenings Thursday, May 31, 12
  16. © 2012 innoQ Deutschland GmbH @stilkov Ruby on Rails MySQL

    Gentoo Linux Capistrano Nginx Xen HAproxy Munin Tokyo Cabinet Memcached Tyrant Nagios HopToad NewRelic Syslog-ng S3 Cloudfront Sphinx Thursday, May 31, 12
  17. “ © 2012 innoQ Deutschland GmbH @stilkov What I’m writing

    here is the single most important take-away from my Sun years, and it fits in a sentence: The community of developers whose work you see on the Web, who probably don’t know what ADO or UML or JPA even stand for, deploy better systems at less cost in less time at lower risk than we see in the Enterprise. Tim Bray http://www.tbray.org/ongoing/When/201x/2010/01/02/Doing-It-Wrong Thursday, May 31, 12
  18. © 2012 innoQ Deutschland GmbH @stilkov “My Internet is bigger

    than your enterprise.” Paraphrasing Dare Obasanjo, see http://tinyurl.com/dare-enterprise Thursday, May 31, 12
  19. © 2012 innoQ Deutschland GmbH @stilkov XML Stock Quotes JAXB

    Java Beans Session Beans Transfer Objects Web Framework Portlets Portal Server Thursday, May 31, 12
  20. © 2012 innoQ Deutschland GmbH @stilkov Browser Server A Client

    A Server B Client B Thursday, May 31, 12
  21. © 2012 innoQ Deutschland GmbH @stilkov Browser Server A Server

    B Resource 1 Resource 2 Resource n Representation 1 Representation 2 Representation n ... ... Thursday, May 31, 12
  22. © 2012 innoQ Deutschland GmbH @stilkov Browser HTML Page Backend

    1 UI 1 Frontend Server UI 2 Server-side integration Backend 2 Examples: ESI-Caches SSI Portal Server Thursday, May 31, 12
  23. © 2012 innoQ Deutschland GmbH @stilkov Browser HTML Page Backend

    1 UI 1 UI 2 Client-side integration Backend 2 Examples: AJAX Proprietary Frameworks Thursday, May 31, 12
  24. © 2012 innoQ Deutschland GmbH @stilkov Multiple tabs Multiple windows

    Menus Bookmarks Personalization UI Integration Thursday, May 31, 12
  25. © 2012 innoQ Deutschland GmbH @stilkov Browser HTML Page 1

    Links Backend 1 Backend 2 Asset Server HTML Page 2 CSS <<creates>> <<creates>> Thursday, May 31, 12
  26. © 2012 innoQ Deutschland GmbH @stilkov How much HTTP would

    you like with that? Thursday, May 31, 12
  27. © 2012 innoQ Deutschland GmbH @stilkov Request/Response-oriented Struts Play Grails

    Rails ASP.NET MVC PHP Django Spring MVC Thursday, May 31, 12
  28. © 2012 innoQ Deutschland GmbH @stilkov Rich-client Applets JavaFX GWT

    Silverlight Flash/Flex Echo ZK Meteor Backbone.js Thursday, May 31, 12
  29. © 2012 innoQ Deutschland GmbH @stilkov Linkable and “pretty” URIs

    GET/POST di erentiation Support for caching Full control over HTML 1 Resource, n Views Request/Response Frameworks Thursday, May 31, 12
  30. © 2012 innoQ Deutschland GmbH @stilkov Server Client 1 Client

    2 State Client 1 State Client 2 Server State R1 R2 Rn Representation R1 R2 Turn session state … Thursday, May 31, 12
  31. © 2012 innoQ Deutschland GmbH @stilkov Server Client 1 C1

    C1 Client 2 C2 State Client 1 State Client 2 Server State Representation R1 R2 Rn C2 C2 C2 C1 C1 R2 R1 … into client or resource state Thursday, May 31, 12
  32. © 2012 innoQ Deutschland GmbH @stilkov Browser Server HTML Page

    Label Label Label Label Label Label Label Label Submit Thursday, May 31, 12
  33. © 2012 innoQ Deutschland GmbH @stilkov Browser Server Label Label

    Label Next Label Label Label Next Label Label Finish Session State Thursday, May 31, 12
  34. © 2012 innoQ Deutschland GmbH @stilkov Browser Server Label Label

    Label Next Label Label Label Next Label Label Finish HTML Page Label Label Label Label Label Label Label Label Submit Client State Thursday, May 31, 12
  35. © 2012 innoQ Deutschland GmbH @stilkov From server to client

    Server Client Server-side Components ROCA Single Page Apps Flash Silverlight Applets … Thursday, May 31, 12
  36. © 2012 innoQ Deutschland GmbH @stilkov 1. REST principles 2.

    Server-side application logic 3. No redundant logic 4. Non-browser access 5. Server sends structured HTML 6. Progressive enhancement/ unobtrusive JavaScript 7. No dynamic JavaScript Thursday, May 31, 12
  37. © 2012 innoQ Deutschland GmbH @stilkov 1. Additional representations (JSON,

    XML, ...) 2. Authentication via HTTP mechanisms, cookies if unavoidable 3. Use of HTML 5 history API Thursday, May 31, 12
  38. © 2012 innoQ Deutschland GmbH @stilkov 1. Broken accessibility 2.

    Session state 3. Broken back/forward/refresh 4. No bookmarks/links 5. JS “engines” in client 6. Server-side dependency on JS- generated markup 7. Hashbangs et al. Thursday, May 31, 12
  39. © 2012 innoQ Deutschland GmbH @stilkov Don’t be afraid of

    Web technologies Thursday, May 31, 12
  40. © 2012 innoQ Deutschland GmbH @stilkov If you can't link

    to it, does it exist? If you can't build real Web apps with it, is it worth your time? Vielen Dank! Thursday, May 31, 12
  41. © 2012 innoQ Deutschland GmbH Necessary Rules & Guidelines Cross-system

    System-internal Responsibilities Programming languages UI integration Development tools Communication protocols Frameworks Data formats Process/Workflow control Redundant data Persistence BI interfaces Design patterns Logging, Monitoring Coding guidelines (Deployment, Operations) Thursday, May 31, 12
  42. © 2012 innoQ Deutschland GmbH t Domain Architecture 1.0 1.1

    System-internal Rules 1.0 1.1 2.0 2.1 Cross-system Rules 1.0 1.1 1.2 Thursday, May 31, 12
  43. © 2012 innoQ Deutschland GmbH @stilkov Thank you! Q&A Stefan

    Tilkov [email protected] http://www.innoq.com/blog/st/ @stilkov Phone: +49 170 471 2625 innoQ Deutschland GmbH http://www.innoq.com Krischerstr. 100 40789 Monheim am Rhein Germany Phone: +49 2173 3366-0 innoQ Schweiz GmbH [email protected] Gewerbestr. 11 CH-6330 Cham Switzerland Phone: +41 41 743 0116 Thursday, May 31, 12