SlideShare ist ein Scribd-Unternehmen logo
1 von 39
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

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to Basic Concepts in Web
Introduction to Basic Concepts in WebIntroduction to Basic Concepts in Web
Introduction to Basic Concepts in WebJussi Pohjolainen
 
World wide web architecture presentation
World wide web architecture presentationWorld wide web architecture presentation
World wide web architecture presentationImMe Khan
 
Introduction to Web Technology
Introduction to Web TechnologyIntroduction to Web Technology
Introduction to Web TechnologyRob Bertholf
 
Web Architecture - Mechanism and Threats
Web Architecture - Mechanism and ThreatsWeb Architecture - Mechanism and Threats
Web Architecture - Mechanism and ThreatsSumedt Jitpukdebodin
 
internet programming and java notes 5th sem mca
internet programming and java notes 5th sem mcainternet programming and java notes 5th sem mca
internet programming and java notes 5th sem mcaRenu Thakur
 
Internet programming lecture 1
Internet programming lecture 1Internet programming lecture 1
Internet programming lecture 1Mohammed Hussein
 
Static and Dynamic webpage
Static and Dynamic webpageStatic and Dynamic webpage
Static and Dynamic webpageAishwarya Pallai
 
presentation on static website design
presentation on static website designpresentation on static website design
presentation on static website designjyotiyadav1926
 
REST and ASP.NET Web API (Milan)
REST and ASP.NET Web API (Milan)REST and ASP.NET Web API (Milan)
REST and ASP.NET Web API (Milan)Jef Claes
 
Introduction to web technology
Introduction to web technologyIntroduction to web technology
Introduction to web technologyVARSHAKUMARI49
 
4 internet programming
4 internet programming4 internet programming
4 internet programmingsoner_kavlak
 
Introductiontowebarchitecture 090922221506-phpapp01
Introductiontowebarchitecture 090922221506-phpapp01Introductiontowebarchitecture 090922221506-phpapp01
Introductiontowebarchitecture 090922221506-phpapp01Maisha Price
 
0 csc 3311 slide internet programming
0 csc 3311 slide internet programming0 csc 3311 slide internet programming
0 csc 3311 slide internet programmingumardanjumamaiwada
 
KMUTNB - Internet Programming 1/7
KMUTNB - Internet Programming 1/7KMUTNB - Internet Programming 1/7
KMUTNB - Internet Programming 1/7phuphax
 

Was ist angesagt? (20)

Web Fundamental
Web FundamentalWeb Fundamental
Web Fundamental
 
Static dynamic and active web pages
Static dynamic and active web pagesStatic dynamic and active web pages
Static dynamic and active web pages
 
Introduction to Basic Concepts in Web
Introduction to Basic Concepts in WebIntroduction to Basic Concepts in Web
Introduction to Basic Concepts in Web
 
World wide web architecture presentation
World wide web architecture presentationWorld wide web architecture presentation
World wide web architecture presentation
 
Introduction to Web Technology
Introduction to Web TechnologyIntroduction to Web Technology
Introduction to Web Technology
 
Web Architecture - Mechanism and Threats
Web Architecture - Mechanism and ThreatsWeb Architecture - Mechanism and Threats
Web Architecture - Mechanism and Threats
 
internet programming and java notes 5th sem mca
internet programming and java notes 5th sem mcainternet programming and java notes 5th sem mca
internet programming and java notes 5th sem mca
 
Internet programming lecture 1
Internet programming lecture 1Internet programming lecture 1
Internet programming lecture 1
 
Web browsers and web document
Web browsers and web documentWeb browsers and web document
Web browsers and web document
 
Web Technology Fundamentals
Web Technology FundamentalsWeb Technology Fundamentals
Web Technology Fundamentals
 
Static and Dynamic webpage
Static and Dynamic webpageStatic and Dynamic webpage
Static and Dynamic webpage
 
presentation on static website design
presentation on static website designpresentation on static website design
presentation on static website design
 
REST and ASP.NET Web API (Milan)
REST and ASP.NET Web API (Milan)REST and ASP.NET Web API (Milan)
REST and ASP.NET Web API (Milan)
 
Introduction to web technology
Introduction to web technologyIntroduction to web technology
Introduction to web technology
 
Dynamic Web
Dynamic WebDynamic Web
Dynamic Web
 
4 internet programming
4 internet programming4 internet programming
4 internet programming
 
Introductiontowebarchitecture 090922221506-phpapp01
Introductiontowebarchitecture 090922221506-phpapp01Introductiontowebarchitecture 090922221506-phpapp01
Introductiontowebarchitecture 090922221506-phpapp01
 
0 csc 3311 slide internet programming
0 csc 3311 slide internet programming0 csc 3311 slide internet programming
0 csc 3311 slide internet programming
 
5. HTML5
5. HTML55. HTML5
5. HTML5
 
KMUTNB - Internet Programming 1/7
KMUTNB - Internet Programming 1/7KMUTNB - Internet Programming 1/7
KMUTNB - Internet Programming 1/7
 

Andere mochten auch

Opticon 2015-Experience Optimization in Modern Web Architecture
Opticon 2015-Experience Optimization in Modern Web ArchitectureOpticon 2015-Experience Optimization in Modern Web Architecture
Opticon 2015-Experience Optimization in Modern Web ArchitectureOptimizely
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewJosh Padnick
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsRasheed Waraich
 
Angular2 - getting-ready
Angular2 - getting-ready Angular2 - getting-ready
Angular2 - getting-ready Nir Kaufman
 
Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture AppDynamics
 
Architecture of a Modern Web App
Architecture of a Modern Web AppArchitecture of a Modern Web App
Architecture of a Modern Web Appscothis
 

Andere mochten auch (7)

Opticon 2015-Experience Optimization in Modern Web Architecture
Opticon 2015-Experience Optimization in Modern Web ArchitectureOpticon 2015-Experience Optimization in Modern Web Architecture
Opticon 2015-Experience Optimization in Modern Web Architecture
 
Web app architecture
Web app architectureWeb app architecture
Web app architecture
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level Overview
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web Apps
 
Angular2 - getting-ready
Angular2 - getting-ready Angular2 - getting-ready
Angular2 - getting-ready
 
Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture
 
Architecture of a Modern Web App
Architecture of a Modern Web AppArchitecture of a Modern Web App
Architecture of a Modern Web App
 

Ähnlich wie Busy Architects Guide to Modern Web Architecture in 2014

Internet of Things 101 - For software engineers
Internet of Things 101 - For software engineersInternet of Things 101 - For software engineers
Internet of Things 101 - For software engineersKashif Ali Siddiqui
 
What's new in web standards?
What's new in web standards?What's new in web standards?
What's new in web standards?Daniel Appelquist
 
Web2.0 2012 - lesson 7 - technologies and mashups
Web2.0 2012 - lesson 7 - technologies and mashups Web2.0 2012 - lesson 7 - technologies and mashups
Web2.0 2012 - lesson 7 - technologies and mashups Carlo Vaccari
 
Ohio LinuxFest: Crash Course in Open Source Cloud Computing
Ohio LinuxFest:  Crash Course in Open Source Cloud ComputingOhio LinuxFest:  Crash Course in Open Source Cloud Computing
Ohio LinuxFest: Crash Course in Open Source Cloud ComputingMark Hinkle
 
Cloud white paper v3.0
Cloud white paper v3.0Cloud white paper v3.0
Cloud white paper v3.0CK Toh
 
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...Artefactual Systems - AtoM
 
Data to Consumer : end to end middleware capabilities
Data to Consumer : end to end middleware capabilitiesData to Consumer : end to end middleware capabilities
Data to Consumer : end to end middleware capabilitiesAsanka Abeysinghe
 
Google Cloud Platform and Kubernetes
Google Cloud Platform and KubernetesGoogle Cloud Platform and Kubernetes
Google Cloud Platform and KubernetesKasper Nissen
 
ICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docx
ICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docxICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docx
ICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docxMartin Mulwa
 
Implementing Hypermedia Clients: It's Not Rocket Science – Mike Amundsen, Pri...
Implementing Hypermedia Clients: It's Not Rocket Science – Mike Amundsen, Pri...Implementing Hypermedia Clients: It's Not Rocket Science – Mike Amundsen, Pri...
Implementing Hypermedia Clients: It's Not Rocket Science – Mike Amundsen, Pri...CA API Management
 
Containerization Principles Overview for app development and deployment
Containerization Principles Overview for app development and deploymentContainerization Principles Overview for app development and deployment
Containerization Principles Overview for app development and deploymentDr Ganesh Iyer
 
OpenReality Vision
OpenReality VisionOpenReality Vision
OpenReality Visionktweedy1
 
API Design and WebSocket
API Design and WebSocketAPI Design and WebSocket
API Design and WebSocketFrank Greco
 
Information Management & Sharing in Digital Era
Information Management & Sharing in Digital Era Information Management & Sharing in Digital Era
Information Management & Sharing in Digital Era Liaquat Rahoo
 
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...cresco
 
Houston TechFest 2014 slidedeck
Houston TechFest 2014 slidedeckHouston TechFest 2014 slidedeck
Houston TechFest 2014 slidedeckMatt Keas
 

Ähnlich wie Busy Architects Guide to Modern Web Architecture in 2014 (20)

Internet of Things 101 - For software engineers
Internet of Things 101 - For software engineersInternet of Things 101 - For software engineers
Internet of Things 101 - For software engineers
 
What's new in web standards?
What's new in web standards?What's new in web standards?
What's new in web standards?
 
Web2.0 2012 - lesson 7 - technologies and mashups
Web2.0 2012 - lesson 7 - technologies and mashups Web2.0 2012 - lesson 7 - technologies and mashups
Web2.0 2012 - lesson 7 - technologies and mashups
 
Ohio LinuxFest: Crash Course in Open Source Cloud Computing
Ohio LinuxFest:  Crash Course in Open Source Cloud ComputingOhio LinuxFest:  Crash Course in Open Source Cloud Computing
Ohio LinuxFest: Crash Course in Open Source Cloud Computing
 
Cloud white paper v3.0
Cloud white paper v3.0Cloud white paper v3.0
Cloud white paper v3.0
 
Blockchain for good
Blockchain for goodBlockchain for good
Blockchain for good
 
IoT : Whats in it for me?
IoT : Whats in it for me? IoT : Whats in it for me?
IoT : Whats in it for me?
 
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
Technologie Proche: Imagining the Archival Systems of Tomorrow With the Tools...
 
Data to Consumer : end to end middleware capabilities
Data to Consumer : end to end middleware capabilitiesData to Consumer : end to end middleware capabilities
Data to Consumer : end to end middleware capabilities
 
Convergence Best Poster Award
Convergence Best Poster AwardConvergence Best Poster Award
Convergence Best Poster Award
 
Google Cloud Platform and Kubernetes
Google Cloud Platform and KubernetesGoogle Cloud Platform and Kubernetes
Google Cloud Platform and Kubernetes
 
Distributed Systems in Data Engineering
Distributed Systems in Data EngineeringDistributed Systems in Data Engineering
Distributed Systems in Data Engineering
 
ICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docx
ICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docxICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docx
ICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docx
 
Implementing Hypermedia Clients: It's Not Rocket Science – Mike Amundsen, Pri...
Implementing Hypermedia Clients: It's Not Rocket Science – Mike Amundsen, Pri...Implementing Hypermedia Clients: It's Not Rocket Science – Mike Amundsen, Pri...
Implementing Hypermedia Clients: It's Not Rocket Science – Mike Amundsen, Pri...
 
Containerization Principles Overview for app development and deployment
Containerization Principles Overview for app development and deploymentContainerization Principles Overview for app development and deployment
Containerization Principles Overview for app development and deployment
 
OpenReality Vision
OpenReality VisionOpenReality Vision
OpenReality Vision
 
API Design and WebSocket
API Design and WebSocketAPI Design and WebSocket
API Design and WebSocket
 
Information Management & Sharing in Digital Era
Information Management & Sharing in Digital Era Information Management & Sharing in Digital Era
Information Management & Sharing in Digital Era
 
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
 
Houston TechFest 2014 slidedeck
Houston TechFest 2014 slidedeckHouston TechFest 2014 slidedeck
Houston TechFest 2014 slidedeck
 

Mehr von Particular Software

Scaling for Success: Lessons from handling peak loads on Azure with NServiceBus
Scaling for Success: Lessons from handling peak loads on Azure with NServiceBusScaling for Success: Lessons from handling peak loads on Azure with NServiceBus
Scaling for Success: Lessons from handling peak loads on Azure with NServiceBusParticular Software
 
Beyond simple benchmarks—a practical guide to optimizing code
Beyond simple benchmarks—a practical guide to optimizing code Beyond simple benchmarks—a practical guide to optimizing code
Beyond simple benchmarks—a practical guide to optimizing code Particular Software
 
An exception occurred - Please try again
An exception occurred - Please try againAn exception occurred - Please try again
An exception occurred - Please try againParticular Software
 
Tales from the trenches creating complex distributed systems
Tales from the trenches  creating complex distributed systemsTales from the trenches  creating complex distributed systems
Tales from the trenches creating complex distributed systemsParticular Software
 
Implementing outbox model-checking first
Implementing outbox   model-checking firstImplementing outbox   model-checking first
Implementing outbox model-checking firstParticular Software
 
Reports from the field azure functions in practice
Reports from the field   azure functions in practiceReports from the field   azure functions in practice
Reports from the field azure functions in practiceParticular Software
 
Finding your service boundaries - a practical guide
Finding your service boundaries - a practical guideFinding your service boundaries - a practical guide
Finding your service boundaries - a practical guideParticular Software
 
Decomposing .NET Monoliths with NServiceBus and Docker
Decomposing .NET Monoliths with NServiceBus and DockerDecomposing .NET Monoliths with NServiceBus and Docker
Decomposing .NET Monoliths with NServiceBus and DockerParticular Software
 
DIY Async Message Pump: Lessons from the trenches
DIY Async Message Pump: Lessons from the trenchesDIY Async Message Pump: Lessons from the trenches
DIY Async Message Pump: Lessons from the trenchesParticular Software
 
Share the insight of ServiceInsight
Share the insight of ServiceInsightShare the insight of ServiceInsight
Share the insight of ServiceInsightParticular Software
 
What to consider when monitoring microservices
What to consider when monitoring microservicesWhat to consider when monitoring microservices
What to consider when monitoring microservicesParticular Software
 
Making communications across boundaries simple with NServiceBus
Making communications across boundaries simple with NServiceBusMaking communications across boundaries simple with NServiceBus
Making communications across boundaries simple with NServiceBusParticular Software
 
Making communication across boundaries simple with Azure Service Bus
Making communication across boundaries simple with Azure Service BusMaking communication across boundaries simple with Azure Service Bus
Making communication across boundaries simple with Azure Service BusParticular Software
 
How to avoid microservice pitfalls
How to avoid microservice pitfallsHow to avoid microservice pitfalls
How to avoid microservice pitfallsParticular Software
 
Connect front end to back end using SignalR and Messaging
Connect front end to back end using SignalR and MessagingConnect front end to back end using SignalR and Messaging
Connect front end to back end using SignalR and MessagingParticular Software
 
Async/Await: NServiceBus v6 API Update
Async/Await: NServiceBus v6 API UpdateAsync/Await: NServiceBus v6 API Update
Async/Await: NServiceBus v6 API UpdateParticular Software
 
Async/Await: TPL & Message Pumps
Async/Await: TPL & Message Pumps Async/Await: TPL & Message Pumps
Async/Await: TPL & Message Pumps Particular Software
 
Making workflow implementation easy with CQRS
Making workflow implementation easy with CQRSMaking workflow implementation easy with CQRS
Making workflow implementation easy with CQRSParticular Software
 

Mehr von Particular Software (20)

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

Kürzlich hochgeladen

H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Kürzlich hochgeladen (20)

H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

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 | ted@tedneward.com
  • 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