SlideShare a Scribd company logo
BBuussyy AArrcchhiitteeccttss GGuuiiddee ttoo 
Modern Web Architecture: 2014 Edition 
Ted Neward 
Neward & Associates 
http://www.tedneward.com | ted@tedneward.com
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
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?
HHiissttoorryy 
Understanding our roots
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
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
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
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.
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.
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.
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
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
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
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
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
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
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
GGooaallss 
What are we really after?
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
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
GGooaallss 
 What is "Modern Web Architecture"? 
– Modifiable (extensible, evolvable) 
– Scalable 
– Performable (actual, perception) 
– Reliable (testable, monitorable, recoverable) 
– Composable 
– Securable 
– Interoperable 
– Discoverable (somewhat) 
– Internationalizable
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"
TThheeoorryy 
What does Platform-Oriented Development imply?
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."
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.)
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.
TThheeoorryy 
Examples of platforms 
– Windows (Win16 API, Win32 API, COM, .NET, WinRT) 
– Salesforce.com 
– Facebook 
– Twitter
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, ...
PPrraaccttiiccaall 
What does Platform-Oriented Development imply?
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
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
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
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
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!
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
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
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!
CCoonncclluussiioonn 
Wrapping Up
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

More Related Content

PDF
Basic web architecture
Ralu Mihordea
 
PPTX
Web Architecture
sudip pudasaini
 
PDF
Web architecture - overview of techniques.
Ruslan Shevchenko
 
PPTX
Architecture Best Practices
AWS Germany
 
PPTX
Introduction to Web Architecture
Chamnap Chhorn
 
PDF
Fundamentals of Web for Non-Developers
Lemi Orhan Ergin
 
PDF
High performance website
Chamnap Chhorn
 
PPT
Web Fundamentals
arunv
 
Basic web architecture
Ralu Mihordea
 
Web Architecture
sudip pudasaini
 
Web architecture - overview of techniques.
Ruslan Shevchenko
 
Architecture Best Practices
AWS Germany
 
Introduction to Web Architecture
Chamnap Chhorn
 
Fundamentals of Web for Non-Developers
Lemi Orhan Ergin
 
High performance website
Chamnap Chhorn
 
Web Fundamentals
arunv
 

What's hot (20)

PDF
Web Fundamental
SiliconExpert Technologies
 
PPTX
Static dynamic and active web pages
Mohammad Kamrul Hasan
 
PPT
Introduction to Basic Concepts in Web
Jussi Pohjolainen
 
PPTX
World wide web architecture presentation
ImMe Khan
 
PDF
Introduction to Web Technology
Rob Bertholf
 
PPTX
Web Architecture - Mechanism and Threats
Sumedt Jitpukdebodin
 
DOCX
internet programming and java notes 5th sem mca
Renu Thakur
 
PDF
Internet programming lecture 1
Mohammed Hussein
 
PPT
Web browsers and web document
Mohammad Kamrul Hasan
 
PPTX
Web Technology Fundamentals
sunmitraeducation
 
PPTX
Static and Dynamic webpage
Aishwarya Pallai
 
PPT
presentation on static website design
jyotiyadav1926
 
PPTX
REST and ASP.NET Web API (Milan)
Jef Claes
 
PPT
Introduction to web technology
VARSHAKUMARI49
 
PDF
Dynamic Web
Dave Wallace
 
PPT
4 internet programming
soner_kavlak
 
PPTX
Introductiontowebarchitecture 090922221506-phpapp01
Maisha Price
 
PPTX
0 csc 3311 slide internet programming
umardanjumamaiwada
 
PDF
5. HTML5
Jalpesh Vasa
 
PPT
KMUTNB - Internet Programming 1/7
phuphax
 
Web Fundamental
SiliconExpert Technologies
 
Static dynamic and active web pages
Mohammad Kamrul Hasan
 
Introduction to Basic Concepts in Web
Jussi Pohjolainen
 
World wide web architecture presentation
ImMe Khan
 
Introduction to Web Technology
Rob Bertholf
 
Web Architecture - Mechanism and Threats
Sumedt Jitpukdebodin
 
internet programming and java notes 5th sem mca
Renu Thakur
 
Internet programming lecture 1
Mohammed Hussein
 
Web browsers and web document
Mohammad Kamrul Hasan
 
Web Technology Fundamentals
sunmitraeducation
 
Static and Dynamic webpage
Aishwarya Pallai
 
presentation on static website design
jyotiyadav1926
 
REST and ASP.NET Web API (Milan)
Jef Claes
 
Introduction to web technology
VARSHAKUMARI49
 
Dynamic Web
Dave Wallace
 
4 internet programming
soner_kavlak
 
Introductiontowebarchitecture 090922221506-phpapp01
Maisha Price
 
0 csc 3311 slide internet programming
umardanjumamaiwada
 
5. HTML5
Jalpesh Vasa
 
KMUTNB - Internet Programming 1/7
phuphax
 
Ad

Viewers also liked (7)

PDF
Opticon 2015-Experience Optimization in Modern Web Architecture
Optimizely
 
PDF
Web app architecture
Jordan Open Source Association
 
PDF
Play Framework: Intro & High-Level Overview
Josh Padnick
 
PPTX
Architecture & Workflow of Modern Web Apps
Rasheed Waraich
 
PDF
Angular2 - getting-ready
Nir Kaufman
 
PDF
Anatomy of a Modern Node.js Application Architecture
AppDynamics
 
PDF
Architecture of a Modern Web App
scothis
 
Opticon 2015-Experience Optimization in Modern Web Architecture
Optimizely
 
Web app architecture
Jordan Open Source Association
 
Play Framework: Intro & High-Level Overview
Josh Padnick
 
Architecture & Workflow of Modern Web Apps
Rasheed Waraich
 
Angular2 - getting-ready
Nir Kaufman
 
Anatomy of a Modern Node.js Application Architecture
AppDynamics
 
Architecture of a Modern Web App
scothis
 
Ad

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

PDF
Web Landscape - updated in Jan 2016
Jack Zheng
 
PPT
Training - Managing .NET/J2EE Projects
Shashank Banerjea
 
PPT
Ajax World 2008
Axway Appcelerator
 
PPT
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Jeff Haynie
 
PPT
The Evolving Architecture
William Grosso
 
PPT
Web2.0-IFF
guest5991b
 
PPT
Web2.0-IFF
nidhi murarka
 
PDF
DLBCSWAD01_Session1 Web Development .pdf
deeppatel98439843
 
PPTX
Dos1
Avinash Buddana
 
PDF
Php Leads Web2 0
guestf34485
 
PDF
lec-01-WP.pdf
FumikageTokoyami4
 
KEY
Intro
tsans
 
PDF
Codecentric At Ajax World Conference San Jose
Fabian Lange
 
PPTX
Evolution of Applications & Web
Himanshu Jindal
 
PDF
Past, Present and Future of APIs of Mobile and Web Apps
SmartBear
 
PDF
AJAX for Mobile Devices - 04/2009
Roland Tritsch
 
PPTX
Introduction and Basics to web technology .pptx
LEENASAHU42
 
PPT
Beyond the Browser
John Coggeshall
 
PPTX
How do we drive tech changes
Jaewoo Ahn
 
Web Landscape - updated in Jan 2016
Jack Zheng
 
Training - Managing .NET/J2EE Projects
Shashank Banerjea
 
Ajax World 2008
Axway Appcelerator
 
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Jeff Haynie
 
The Evolving Architecture
William Grosso
 
Web2.0-IFF
guest5991b
 
Web2.0-IFF
nidhi murarka
 
DLBCSWAD01_Session1 Web Development .pdf
deeppatel98439843
 
Php Leads Web2 0
guestf34485
 
lec-01-WP.pdf
FumikageTokoyami4
 
Intro
tsans
 
Codecentric At Ajax World Conference San Jose
Fabian Lange
 
Evolution of Applications & Web
Himanshu Jindal
 
Past, Present and Future of APIs of Mobile and Web Apps
SmartBear
 
AJAX for Mobile Devices - 04/2009
Roland Tritsch
 
Introduction and Basics to web technology .pptx
LEENASAHU42
 
Beyond the Browser
John Coggeshall
 
How do we drive tech changes
Jaewoo Ahn
 

More from Particular Software (20)

PDF
Scaling for Success: Lessons from handling peak loads on Azure with NServiceBus
Particular Software
 
PDF
Beyond simple benchmarks—a practical guide to optimizing code
Particular Software
 
PDF
An exception occurred - Please try again
Particular Software
 
PPTX
Tales from the trenches creating complex distributed systems
Particular Software
 
PPTX
Got the time?
Particular Software
 
PPTX
Implementing outbox model-checking first
Particular Software
 
PPTX
Reports from the field azure functions in practice
Particular Software
 
PPTX
Finding your service boundaries - a practical guide
Particular Software
 
PPTX
Decomposing .NET Monoliths with NServiceBus and Docker
Particular Software
 
PDF
DIY Async Message Pump: Lessons from the trenches
Particular Software
 
PDF
Share the insight of ServiceInsight
Particular Software
 
PPTX
What to consider when monitoring microservices
Particular Software
 
PPTX
Making communications across boundaries simple with NServiceBus
Particular Software
 
PPTX
Making communication across boundaries simple with Azure Service Bus
Particular Software
 
PPTX
How to avoid microservice pitfalls
Particular Software
 
PDF
Connect front end to back end using SignalR and Messaging
Particular Software
 
PDF
Async/Await: NServiceBus v6 API Update
Particular Software
 
PDF
Async/Await: TPL & Message Pumps
Particular Software
 
PDF
Async/Await Best Practices
Particular Software
 
PPTX
Making workflow implementation easy with CQRS
Particular Software
 
Scaling for Success: Lessons from handling peak loads on Azure with NServiceBus
Particular Software
 
Beyond simple benchmarks—a practical guide to optimizing code
Particular Software
 
An exception occurred - Please try again
Particular Software
 
Tales from the trenches creating complex distributed systems
Particular Software
 
Got the time?
Particular Software
 
Implementing outbox model-checking first
Particular Software
 
Reports from the field azure functions in practice
Particular Software
 
Finding your service boundaries - a practical guide
Particular Software
 
Decomposing .NET Monoliths with NServiceBus and Docker
Particular Software
 
DIY Async Message Pump: Lessons from the trenches
Particular Software
 
Share the insight of ServiceInsight
Particular Software
 
What to consider when monitoring microservices
Particular Software
 
Making communications across boundaries simple with NServiceBus
Particular Software
 
Making communication across boundaries simple with Azure Service Bus
Particular Software
 
How to avoid microservice pitfalls
Particular Software
 
Connect front end to back end using SignalR and Messaging
Particular Software
 
Async/Await: NServiceBus v6 API Update
Particular Software
 
Async/Await: TPL & Message Pumps
Particular Software
 
Async/Await Best Practices
Particular Software
 
Making workflow implementation easy with CQRS
Particular Software
 

Recently uploaded (20)

PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
The Future of Artificial Intelligence (AI)
Mukul
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 

Busy Architects Guide to Modern Web Architecture in 2014

  • 1. BBuussyy AArrcchhiitteeccttss GGuuiiddee ttoo Modern Web Architecture: 2014 Edition Ted Neward Neward & Associates http://www.tedneward.com | [email protected]
  • 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
  • 18. GGooaallss What are we really after?
  • 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
  • 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. 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. TThheeoorryy What does Platform-Oriented Development imply?
  • 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, ...
  • 29. PPrraaccttiiccaall What does Platform-Oriented Development imply?
  • 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