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. 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?
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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
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"
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. 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. 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. TThheeoorryy
Examples of platforms
– Windows (Win16 API, Win32 API, COM, .NET, WinRT)
– Salesforce.com
– Facebook
– Twitter
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, ...
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. 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. 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. 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. 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. 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. 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. 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!
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