SlideShare a Scribd company logo
1 of 21
Building advanced
web UI in the
Enterprise World
Efim Dimenstein | July 2013
Who am I?
Efim Dimenstein
Web Architect @ Liveperson
efim@liveperson.com
Agenda
• Architecture Overview
Agenda
• Building A Happy Web Application
• Stay Out Please
Enterprise world
Enterprise service – what does it mean?
What we want to develop?
• Scalable – a new client can triple your traffic
• Secure – pen tests every day
• Stable – 24x7 - 99.99…% availability
• Flexible
• Single page applications
• Fast
• Modular
• Decoupled / Flexible
LP client-side
• Visitor scale
Liveperson client-side
• Customer scale
• 1.8b visits per month
• ~150b requests per month
• Hostile environment
• 10k customers
• 100k users
• Friendly environment
Architecture concept
Business logic
UI logic
Data protection
Security
Thin Client
render
App
UI logic
Business logic
API
Present+
Data
Security
Past
Decoupled architecture
Decoupled architecture: Server side
Proprietary API
API API API API
• Improved stability, availability, performance &
security, resilience
• Faster release cycles
We went from one centralized service that
does it all to a lot of small decoupled services
Decoupled architecture
Client side
Spaghetti code
Lasagna code
Decoupled architecture
Client side
JS
API
JS
API
Module Module
1 browser
1 window
1 thread
Decoupled architecture –
coupled deployment
Lasagna code
Spaghetti code
Problems / Solutions
• Code separation
Problems / Solutions
• Browser to server communication
• Tooling
• Performance & Resource management
Code separation - Javascript
Javascript is:
[][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[
+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]]
]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!
+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+([][[]]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[+!+[]]]]+([][[]]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([
][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[
+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[
])[+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]((![]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]+(!![]+[])[+[[
+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[
+[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+[+!+[]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[
!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]])()
http://www.jsfuck.com/
weird/strange/sad -
flexible, powerful, everywhere
• Easy to write bad code, harder to write good cod
• Requires a lot of discipline
• Tooling is in its infancy
• It is the only language that developers think they
can write code in without learning
Code separation - Javascript
IT IS HERE TO
STAY
Code separation
Code Separation
• Dependency management
(require.js, commonjs)
• Revealing pattern (hide those private
methods)
• MV* provider – backbone, angular, knockout
…
• Reusable components (sdk, utilities, ui
controls)• Unit tests – just do it (Qunit, …)
• Automatic Tests – across all supported
browsers
Tooling
• Use Build tools
Tooling – correct tool for the job
• Designed for client side not server side
Grunt, Yeoman, …
• Use code analyses tools (jshint, …)
• Use code complexity tools (plato, …)
Tooling
Tooling – Plato
Tooling
• Use Build tools
Tooling – correct tool for the job
• Designed for client side not server side
Grunt, Yeoman, …
• Monitor, monitor, monitor
• Yslow, pagespeed, gomez, …
• RUM
• Use code analyses tools (jshint, …)
• Use code complexity tools (plato, …)
Performance & Resource management
• Memory
• Run your code for at least 24 hours
• Chrome dev tools
• Browser specific (IE8 leaks 4K every JSONP
req)
Performance & Resource Management
• DOM Elements
• Clean up after yourself
• Render only what is visible
Performance & Resource management
API API APIAPIAPI API
• Number of API requests
Performance & Resource Management
• Number of requests
• Optimize images / sprites
• Concatenate files using build tools
Performance & Resource management
API API APIAPIAPI API
PROXY
• Make server developers work
Performance & Resource Management
• Number of API requests
• Number of requests
• Optimize images / sprites
• Concatenate files using build tools
Performance & Resource management
Performance & Resource Management
• Optimize images
• Compress all output
Thank You
LivePerson is Hiring!
peoplejobs@liveperson.com

More Related Content

What's hot

SDLC, Agile methodologies and Career in Product management
SDLC, Agile methodologies and Career in Product managementSDLC, Agile methodologies and Career in Product management
SDLC, Agile methodologies and Career in Product management
Foyzul Karim
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исай
drupalconf
 

What's hot (19)

Chilango Rails Ecommerce Lightning talk
Chilango Rails Ecommerce Lightning talkChilango Rails Ecommerce Lightning talk
Chilango Rails Ecommerce Lightning talk
 
Total cloud immersion
Total cloud immersionTotal cloud immersion
Total cloud immersion
 
BizBook365 : A microservice approach
BizBook365 : A microservice approachBizBook365 : A microservice approach
BizBook365 : A microservice approach
 
Modern Collaboration Development (Part 2)
Modern Collaboration Development (Part 2)Modern Collaboration Development (Part 2)
Modern Collaboration Development (Part 2)
 
Announcing StencilJS
Announcing StencilJSAnnouncing StencilJS
Announcing StencilJS
 
Microservices: A developer's approach
Microservices: A developer's approachMicroservices: A developer's approach
Microservices: A developer's approach
 
Node.js server side render in the Age of APIs - Full Stack Toronto 2017
 Node.js server side render in the Age of APIs - Full Stack Toronto 2017 Node.js server side render in the Age of APIs - Full Stack Toronto 2017
Node.js server side render in the Age of APIs - Full Stack Toronto 2017
 
Power your website with Windows Azure
Power your website with Windows AzurePower your website with Windows Azure
Power your website with Windows Azure
 
A practical approach on - How to design offline-online synchronization system
A practical approach on - How to design offline-online synchronization systemA practical approach on - How to design offline-online synchronization system
A practical approach on - How to design offline-online synchronization system
 
End to-end type safety
End to-end type safetyEnd to-end type safety
End to-end type safety
 
Angular4 kickstart
Angular4 kickstartAngular4 kickstart
Angular4 kickstart
 
Cloud native continuous delivery
Cloud native continuous deliveryCloud native continuous delivery
Cloud native continuous delivery
 
SDLC, Agile methodologies and Career in Product management
SDLC, Agile methodologies and Career in Product managementSDLC, Agile methodologies and Career in Product management
SDLC, Agile methodologies and Career in Product management
 
Serverless Computing with AWS
Serverless Computing with AWSServerless Computing with AWS
Serverless Computing with AWS
 
The Changing Face Of The Web
The Changing Face Of The WebThe Changing Face Of The Web
The Changing Face Of The Web
 
Kickstart android development with xamarin
Kickstart android development with xamarinKickstart android development with xamarin
Kickstart android development with xamarin
 
ERPNext Demo Day - June 2012
ERPNext Demo Day - June 2012ERPNext Demo Day - June 2012
ERPNext Demo Day - June 2012
 
Host, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server AppsHost, deploy & scale Blazor Server Apps
Host, deploy & scale Blazor Server Apps
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исай
 

Viewers also liked

IT103Microsoft Windows XP/OS Chap11
IT103Microsoft Windows XP/OS Chap11IT103Microsoft Windows XP/OS Chap11
IT103Microsoft Windows XP/OS Chap11
blusmurfydot1
 
IT103Microsoft Windows XP/OS Chap13
IT103Microsoft Windows XP/OS Chap13IT103Microsoft Windows XP/OS Chap13
IT103Microsoft Windows XP/OS Chap13
blusmurfydot1
 
Parking hormigon prefabricado
Parking hormigon prefabricadoParking hormigon prefabricado
Parking hormigon prefabricado
CAMPUS11
 
IT109 Microsoft Windows 7 Operating Systems Unit 02
IT109 Microsoft Windows 7 Operating Systems Unit 02IT109 Microsoft Windows 7 Operating Systems Unit 02
IT109 Microsoft Windows 7 Operating Systems Unit 02
blusmurfydot1
 
IT109 Microsoft Windows 7 Operating Systems Unit 06 lesson 08
IT109 Microsoft Windows 7 Operating Systems Unit 06 lesson 08IT109 Microsoft Windows 7 Operating Systems Unit 06 lesson 08
IT109 Microsoft Windows 7 Operating Systems Unit 06 lesson 08
blusmurfydot1
 
Assistive technology
Assistive technologyAssistive technology
Assistive technology
kturne10
 
Most dangerous searchterm_us
Most dangerous searchterm_usMost dangerous searchterm_us
Most dangerous searchterm_us
Angeline KH
 
IT103 Microsoft Windows XP/OS Chap07
IT103 Microsoft Windows XP/OS Chap07IT103 Microsoft Windows XP/OS Chap07
IT103 Microsoft Windows XP/OS Chap07
blusmurfydot1
 
IT103Microsoft Windows XP/OS Chap16
IT103Microsoft Windows XP/OS Chap16IT103Microsoft Windows XP/OS Chap16
IT103Microsoft Windows XP/OS Chap16
blusmurfydot1
 
IT103Microsoft Windows XP/OS Chap14
IT103Microsoft Windows XP/OS Chap14IT103Microsoft Windows XP/OS Chap14
IT103Microsoft Windows XP/OS Chap14
blusmurfydot1
 
IT103Microsoft Windows XP/OS Chap08
IT103Microsoft Windows XP/OS Chap08IT103Microsoft Windows XP/OS Chap08
IT103Microsoft Windows XP/OS Chap08
blusmurfydot1
 

Viewers also liked (20)

IT103Microsoft Windows XP/OS Chap11
IT103Microsoft Windows XP/OS Chap11IT103Microsoft Windows XP/OS Chap11
IT103Microsoft Windows XP/OS Chap11
 
Javascript for Wep Apps
Javascript for Wep AppsJavascript for Wep Apps
Javascript for Wep Apps
 
La computadora
La computadoraLa computadora
La computadora
 
IT103Microsoft Windows XP/OS Chap13
IT103Microsoft Windows XP/OS Chap13IT103Microsoft Windows XP/OS Chap13
IT103Microsoft Windows XP/OS Chap13
 
Parking hormigon prefabricado
Parking hormigon prefabricadoParking hormigon prefabricado
Parking hormigon prefabricado
 
IT109 Microsoft Windows 7 Operating Systems Unit 02
IT109 Microsoft Windows 7 Operating Systems Unit 02IT109 Microsoft Windows 7 Operating Systems Unit 02
IT109 Microsoft Windows 7 Operating Systems Unit 02
 
IT109 Microsoft Windows 7 Operating Systems Unit 06 lesson 08
IT109 Microsoft Windows 7 Operating Systems Unit 06 lesson 08IT109 Microsoft Windows 7 Operating Systems Unit 06 lesson 08
IT109 Microsoft Windows 7 Operating Systems Unit 06 lesson 08
 
Test bram
Test bramTest bram
Test bram
 
Assistive technology
Assistive technologyAssistive technology
Assistive technology
 
Stay Out Please
Stay Out PleaseStay Out Please
Stay Out Please
 
La energia y la relacion con el desarrollo tecnologico
La energia y la relacion con el desarrollo tecnologicoLa energia y la relacion con el desarrollo tecnologico
La energia y la relacion con el desarrollo tecnologico
 
Most dangerous searchterm_us
Most dangerous searchterm_usMost dangerous searchterm_us
Most dangerous searchterm_us
 
Zonas erroneas y la salud mental
Zonas erroneas y la salud mentalZonas erroneas y la salud mental
Zonas erroneas y la salud mental
 
IT103 Microsoft Windows XP/OS Chap07
IT103 Microsoft Windows XP/OS Chap07IT103 Microsoft Windows XP/OS Chap07
IT103 Microsoft Windows XP/OS Chap07
 
IT103Microsoft Windows XP/OS Chap16
IT103Microsoft Windows XP/OS Chap16IT103Microsoft Windows XP/OS Chap16
IT103Microsoft Windows XP/OS Chap16
 
DTA 2011 REV B
DTA 2011 REV BDTA 2011 REV B
DTA 2011 REV B
 
IT103Microsoft Windows XP/OS Chap14
IT103Microsoft Windows XP/OS Chap14IT103Microsoft Windows XP/OS Chap14
IT103Microsoft Windows XP/OS Chap14
 
A Track Record of Ingenuity...
A Track Record of Ingenuity...A Track Record of Ingenuity...
A Track Record of Ingenuity...
 
IT103Microsoft Windows XP/OS Chap08
IT103Microsoft Windows XP/OS Chap08IT103Microsoft Windows XP/OS Chap08
IT103Microsoft Windows XP/OS Chap08
 
Aparato circulatorio
Aparato circulatorioAparato circulatorio
Aparato circulatorio
 

Similar to Building Advanced Web UI in The Enterprise World

Cincom smalltalk roadmap 2015 draft2
Cincom smalltalk roadmap 2015 draft2Cincom smalltalk roadmap 2015 draft2
Cincom smalltalk roadmap 2015 draft2
ArdenCST
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Culture
ifnu bima
 
Cincom smalltalk roadmap 2015 draft3
Cincom smalltalk roadmap 2015 draft3Cincom smalltalk roadmap 2015 draft3
Cincom smalltalk roadmap 2015 draft3
ArdenCST
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
Ganesh Kondal
 

Similar to Building Advanced Web UI in The Enterprise World (20)

ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
ATAGTR2017 Unified APM: The new age performance monitoring for production sys...
 
Angular Meetup 1 - Angular Basics and Workshop
Angular Meetup 1 - Angular Basics and WorkshopAngular Meetup 1 - Angular Basics and Workshop
Angular Meetup 1 - Angular Basics and Workshop
 
Zero to ten million daily users in four weeks: sustainable speed is king
Zero to ten million daily users in four weeks: sustainable speed is kingZero to ten million daily users in four weeks: sustainable speed is king
Zero to ten million daily users in four weeks: sustainable speed is king
 
Debugging the Web with Fiddler
Debugging the Web with FiddlerDebugging the Web with Fiddler
Debugging the Web with Fiddler
 
Cincom smalltalk roadmap 2015 draft2
Cincom smalltalk roadmap 2015 draft2Cincom smalltalk roadmap 2015 draft2
Cincom smalltalk roadmap 2015 draft2
 
Microsoft power point automation-opensourcetestingtools_matrix-1
Microsoft power point   automation-opensourcetestingtools_matrix-1Microsoft power point   automation-opensourcetestingtools_matrix-1
Microsoft power point automation-opensourcetestingtools_matrix-1
 
Microsoft power point automation-opensourcetestingtools_matrix-1
Microsoft power point   automation-opensourcetestingtools_matrix-1Microsoft power point   automation-opensourcetestingtools_matrix-1
Microsoft power point automation-opensourcetestingtools_matrix-1
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering Culture
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Culture
 
Cincom smalltalk roadmap 2015 draft3
Cincom smalltalk roadmap 2015 draft3Cincom smalltalk roadmap 2015 draft3
Cincom smalltalk roadmap 2015 draft3
 
Cincom Smalltalk Roadmap 2015
Cincom Smalltalk Roadmap 2015Cincom Smalltalk Roadmap 2015
Cincom Smalltalk Roadmap 2015
 
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink powered stream processing platform at Pinterest
Flink powered stream processing platform at Pinterest
 
Selenium for everyone
Selenium for everyoneSelenium for everyone
Selenium for everyone
 
Google App engine
Google App engineGoogle App engine
Google App engine
 
Building SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.jsBuilding SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.js
 
Eating our Own Dogfood - How Automic Automates
Eating our Own Dogfood - How Automic AutomatesEating our Own Dogfood - How Automic Automates
Eating our Own Dogfood - How Automic Automates
 
Application Performance Monitoring (APM)
Application Performance Monitoring (APM)Application Performance Monitoring (APM)
Application Performance Monitoring (APM)
 
ITAM Review IBM & SAP Seminar Aspera Presentation
ITAM Review IBM & SAP Seminar Aspera PresentationITAM Review IBM & SAP Seminar Aspera Presentation
ITAM Review IBM & SAP Seminar Aspera Presentation
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdf
Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdfWessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdf
Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdf
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Building Advanced Web UI in The Enterprise World

  • 1. Building advanced web UI in the Enterprise World Efim Dimenstein | July 2013
  • 2. Who am I? Efim Dimenstein Web Architect @ Liveperson efim@liveperson.com
  • 3. Agenda • Architecture Overview Agenda • Building A Happy Web Application • Stay Out Please
  • 4. Enterprise world Enterprise service – what does it mean? What we want to develop? • Scalable – a new client can triple your traffic • Secure – pen tests every day • Stable – 24x7 - 99.99…% availability • Flexible • Single page applications • Fast • Modular • Decoupled / Flexible
  • 5. LP client-side • Visitor scale Liveperson client-side • Customer scale • 1.8b visits per month • ~150b requests per month • Hostile environment • 10k customers • 100k users • Friendly environment
  • 6. Architecture concept Business logic UI logic Data protection Security Thin Client render App UI logic Business logic API Present+ Data Security Past
  • 7. Decoupled architecture Decoupled architecture: Server side Proprietary API API API API API • Improved stability, availability, performance & security, resilience • Faster release cycles We went from one centralized service that does it all to a lot of small decoupled services
  • 9. Decoupled architecture Client side JS API JS API Module Module 1 browser 1 window 1 thread Decoupled architecture – coupled deployment Lasagna code Spaghetti code
  • 10. Problems / Solutions • Code separation Problems / Solutions • Browser to server communication • Tooling • Performance & Resource management
  • 11. Code separation - Javascript Javascript is: [][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[ +[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]] ]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[! +[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+([][[]]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[+!+[]]]]+([][[]]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([ ][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[ +[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[ ])[+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]((![]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]+(!![]+[])[+[[ +[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[ +[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+[+!+[]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[ !+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]])() http://www.jsfuck.com/ weird/strange/sad - flexible, powerful, everywhere • Easy to write bad code, harder to write good cod • Requires a lot of discipline • Tooling is in its infancy • It is the only language that developers think they can write code in without learning
  • 12. Code separation - Javascript IT IS HERE TO STAY
  • 13. Code separation Code Separation • Dependency management (require.js, commonjs) • Revealing pattern (hide those private methods) • MV* provider – backbone, angular, knockout … • Reusable components (sdk, utilities, ui controls)• Unit tests – just do it (Qunit, …) • Automatic Tests – across all supported browsers
  • 14. Tooling • Use Build tools Tooling – correct tool for the job • Designed for client side not server side Grunt, Yeoman, … • Use code analyses tools (jshint, …) • Use code complexity tools (plato, …)
  • 16. Tooling • Use Build tools Tooling – correct tool for the job • Designed for client side not server side Grunt, Yeoman, … • Monitor, monitor, monitor • Yslow, pagespeed, gomez, … • RUM • Use code analyses tools (jshint, …) • Use code complexity tools (plato, …)
  • 17. Performance & Resource management • Memory • Run your code for at least 24 hours • Chrome dev tools • Browser specific (IE8 leaks 4K every JSONP req) Performance & Resource Management • DOM Elements • Clean up after yourself • Render only what is visible
  • 18. Performance & Resource management API API APIAPIAPI API • Number of API requests Performance & Resource Management • Number of requests • Optimize images / sprites • Concatenate files using build tools
  • 19. Performance & Resource management API API APIAPIAPI API PROXY • Make server developers work Performance & Resource Management • Number of API requests • Number of requests • Optimize images / sprites • Concatenate files using build tools
  • 20. Performance & Resource management Performance & Resource Management • Optimize images • Compress all output
  • 21. Thank You LivePerson is Hiring! peoplejobs@liveperson.com

Editor's Notes

  1. Ido
  2. Add pictures of spagetti and lasagna
  3. Add pictures of spagetti and lasagna
  4. Client to server communications
  5. If you can do it – does not mean you shouldA lot of HTML5 standard is to do with JSEverywhere * Tried to run server side code in the browser – Failed * Node.js – run client side code on the server
  6. If you can do it – does not mean you shouldA lot of HTML5 standard is to do with JSEverywhere * Tried to run server side code in the browser – Failed * Node.js – run client side code on the server
  7. Unless it is too big – then lazy load what is not immediately needed– at run time or during build
  8. Unless it is too big – then lazy load what is not immediately needed– at run time or during build
  9. Unless it is too big – then lazy load what is not immediately needed– at run time or during build
  10. Cross origin resource sharing