Doloto: Code Splitting for Web 2.0 Applications

Slides:



Advertisements
Similar presentations
Testing Web Applications. Applications Architecture Client Server Architecture.
Advertisements

JPManager: A J2EE PERFORMANCE MANAGEMENT SYSTEM Jiang Guo Department of Computer Science California State University Los Angeles March 24, 2010.
Introducing Mapbuilder Michael Adair Natural Resources Canada.
Caching Dynamic Documents Vipul Goyal Department of Computer Science & Engg Institute of Technology, Banaras Hindu University Sugata Sanyal School of Technology.
 Emre Kıcıman Researcher Microsoft Corporation  Ethan Jackson Post Doc Researcher Microsoft Corporation.
Exploring Microsoft's Attempt to Revolutionize the Web Ben Stroud CS525 Spring 10.
Task Scheduling and Distribution System Saeed Mahameed, Hani Ayoub Electrical Engineering Department, Technion – Israel Institute of Technology
Introduction to ASP.NET. 2 © UW Business School, University of Washington 2004 Outline Static vs. Dynamic Web Pages.NET Framework Installing ASP.NET First.
S ECURING WEB 2.0 APPLICATIONS THROUGH REPLICATED EXECUTION Ben Livshits Microsoft Research K. Vikram Cornell University Abhishek Prateek IIT Delhi.
Ben Livshits and Emre Kiciman Microsoft Research Redmond, WA.
WHAT IS AJAX? Zack Sheppard [zts2101] WHIM April 19, 2011.
Copyright © 2002 Pearson Education, Inc. Slide 4-1 Choosing the Hardware for an E-commerce Site  Hardware platform  Refers to all the underlying computing.
A UTOMATICALLY SECURING WEB 2.0 APPLICATIONS THROUGH REPLICATED EXECUTION K. Vikram, Abhishek Prateek, Ben Livshits.
ITM352 Javascript and Dynamic Web Pages: Client Side Processing.
JSZap: Compressing JavaScript Code Martin Burtscher, UT Austin Ben Livshits & Ben Zorn, Microsoft Research Gaurav Sinha, IIT Kanpur.
 What I hate about you things people often do that hurt their Web site’s chances with search engines.
The Sixth Form College Farnborough Microsoft® Silverlight™ Jim Lyle Data Analyst The Sixth Form College Farnborough Presented at the Sixth Form Colleges’
Client/Server Architectures
VAP What is a Virtual Application ? A virtual application is an application that has been optimized to run on virtual infrastructure. The application software.
For more notes and topics visit:
Google MapReduce Simplified Data Processing on Large Clusters Jeff Dean, Sanjay Ghemawat Google, Inc. Presented by Conroy Whitney 4 th year CS – Web Development.
Gulfstream Salvatore Guarnieri University of Washington Ben Livshits Microsoft Research Staged Static Analysis for Streaming JavaScript Applications.
Mobile App Support Jacob Poirier Geri Hengesbach Andrea Menke Erin Rossell.
VIVO Multi-site search Structure and function overview.
Writing various AJAX forms in Drupal 7 1. Overview of Form API 2. Ctools 2.1 Ctools features 3. Ajax 3.1 Ajax Forms in Drupal 4. Putting it all together.
JavaScript is a client-side scripting language. Programs run in the web browser on the client's computer. (PHP, in contrast, is a server-side scripting.
HTML+JavaScript M2M Applications Viewbiquity Public hybrid cloud platform for automating and visualizing everything.
ASP.NET Web Application and Development Digital Media Department Unit Credit Value : 4 Essential Learning time : 120 hours Digital.
Ideas to Improve SharePoint Usage 4. What are these 4 Ideas? 1. 7 Steps to check SharePoint Health 2. Avoid common Deployment Mistakes 3. Analyze SharePoint.
JavaScript – Quiz #9 Lecture Code:
Implementation - Part 2 CPS 181s March 18, Pieces of the Site-building Puzzle Page 180, figure 4.1.
Putting it all together Dynamic Data Base Access Norman White Stern School of Business.
AjaxScope & Doloto: Towards Optimizing Client-side Web 2.0 App Performance Ben Livshits Microsoft Research (joint work with Emre.
Monitoring the acquisition process by web widgets Leonardo Tininini and Antonino Virgillito ISTAT Meeting on the Management of Statistical Information.
COP2800 – Computer Programming Using JAVA University of Florida Department of CISE Spring 2013 Lecture 35 – Overview of Java Web Programming Webpage:
PERFORMANCE ENHANCEMENT IN ASP.NET By Hassan Tariq Session #1.
the acronym for Asynchronous JavaScript and XML.
Ajax for Dynamic Web Development Gregory McChesney.
Restricted © Siemens AG All rights reserved A Developer’s Insights Into Performance Optimizations for Mobile Web Apps CT DC AA EM LP2 | June 2015.
Mr. Justin “JET” Turner CSCI 3000 – Fall 2015 CRN Section A – TR 9:30-10:45 CRN – Section B – TR 5:30-6:45.
A UTOMATICALLY SECURING WEB 2.0 APPLICATIONS THROUGH REPLICATED EXECUTION Ben Livshits Microsoft Research.
Web based Documentation Distribution Tools: MSAccess database (DSN) DreamWeaver Ultradev Microsoft Image Composer Clicking on the document will open an.
Msdevcon.ru#msdevcon. ИЗ ПЕРВЫХ РУК: КАК СДЕЛАТЬ ВАШ КОД БЫСТРЫМ ПРОФАЙЛИНГ КЛИЕНТСКИХ И СЕРВЕРНЫХ ПРИЛОЖЕНИЙ В VISUAL STUDIO 2012 MAXIM GOLDIN Senior.
JavaScript Invented 1995 Steve, Tony & Sharon. A Scripting Language (A scripting language is a lightweight programming language that supports the writing.
A Presentation Presentation On JSP On JSP & Online Shopping Cart Online Shopping Cart.
Technologies For Creating Rich Internet Applications Presenter's name
Google Maps API v3: Built First for Mobile Susannah Raub Google June 24, 2010.
Applications Active Web Documents Active Web Documents.
Node.js Modules Header Mastering Node.js, Part 2 Eric W. Greene
Microsoft Dynamics CRM 2016 Online Deployment MB2-710 Exam Questions
Web Concepts Lesson 2 ITBS2203 E-Commerce for IT.
Introduction to Web Assembly
Google Web Toolkit Tutorial
Self Healing and Dynamic Construction Framework:
Viewbiquity HTML5 Tom Shafron Developer’s Blog CEO, Viewbiquity
Section 17.1 Section 17.2 Add an audio file using HTML
ASP.NET developing web applications based on Microsoft.NET Framework.
Rich Internet Application Frameworks: a Comparison of Flex, JavaFX, and Silverlight Hi, I am Minseung Kim, the topic that I am going to talk about is Rich.
Dynamic Web Pages (Flash, JavaScript)
Database Driven Websites
The Google File System Sanjay Ghemawat, Howard Gobioff and Shun-Tak Leung Google Presented by Jiamin Huang EECS 582 – W16.
MEAN stack L. Grewe.
Doloto: Code Splitting for Web 2.0 Applications
Building responsive apps and sites with HTML5 web workers
Doloto: Code Splitting for AJAX Applications
Web-Applications & AJAX
Client-Server Model: Requesting a Web Page
Running C# in the browser
Yale Digital Conference 2019
Presentation transcript:

Doloto: Code Splitting for Web 2.0 Applications Ben Livshits and Emre Kiciman Microsoft Research Redmond, WA

Web 2.0 is Upon Us

Web 1.0 → Web 2.0 Server-side computation JavaScript + DHTML Client-side rendering Static HTML JavaScript + DHTML Client-side computation

Distributed Applications Run your code here Server Clients

Catch-22 Execution can’t start without the code Move code to client for responsiveness

A Web 2.0 Application Disected 1+ MB code Talks to 14 backend services (traffic, images, directions, ads, …) 70,000+ lines of JavaScript code downloaded 2,855 Functions Update the map

Lots of JavaScript Code

Motivation for Doloto Idea behind Doloto Start with a small piece of code on the client Download required code on demand (pull) Send code when bandwidth available (push) Leads to better application responsiveness Interleave code download & execution Faster startup times Rarely executed code is rarely downloaded

Doloto: the Steps [training] Runtime training to collect access profile [rewriting] Function rewriting or “stubbing” for on-demand code loading [prefetch] Background prefetch of clusters as the application is running

Runtime Picture

Training Phase Instrument every function Record the first-execute timestamp Look for gaps to find clusters

Doloto Training Tool [training] Runtime training to collect access profile (AjaxView Fiddler plugin) [rewriting] Function rewriting or “stubbing” for on-demand code loading [prefetch] Background prefetch of clusters as the application is running

Architecture of Doloto [training] Runtime training to collect access profiles [rewriting] Function rewriting or “stubbing” for on-demand code loading [prefetch] Background prefetch of clusters as the application is running

Code Rewriting Rewrite JavaScript code one file at a time Recombine clusters into individual files

Automated Function Splitting var g = 10; function f1(){ var x=g+1; … return …; } var g = 10; var real_f1; function f1() { if(!real_f1){ var code = load(“f1”); real_f1 = eval(code); f1 = real_f1; } return real_f1.apply(this, arguments); eval($exp(“f1”), “”); // 21 chars

Architecture of Doloto [training] Runtime training to collect access profiles [rewriting] Function rewriting or “stubbing” for on-demand code loading [prefetch] Background prefetch of clusters as the application is running

Cluster Prefetching

Application Benchmarks Download Size Chi game 104 Bunny Hunt 16 Live.com 1,436 Live Maps 1,909 Google Spreadsheets 499

Size Savings with Doloto

Runtime Savings with Doloto

Conclusion Doloto: effective profile-driven optimization Our approach is general: Silverlight Enables larger more complex distributed apps Dynamic code loading for distributed applications of the future

Contact us Ben Livshits (livshits@microsoft.com) Doloto MSR _