client vs. server rendering

57
Client vs Server Rendering The probably most important architectural decision for your projects

Upload: david-amend

Post on 11-May-2015

2.029 views

Category:

Internet


1 download

DESCRIPTION

Client or Server Rendering Showing the newest trend of hybrid rendering polymorphic like react.js phantom.js, single page application, David Amend

TRANSCRIPT

Page 1: Client Vs. Server Rendering

Client vs ServerRendering

The probably most important architectural decision for your projects

Page 2: Client Vs. Server Rendering

Which Way To Go ?

WYSIWYG

All-In-One Product Suite

Custom Implementation

Client DrivenBest of Breeds

Decisions● Level of abstraction● Language● Architecture● Lifecycle● UI-framework● Project process

→ Rendering ?

Prefer Client- or Server-Driven ?ServerClient

Page 3: Client Vs. Server Rendering

Lessons learned● Facebook● Twitter● Yahoo● Angular.js 2.0● Google● Ebay● LinkedIn● Airbnb

Closure Templates

Do You Know ?

May 2013

May 2012

Feb 2013

Aug 2012

~ 2015

March 2012

April 2012

Nov 2009

Page 4: Client Vs. Server Rendering

David Amend● Java Web-Developer, Frontend Architecture● Backbone, Ember, Angular, Grunt.js

Interests: JavaScript, TypeScript, Triathlon-Sports

About

[email protected]

Page 5: Client Vs. Server Rendering

ContentBasics1. From Code to UI2. Influence of Architecture

Impacts & Considerations3. Separate Render-Client5. Performance

Hybrid Solution6. Template Sharing7. View Interpreter

Page 6: Client Vs. Server Rendering

UI. The Final Result

→ ?

BrowserDEV

Page 7: Client Vs. Server Rendering

Abstraction Of Code

Abstraction● Utilities● Preprocessors● Widget-Components● Frameworks

Browser● HTML● CSS● JavaScript/DOM

○ Events○ Structure○ Business Logic

→Generates

Interpreted

ServerClient

Page 8: Client Vs. Server Rendering

Widget Syntax

class PageView include(“transactionPage.html”);

var l= new Layout();forEach(t : transactions){

l.add(new Widget(t.title));}

#include “transactionPage.html”

{{#each transaction}}<h3 ng-car>{{title}}</h3>

{{#each}}

Object Oriented HTML based

Which Is Preferred ?

Page 9: Client Vs. Server Rendering

→→→

Impact: UI On Architecture

UIChooses

MV

C

Architecture

ClientServerMixture

→→Architect

→→ UIChooses

MV

C

Architecture?→Framework

Rendering

Page 10: Client Vs. Server Rendering

Choice Of Rendering

Do you have the choice of Rendering ?

Client, Server… or Both

Page 11: Client Vs. Server Rendering

Controller

1. Server-Only UI-Generation

ClientServer

→ → No Widget-Components

Static Documents● HTML● CSS

View

Model

Page 12: Client Vs. Server Rendering

Server Client

Server-Centric Hybrid Lifecycles

Hybrid

Various Combinations

*

***

Request

Response

AJAX/PJAX

1.

2.1.

M

V

CM

V

C

GeneratesM

VC

Page 13: Client Vs. Server Rendering

Business Logic

Persistence

Model

ViewController

Single Page Application

MVP, MVVM, M*, …*

Model*

Browser

Service LayerBuild

Database

Server

Stateless

Page 14: Client Vs. Server Rendering

Hard Times For Decisions

Client Server

Low High

Lines Of Code

Level Of Abstraction

Page 15: Client Vs. Server Rendering

SPA: Multi Client Channel

M

V

C

Model

Desktop

M

V

C

iPhone

M

V

C

Android

M

V

C

Windows

Server

→ Reuse

Render Engine Render Engine

Render Engine Render Engine

Page 16: Client Vs. Server Rendering

Separation Of UI: BenefitsCreation Of Independent● Development team● Continous Integration● Deployment● Agile & Developer as DevOp● UI-First, backend API later→ Flexible Client-centric techstack

Page 17: Client Vs. Server Rendering

User Experience, Customziations

→ Cool, Sexy, Responsive!

Can you make it faster on my device, please ?

Server→ The exceptionClient→ The default

Page 18: Client Vs. Server Rendering

Which is faster ???Client or Server Rendering

Server : Client

0 : 0

Page 19: Client Vs. Server Rendering

Client vs. Server Bottlenecks

● Time To First Content

● UI-Responsiveness

Page 20: Client Vs. Server Rendering

1. HTTP traffic2. DOM is slow

Bottlenecks

Page 21: Client Vs. Server Rendering

→Performance Impacts1. Best hardware ?

2. Modern browser ?

DependsFaster

→ DependsFaster

Page 22: Client Vs. Server Rendering

Guaranteed Perf.

1. Best hardware?

2. Modern browser ?ServerFaster

Server→Faster

Page 23: Client Vs. Server Rendering

Intermediate Result

Server : Client

1 : 0

Page 24: Client Vs. Server Rendering

Time To First Content2. Bootstrap Count→ WebServer: Once→ Browser: At Every Visit

3. DOM Parse Time→ Server: HTML as String !!!→ Client-Stack: Parse/Marshalling of JSON

Page 25: Client Vs. Server Rendering

Time To First Content

Browser/Client → Finetuning

http://www.webpagetest.org

Page 26: Client Vs. Server Rendering

“We moved Client-Rendering back to Server Rendering due to performance”

... It drop our initial page load times to 1/5th.

https://blog.twitter.com/2012/improving-performance-on-twittercom

Time To First Tweet

Experienced Perf

Page 27: Client Vs. Server Rendering

More Performant On

3. Time To First Content?

ServerFaster→

Page 28: Client Vs. Server Rendering

Half Time

Server : Client

3 : 0

Page 29: Client Vs. Server Rendering

More Performant On:● Responsive user interaction ?● Rich experience ?● Less server-roundtrips ?

ClientFaster→

Page 30: Client Vs. Server Rendering

Longer SPA Interaction

Make users & managers happy !

Page 31: Client Vs. Server Rendering

Half Time

Server : Client

3 : 8

Page 32: Client Vs. Server Rendering

Future Trends

Become Faster● Devices● Browsers● DOM● Frameworks● Protocols

Page 33: Client Vs. Server Rendering

So what ?

Page 34: Client Vs. Server Rendering

Know Your SkillsetUser Interface

JavaScript Responsive Design

Database-Access

Multi-Core-Programming

Enterprise-Patterns

API-Design

FrontendDeveloper

User-Experience

SecurityBackend

Developer

Mobile Development

Investment of Time to Learn

Page 35: Client Vs. Server Rendering

ClientR + ServerR =

HybridR

R = Rendering

Page 36: Client Vs. Server Rendering

HybridRThe Hard Way

but

The Holy Grailhttp://de.slideshare.net/Siarhei/presentation-15273281

R = Rendering

Page 37: Client Vs. Server Rendering

→ Reduce time-effort & risk→ Functionality over performance→ “Premature optimization is the root of all evil” Donald Knuth

→ How about migration ?

Defer Decision for Hybrid

Page 38: Client Vs. Server Rendering

Effort To Hybrid Responsive Action

david.amendEnter Email Invalid Email

Moving To Client1. Controller2. Model3. View

Hybrid

Example

Register

ServerFast Init Responsiveness

Page 39: Client Vs. Server Rendering

Effort To Init Hybrid Rendering

Welcome David!You have 12 unread Emails

Example Moving To Server1. Controller2. Model → Read Only3. View → Read Only

HybridClientResponsiveness Fast Init

Page 40: Client Vs. Server Rendering

Lessons learned● Facebook● Twitter● Yahoo● Angular.js 2.0● Google● Ebay● LinkedIn● Airbnb

Closure Templates

May 2013

May 2012

Feb 2013

Aug 2012

~ 2015

March 2012

April 2012

Nov 2009

Page 41: Client Vs. Server Rendering

Hybrid-Rendering Solution 1

→UIM

VC

ArchitectureForces

→Framework

Sharing templates→ Same Codebase→ Component Abstraction

Page 42: Client Vs. Server Rendering

Client SPA Rendering

BrowserRequest page

JS, HTML, CSS Webserver

Bootstrap Application

Render HTMLAJAX-Request

JSON

3.

1.

2.

4Register Events

Page 43: Client Vs. Server Rendering

Browser

Hybrid-Rendering Solution 1

HTML-StringRender HTML

1.

3.

WebserverShared

Template Interpreter

Templates

2.

2. 1.

Request Page

Page 44: Client Vs. Server Rendering

Browser

Hybrid-Rendering Solution 1

HTML-String

Bootstrap Application

Register Events

→ Client Takes Over

Render HTML

1.

3.

4.

5. → Deferred User Interaction

WebserverShared

Template Interpreter

Templates

2.

2. 1.

Request Page

Page 45: Client Vs. Server Rendering

React.js is MVC

HTML String

Fast accessVirtualDOM

Generates

CachingSeparates

View & Model

Page 46: Client Vs. Server Rendering

React.js & AngularPlain Angular: Initial-Loading: 990ms

http://www.williambrownstreet.net/blog/2014/04/faster-angularjs-rendering-angularjs-and-reactjs/

Page 47: Client Vs. Server Rendering

React.js & AngularPlain Angular: Initial-Loading: 990ms

Angular + React.js: Initial-Loading: 243ms

http://www.williambrownstreet.net/blog/2014/04/faster-angularjs-rendering-angularjs-and-reactjs/

Page 48: Client Vs. Server Rendering

Hybrid-Rendering Solution 2

Template Engine

→ UIChooses

MV

C

Architecture

→Framework

Page 49: Client Vs. Server Rendering

Hybrid-Rendering Solution 2

Browser RenderingEngine

Request Page

HTML-String

Headless Browser

Webserver

HTML,CSS, JS Bootstrap Application

Register Events

Client Takes Over

Render HTML

1.

2. 3.

4.5.

6.

7.

8.

CSS, JavaScript

→ Deferred User Interaction

Page 50: Client Vs. Server Rendering

Hybrid: Get For Free

→ SEO→ Shared Codebase

Page 51: Client Vs. Server Rendering

1. How important is Performance?

2. Where is worst Bottleneck ?

Prioritize Wisely

Page 52: Client Vs. Server Rendering

Interactive

App

Know your Type of Project !

Static Content

?

Page 53: Client Vs. Server Rendering

Be flexible on upcoming rendering strategies !

Custom Implementation

Client DrivenBest of Breeds Future Proof

Page 54: Client Vs. Server Rendering

Decide Wisely!

Visitors & Developers Budget+

Page 55: Client Vs. Server Rendering

Questions

What will be your next choice

Page 56: Client Vs. Server Rendering

Resources 1/2http://www.techinspired.net/img/Games-icon.png

http://3.bp.blogspot.com/-wOJqQk3PCq0/TygQIqnkqtI/AAAAAAAADrM/3yhORCNd9m0/s1600/3d_pie_chart.jpg

www.axialis.com%2Fobjects%2Flg_preview_icon_04.jpg&imgrefurl=http%3A%2F%2Fwww.axialis.com%2Fobjects%2Fip_icon_04.shtml&h=600&w=791&tbnid=5o1iTfc9Sv04AM%3A&zoom=1&docid=mSUvvKVPf2ptvM&ei=wbiBU9vpDMLD7AaMlYGwBg&tbm=isch&iact=rc&uact=3&dur=596&page=1&start=0&ndsp=54&ved=0CFgQrQMwAA

www.spreadbetmagazine.com%2Fstorage%2FNewspaper.jpg%253F__SQUARESPACE_CACHEVERSION%253D1394611464746&imgrefurl=http%3A%2F%2Fwww.spreadbetmagazine.com%2Fnews%2F2014%2F3%2F12%2Fmorning-newspaper-roundup-120314.html&h=878&w=1000&tbnid=LS-DY_QEvRfmXM%3A&zoom=1&docid=dGp-YbV3czjNRM&ei=iLqBU7OKFoWf7Aamu4D4Bw&tbm=isch&iact=rc&uact=3&dur=2816&page=1&start=0&ndsp=48&ved=0CGwQrQMwBQ

http://biotuesdays.com/wp-content/uploads/2011/10/Puzzle.jpg

http://openclipart.org/detail/26143/desert-isle-by-johnny_automatic

http://openclipart.org/detail/20145/point-to-multipoint-(wimax)-scenario-by-danza

http://rack.0.mshcdn.com/media/ZgkyMDEyLzEyLzA0LzY2LzRtb2JpbGVidXNpLmJXdy5qcGcKcAl0aHVtYgk5NTB4NTM0IwplCWpwZw/17576b70/490/4-mobile-business-applications-to-watch-bb6ec2f671.jpg

http://openclipart.org/detail/92779/rabbit-by-mazeo

http://openclipart.org/detail/171191/men-at-work-by-developingo-171191

http://openclipart.org/detail/188917/bag-of-cash-by-casino-188917

http://www.drfranklipman.com/images/2013/11/Disconnect1.jpg

Page 57: Client Vs. Server Rendering

Resources 2/2http://reaching.to/wp-content/uploads/2014/02/shake.jpg

http://openclipart.org/detail/94663/brand-identity-by-webinav

http://www.science-skeptical.de/wp-content/uploads/2011/10/reality-check-1.jpg

http://openclipart.org/detail/2814/plate-computer-privacy-by-valessiobrito-2814

http://openclipart.org/detail/94717/clock-by-javierkiopo

http://exploringscrum.com/wp-content/uploads/2013/09/Feature-Complete-300x225.jpg

https://openclipart.org/detail/46141/group-of-people-by-palomaironique

https://openclipart.org/detail/1030/bag-of-money-by-johnny_automatic

http://home.messiah.edu/~tp1180/HolyGrail.jpg

https://openclipart.org/detail/22124/people-biz---male-smile-by-yyycatch-22124

http://www.dabbahlive.com/wp-content/uploads/2012/03/back-to-the-future-delorean1.jpg