Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Busy Architects Guide to Modern Web Architecture in 2014

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Basic web architecture
Basic web architecture
Chargement dans…3
×

Consultez-les par la suite

1 sur 39 Publicité

Busy Architects Guide to Modern Web Architecture in 2014

Télécharger pour lire hors ligne

Understand what exactly a "Web app" is
Know how web architecture has changed over the years
Learn how to do developers build "Web apps" today

Understand what exactly a "Web app" is
Know how web architecture has changed over the years
Learn how to do developers build "Web apps" today

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Publicité

Similaire à Busy Architects Guide to Modern Web Architecture in 2014 (20)

Plus par Particular Software (20)

Publicité

Plus récents (20)

Busy Architects Guide to Modern Web Architecture in 2014

  1. 1. BBuussyy AArrcchhiitteeccttss GGuuiiddee ttoo Modern Web Architecture: 2014 Edition Ted Neward Neward & Associates http://www.tedneward.com | ted@tedneward.com
  2. 2. CCrreeddeennttiiaallss Who is this guy? – CTO, iTrellis (http://www.itrellis.com) ask me how we can help your project, your team or your firm – Microsoft MVP (F#, C#, Architect); JSR 175, 277 EG – Author Professional F# 2.0 (w/Erickson, et al; Wrox, 2010) Effective Enterprise Java (Addison-Wesley, 2004) SSCLI Essentials (w/Stutz, et al; OReilly, 2003) Server-Based Java Programming (Manning, 2000) – Blog: http://blogs.tedneward.com – Writing: http://www.newardassociates.com/writing.html – Twitter: @tedneward – For more, see http://www.newardassociates.com/about.html
  3. 3. OObbjjeeccttiivveess  Web architecture has changed over the years – Some of it for the better, some for the worse – More importantly, the goals of what "the Web" are meant to be have changed  So how do we build "Web apps" today?  What exactly is a "Web app"?  Is building a "Web app" really the point of what we want to do?
  4. 4. HHiissttoorryy Understanding our roots
  5. 5. HHiissttoorryy  The Web has gone through several technology iterations – not so much the approach, but the tools and technologies – and the way in which we used it all – and, as a result, how the Web is built and used
  6. 6. HHiissttoorryy  Stage One: Xanadu – Project Xanadu was the brainchild of Ted Nelson – "A word processor capable of storing multiple versions, and displaying the differences between these versions" – "On top of this basic idea, Nelson wanted to facilitate nonsequential writing, in which the reader could choose his or her own path through an electronic document." http://en.wikipedia.org/wiki/Project_Xanadu
  7. 7. HHiissttoorryy  Stage One: Xanadu – "Xanadu, a global hypertext publishing system, is the longest-running vaporware story in the history of the computer industry. It has been in development for more than 30 years." – "Xanadu was meant to be a universal library, a worldwide hypertext publishing tool, a system to resolve copyright disputes, and a meritocratic forum for discussion and debate. By putting all information within reach of all people, Xanadu was meant to eliminate scientific ignorance and cure political misunderstandings. And, on the very hackerish assumption that global catastrophes are caused by ignorance, stupidity, and communication failures, Xanadu was supposed to save the world." Source: http://www.wired.com/wired/archive//3.06/xanadu_pr.html
  8. 8. HHiissttoorryy  Xanadu's 17 Rules: – Every Xanadu server is uniquely and securely identified. – Every Xanadu server can be operated independently or in a network. – Every user is uniquely and securely identified. – Every user can search, retrieve, create and store documents. – Every document can consist of any number of parts each of which may be of any data type. – Every document can contain links of any type including virtual copies ("transclusions") to any other document in the system accessible to its owner.
  9. 9. HHiissttoorryy  Xanadu's 17 Rules: – Links are visible and can be followed from all endpoints. – Permission to link to a document is explicitly granted by the act of publication. – Every document can contain a royalty mechanism at any desired degree of granularity to ensure payment on any portion accessed, including virtual copies ("transclusions") of all or part of the document. – Every document is uniquely and securely identified. – Every document can have secure access controls. – Every document can be rapidly searched, stored and retrieved without user knowledge of where it is physically stored.
  10. 10. HHiissttoorryy  Xanadu's 17 Rules: – Every document is automatically moved to physical storage appropriate to its frequency of access from any given location. – Every document is automatically stored redundantly to maintain availability even in case of a disaster. – Every Xanadu service provider can charge their users at any rate they choose for the storage, retrieval and publishing of documents. – Every transaction is secure and auditable only by the parties to that transaction. – The Xanadu client-server communication protocol is an openly published standard. Third-party software development and integration is encouraged.
  11. 11. HHiissttoorryy  Stage Two: Simple Browser – Show me HTML! – This was the era of the static HTML page – Geocities, MySpace, "home pages", remember? http://www2.warnerbros.com/spacejam/movie/jam.htm – This was an age of entirely HTML-based web pages
  12. 12. HHiissttoorryy  Stage Three: Simple Server – Then we wanted some small amount of server interaction •Web page "hit counters" •Temperature conversion •Access to server-side environment values •Maybe even store a form to a database – This was the era of CGI/ISAPI/NSAPI/etc •Perl scripts, bash scripts, C++ plugins •Pages could now be slightly dynamic
  13. 13. HHiissttoorryy  Stage Four: Complex Browser – HTML is too limiting; give me power in the browser – Applets, Flash, Silverlight other technologies came and went here, too – Server remained simple, though its complexity was growing •for example, applet could make CORBA calls to the server •or, applet could (w/the right JDBC drivers) call the database
  14. 14. HHiissttoorryy  Stage Five: Complex Server – But applets were ugly, and non-uniform not to mention a "security hole" – So processing shifted to the server •Servlets/JSP/"Model Two" •ASP/ASP.NET •Ruby-on-Rails •PHP – "MVC" server-side designs/patterns emerged
  15. 15. HHiissttoorryy  Stage Six: Integration/APIs – Enterprise systems needed ways to connect with one another •Firewalls made "traditional" interop tools difficult •HTTP was easy to punch through firewalls •Enter SOAP, WSDL, and the WS-DeathStar – At the same time, the Internet itself changed •Alternative access devices appeared (mobile!) •These access devices had their own UI technologies – So "Web APIs" began to emerge •Characterized by "simplicity" and nominally "RESTful" •JSON or XML over HTTP
  16. 16. HHiissttoorryy  Problems still plague the Web, though – Link rot – No integrated or universal identity system – No redundancy (unless you build it yourself)  And Xanadu was only for hyperlinked documents – What if we need to do more than, say, peruse content? – Buy things, sell things, trade things – Examine data, manipulate data – And any other domain-related thing you can imagine
  17. 17. HHiissttoorryy  The Web is not HTML  The Web is not HTTP  The Web is not HTML + HTTP  It may have been, once, but it's a lot more than that now
  18. 18. GGooaallss What are we really after?
  19. 19. GGooaallss  What is "Modern Web Architecture"? – "Architecture" A set of predetermined answers to the questions that developers will ask – "Web" On, around, near, or in the Internet, even if just a little – "Modern" As in, not considered "legacy" for at least a year or two
  20. 20. GGooaallss  What is "Modern Web Architecture"? – One that avoids the Fallacies of Enterprise Development 1) The network is reliable 2) Latency is zero 3) Bandwidth is infinite 4) The network is secure 5) Topology doesn't change 6) There is one administrator 7) Transport cost is zero 8) The network is homogeneous 9) The system is monolithic 10) The system is finished
  21. 21. GGooaallss  What is "Modern Web Architecture"? – Modifiable (extensible, evolvable) – Scalable – Performable (actual, perception) – Reliable (testable, monitorable, recoverable) – Composable – Securable – Interoperable – Discoverable (somewhat) – Internationalizable
  22. 22. GGooaallss  What is "Modern Web Architecture"?  It's a platform You're building a platform on which you (and others) can build parts or all of a system of programs  Let's call it "platform-oriented development"
  23. 23. TThheeoorryy What does Platform-Oriented Development imply?
  24. 24. TThheeoorryy What is a "platform"? – Wikipedia: "A computing platform is, in the most general sense, whatever pre-existing environment a piece of software is designed to run within, obeying its constraints, and making use of its facilities. Typical platforms include a hardware architecture, an operating system (OS), and runtime libraries."
  25. 25. TThheeoorryy What is a "platform"? – "A software platform is a set of subsystems and interfaces that form a common infrastructure on top of which a set of related products are developed." (McGrath, M. 1995. Product Strategy for High-Technology Companies. Homewood, IL: Irwin.)
  26. 26. TThheeoorryy What is a "platform"? – It is a set of components, services or interfaces that are designed for developer consumption, built around a common infrastructure and designed specifically to be used by internal developers, external developers, or both, to create applications/tools/components of use to users.
  27. 27. TThheeoorryy Examples of platforms – Windows (Win16 API, Win32 API, COM, .NET, WinRT) – Salesforce.com – Facebook – Twitter
  28. 28. TThheeoorryy Many platforms are developer-based, because that's what developers know best – But platforms are not about PAAS, nor do they imply scale – Platforms are domain-centric and -focused – A single company may in fact offer several different platforms – ... and a platform may (and often will) stretch across companies – Platforms may/will stretch across platforms a company's financial services platform reaches to Windows, Mac, iOS, Android, ...
  29. 29. PPrraaccttiiccaall What does Platform-Oriented Development imply?
  30. 30. PPrraaccttiiccaall  Is it just a set of APIs? – Yes: this is what developers consume, most of the time – No: the platform isn't always about developer infrastructure, but business-related domain elements – Maybe: the APIs are executed within a known context or envrionment, which may or may not be defined by APIs
  31. 31. PPrraaccttiiccaall  Does it have to be HTTP? – POD implies high interoperability – HTTP clearly provides a great deal of that – But so do other communication approaches
  32. 32. PPrraaccttiiccaall  How does MWA relate to SOA and/or coarse-grained or microservices? – It is, by definition, SOA – But it doesn't have to correspond to any particular specifications – In fact, it doesn't have to be a specification or standard but it helps for interoperability reasons if it is
  33. 33. PPrraaccttiiccaall  How does cloud fit in? – Or any *AAS (IAAS, PAAS, SAAS, etc)? – Truthfully, where the platform lives is partly an implementation decision – What infrastructure or platform provided is also implementation detail – Note: your platform is not the same as the platform provided by a PAAS
  34. 34. PPrraaccttiiccaall  Is it "functional" or "object/resource-oriented"? – It's kind of all three – It depends on what you're trying to build – Functional concepts are important – Resources are the heart of REST – Chances are, it's some combination of both – Leave implementation details hidden!
  35. 35. PPrraaccttiiccaall  What about CQRS or Event Sourced systems? – These aren't contrary to Modern Web Apps – More importantly, should entities/resources expose state? – CQRS/ES can easily expose state, but it approaches it differently – ... which means the API is exposed differently and people call it differently
  36. 36. PPrraaccttiiccaall  What about messaging or event-bus systems? – Why not? They're really an implementation detail – More importantly, they provide a common backbone for extension – Important choice, however: what is your gateway into the system? •It could be that your platform exposes an HTTP API... •... or you could use the messaging/event-bus as the entryway •Either way, consistency and interop is key
  37. 37. PPrraaccttiiccaall  Then there's all the different clients we have to consider – Mobile being the big one – But even within mobile, there's a serious spread of capabilities – HTML alone (and MVC on the server) is no longer sufficient – This is why you are building a platform!
  38. 38. CCoonncclluussiioonn Wrapping Up
  39. 39. SSuummmmaarryy  The Web is a Modern Web Architecture – But it's not the ONLY Modern Web Architecture – Plenty of others are, can, and will be  Decide how much of the MWA you really need – And if it turns out you need most of it, build a platform!  Contact me if you want to know how – Or want help doing it

×