modern web application development - newcastle university · modern web application architecture...

29
Modern Web Application Development Sam Hogarth

Upload: others

Post on 27-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Modern Web Application Development

Sam Hogarth

Page 2: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Some History

Page 3: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Early Web Applications

2005: The FacebookServer-side PHP with MySQL database

2006: TwitterRuby client, MySQL database

● Server-side scripting only○ e.g. PHP/ASP

● Basic client-side scripts○ JavaScript/JScript/VBScript

○ Major differences in browser implementations

■ Different scripting engines

■ Inconsistent Document Object Model (DOM) for manipulating HTML elements

■ Only used for small tasks

Page 4: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

2002: Java Applet for real-time chatInternet relay chat (IRC) protocol

2005: Flash component for videoYouTube

2007: Pure HTML/JavaScript chatMibbit using AJAX to communicate

Rich in-browser content

Page 5: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Client-side (browser)

Traditional Architecture

HTML CSS (Small amount of) JSPage

PHP ASP(.NET) JSP or Perl, Python, etc…

HTTP Request/Response

Web Server

Other systems (databases, APIs, etc.)

Server-side

Page 6: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Mobile

2015: Facebook MobileMobile-optimised website

2005: BBC News WAPEarly mobile internet

2012: BBC News goes responsiveSingle website for desktop/mobile

2011: Google MapsWebsite with access to device GPS and compass through new web APIs

Page 7: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Trends

● Increasing availability and usage of mobile devices

● Speed and performance improvements to browser’s JavaScript engines

● Release and further development of HTML5 Specification

Meaning: Doing more with JavaScript

Page 8: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Now

● Web applications built with JavaScript, HTML, CSS

● Servers provide services and capabilities

● “Responsive” behaviour

● Feature-rich experiences natively in the browser

Page 9: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Now

Google DocsReal-time updates and collaboration

Coinbase ExchangeLive updating Bitcoin trading platform

Outlook.comSingle page application (SPA) email client

Page 10: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Client-side (browser)

Modern web application architecture

HTML(5) CSS JavaScriptSingle-Page Application (SPA)

Java C# JavaScript (Node.js) or Go, Scala, etc…

HTTPRequest/Response

REST Services

WebSocket Streaming

Other systems (databases, APIs, etc.)

Server-side

Page 11: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Writing Large Web Apps

Page 12: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Main Concerns

● Displaying data on the page● Handling user events● Managing navigation (routing)● Co-ordinating network activity● Security● Code complexity

Page 13: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

FrameworksReusable software that provides a basic structure and functionality

To compare, see TodoMVC

Page 14: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

MVC

Controller

ModelView

Maps user actions to model updatesManages the flow of data

Displays the dataDirects input to the controller

Holds data and application stateResponds to data queriesHandles the ‘business logic’

Page 15: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Unidirectional (Flux/Redux) Architecture

Update RedrawChange

Update application state in response to change

All changes to the system enter via a single point, whether:● UI● Network● Server

UI redraws based on new application state

Page 16: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Reusable components Libraries

● Charting (e.g. D3)● UI components (e.g. Chosen, jQuery UI)● Utility functions (e.g.lodash)

Front-end frameworks

● Layouts (e.g. Bootstrap)

Chosen for auto-completion

D3 for charts

Page 17: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Transpilation

[1,2,3].map(n => n + 1);[1,2,3].map(function(n) { return n + 1;});

ES6 (or something else) ES5

Page 18: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Development Process

Page 19: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

The Team

Product Owner (& Users!)Business AnalystProject managerUser experience (UX) designerTechnical architectDeveloper(s)Tester(s)

Page 20: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or
Page 21: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Source Control Tooling

1. Manages source code storage2. Branches for developing features3. Tags for releases4. Code review tools

Page 22: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Lint tool (e.g. JSLint, JSHint, ESLint, JSCS) checks for unintended syntax, bad practice and conformance to style guide

- e.g. Google JS Style Guide, Airbnb JS Style Guide

Consistent Styles

Page 23: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Ensures each component functions as expected.

Run in a real browser, or “headless” browser (Phantom)

Testing (Unit)

Page 24: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Continuous Integration

1. Watch source code repository for new code changes2. Build: Check styling, Run Tests, Minify and combine

code

Page 25: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Deployment

Very specific to an individual application

DEV QA UAT PROD

Server Server Server 1

Server 2

Load Balancer

Database Database Cloned Database

Server 1

Server 2

Load Balancer

Real Database

Page 26: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

Simulates using the whole application

Testing (End-to-end)

Page 27: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

The Future?

Page 28: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or

More Devleoper Tools, More Browser Capabilities

● Web Components and Custom Elements

● Front-end programming languages: Elm, PureScript

● Service Workers

● WebVR○ Web Speech API○ Web Audio API

¯\_(ツ)_/¯

Page 29: Modern Web Application Development - Newcastle University · Modern web application architecture Single-Page Application (SPA)HTML(5) CSS JavaScript Java C# JavaScript (Node.js) or