Copyright © 2007-2008 Meebo, Inc. All rights reserved presents... Scaling Synchronous Web Apps Web 2.0 Expo, New York 9/18/2008.

Slides:



Advertisements
Similar presentations
Attention (your target market) !. Are you (their problem) ?
Advertisements

Fast Data at Massive Scale Lessons Learned at Facebook Bobby Johnson.
Case Study: Photo.net March 20, What is photo.net? An online learning community for amateur and professional photographers 90,000 registered users.
Categories of I/O Devices
ECEU300 Ethics in the Workplace Why talk about Ethics? Everyone is ethical, everyone knows how to behave at work. Everyone gets it about not stealing stuff.
HiveMind Distributed File Storage Using JavaScript Botnets Copyright 2013 Sean T. Malone.
Enterprise Web Architecture and Performance Shennon Shen & Scott Carey --- Plumtree Software Inc.
15 Powerful Quotes Brighten Your Day.
Why Our Customers Decide to Own Statseeker. The Problem –All other network management tools use traditional monitoring techniques (such as general purpose.
Adding scalability to legacy PHP web applications Overview Mario A. Valdez-Ramirez.
Is it hard to build a service for 100M user? Short answer – yes.
Building Wikipedia Scalable LAMP on a shoestring budget Brion VibberGatorJUG
1 Cleaning up the Internet Using AJAX, SOAP and Comet CS526 Mike Gerschefske Justin Gray James Yoo 02 May 2006.
Performance Evaluation
Analysis and Performance Information Systems 337 Prof. Harry Plantinga.
5/3/2006 Mike/Justin/JYoo AJAX/SOAP/Comet 1 Cleaning up the Internet Using AJAX, SOAP and Comet CS526 Mike Gerschefske Justin Gray James Yoo 02 May 2006.
Code Generation CS 480. Can be complex To do a good job of teaching about code generation I could easily spend ten weeks But, don’t have ten weeks, so.
SM3121 Software Technology Mark Green School of Creative Media.
Setting Up a Sandbox Presented by: Kevin Brunson Chief Technology Officer.
Platform as a Service (PaaS)
How WebMD Maintains Operational Flexibility with NoSQL Rajeev Borborah, Sr. Director, Engineering Matt Wilson – Director, Production Engineering – Consumer.
Web server and web browser It’s a take and give policy in between client and server through HTTP(Hyper Text Transport Protocol) Server takes a request.
A quadratic equation is a second degree polynomial, usually written in general form: The a, b, and c terms are called the coefficients of the equation,
J2EE Web Fundamentals Lesson 1 Introduction and Overview
DNN Performance & Scalability Planning, Evaluating & Improving : Part 2.
Developing Better PhoneGap Apps Session 608 / DevLearn 2013 Daniel Pfeiffer Lead Developer / Float Mobile Learning.
Introduction and Overview Questions answered in this lecture: What is an operating system? How have operating systems evolved? Why study operating systems?
Grad students vs. Mentors developed by R. Craft, based on student & faculty input Psychology Department Washington State University + material adapted.
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.
1 Project Information and Acceptance Testing Integrating Your Code Final Code Submission Acceptance Testing Other Advice and Reminders.
1 Computer and Network Bottlenecks Author: Rodger Burgess 27th October 2008 © Copyright reserved.
9 Simple Steps to Building A Strong and Inspiring “Why or I” Story
Orbited Scaling Bi-directional web applications A presentation by Michael Carter
10/20/2015 ©2006 Scott Miller, University of Victoria 1 User Authentication Content Generation The Use of Cookies Content Pooling Rev 1.5.
Where Cloud Storage Makes Sense For The Enterprise (And Where it Doesn’t) Andrew Reichman Senior Analyst Forrester Research January 22, 2009.
A Presentation to Oracle OpenWorld Blistering Web Applications with Oracle TimesTen In Memory Option.
Personal Computer - Stand- Alone Database  Database (or files) reside on a PC - on the hard disk.  Applications run on the same PC and directly access.
MYJ - Strengthening Family Relationships. Activities: View stories from p ‘You and Your Family’ article Discuss key points List the guidelines.
Google Application Engine Introduction Jim Eng with thanks to Charles Severance
What is it? The feeling that someone your own age is pushing you toward making a certain choice, good or bad. Example: A friend begs to borrow something.
10 Steps to Successful Performances.  You can pick up a lot of things when you look at the music away from the piano. When you do that, pay attention.
Lecture 4 Page 1 CS 111 Online Modularity and Virtualization CS 111 On-Line MS Program Operating Systems Peter Reiher.
Node.Js 1. 2 Contents About Node.Js Web requirement latest trends Introduction Simple web server creation in Node.Js Dynamic Web pages Dynamic web page.
Lecture 7 Page 1 CS 111 Online Process Communications and Concurrency CS 111 On-Line MS Program Operating Systems Peter Reiher.
1 Why Threads are a Bad Idea (for most purposes) based on a presentation by John Ousterhout Sun Microsystems Laboratories Threads!
Aggregation Methods and Allocation Strategies An overview of two Internet Drafts Brian Dickson
WEB SECURITY WEEK 1 Computer Security Group University of Texas at Dallas.
Best Web Technologies for
Introduction to Node.js® Jitendra Kumar Patel Saturday, January 31, 2015.
Lecture 1 Page 1 CS 111 Summer 2013 Important OS Properties For real operating systems built and used by real people Differs depending on who you are talking.
Dear new Board member, Thank you for saying “yes” to serving on this Board! Not everyone has the heart for Board work, and I applaud your willingness.
Platform as a Service (PaaS)
Tonga Institute of Higher Education IT 141: Information Systems
Platform as a Service (PaaS)
Node.Js Server Side Javascript
HTML & teh internets.
Node.Js Server Side Javascript
Dynamic Web Pages JavaScript Jill Thomas Oct 14, 2003.
AJAX Robin Burke ECT 360.
Tonga Institute of Higher Education IT 141: Information Systems
Multistep Processing of a User Program
Chapter 8: Memory management
Outline Module 1 and 2 dealt with processes, scheduling and synchronization Next two modules will deal with memory and storage Processes require data to.
CSE 303 Concepts and Tools for Software Development
Tonga Institute of Higher Education IT 141: Information Systems
CS703 - Advanced Operating Systems
EE 155 / Comp 122 Parallel Computing
Client/Server Computing and Web Technologies
Yale Digital Conference 2019
Blazor A new framework for browser-based .NET apps Ryan Nowak
Presentation transcript:

Copyright © Meebo, Inc. All rights reserved presents... Scaling Synchronous Web Apps Web 2.0 Expo, New York 9/18/2008

Copyright © Meebo, Inc. All rights reserved lessons learned things to keep in mind... what works for someone else doesn’t always work for you you know the most about your stuff don’t get married to a technology but don’t be a total flirt remember this is supposed to be fun :)

Copyright © Meebo, Inc. All rights reserved why’s it hard? synchronous versus asynchronous... traditionally, “asynchronous” implies “more complex” on the web, it’s the opposite, browsers are built for asynchronous building synchronous web apps is like shoving a square peg in a round hole...

Copyright © Meebo, Inc. All rights reserved it won’t fit the “hole” - multi-platform (lots o’ browsers) - spotty network connections - only 2 simultaneous open HTTP requests allowed (for now anyway) - page views - static content - no downloads the “peg” - instantaneous data transfer - long polling - making the browser do work - seamless user experience

Copyright © Meebo, Inc. All rights reserved what is synchronous? what part of your app is synchronous? what can you get away with NOT being synchronous?

Copyright © Meebo, Inc. All rights reserved i heart server find the right holes for your pegs don’t underestimate the server side architecture! the type of app determines the type of synchronous scaling… where are your bottlenecks? memory CPU bandwidth storage disk i/o …

Copyright © Meebo, Inc. All rights reserved peg helpers these shouldn’t be a surprise long polling (COMET) web servers compiled vs. interpreted databases memcache load balancers

Copyright © Meebo, Inc. All rights reserved simple is usually better (unless you can dish out a lot of $$$) first ask: what am i using it for? am i using memcache because that’s what everyone else does? is my data cacheable? what am i gaining (or losing)? can i use DNS round robin instead of load balancers? FastCGI vs web modules vs PHP do i need to save state? is it persistent? do i really need this?

Copyright © Meebo, Inc. All rights reserved tug of war front-end versus back-end always a delicate balance between what you can push to the browser and what you can let the server handle where does the workload make sense? browser can be SLOW (just because you CAN do it in JavaScript, doesn’t mean you should) efficiency with data transfer

Copyright © Meebo, Inc. All rights reserved good enough versus perfect perfection is enough simplicity in the system to allow for adaptation “perfection” can mean a lot of different things... users don’t care how clever you are, they just want their product to work long polling isn’t perfect, browsers have quirks up the wazoo, things will never be “done” sometimes “perfect” is NOT good enough (look at Ruby =p) release enough and things will asymptotically approach perfection ;)

Copyright © Meebo, Inc. All rights reserved think ahead but not too much don’t over-design for the unknown over-designed code can be worse than hacky code difficult to roll back an entire design build horizontally can you throw more servers at the problem initially? adding servers is expensive but has a shorter lead time, architecture takes longer but is “free” you won’t know where your bottlenecks are until you let it loose

Copyright © Meebo, Inc. All rights reserved nothing simulates real life you’re not the end user contingency plans are key have a few tricks up your sleeve you’ll always miss something, but that’s okay don’t build flood gates, build dams: - be able to enable/disable components or change operating parameters during runtime - this includes front-end and back-end your users will behave in ways you never imagined

Copyright © Meebo, Inc. All rights reserved use your own product don’t be afraid to find bugs i said you weren’t your end user, but you still have to be a user overcome the fear of breaking your own product keep your finger on the pulse of the community, trust your users i usually use firefox, but because 70% of meebo’s users use IE, guess what i use to run meebo?

Copyright © Meebo, Inc. All rights reserved being big brother be aware of what is going on monitor key areas - zabbix, nagios, hyperic, ganglia, etc. - you WILL have to build something custom don’t go overboard on monitoring, you’re going to learn to ignore your alerts ignoring what your system (not just the hardware) tells you is extremely dangerous this is another example of “good enough versus perfect“ monitoring is basically asking: “is your app healthy?”

Copyright © Meebo, Inc. All rights reserved final thoughts there’s no magic solution to scalability it’s very important that you understand the nooks and crannies of your architecture be able to correlate effects to any system changes you make always keep the goal in mind, don’t lose sight of it (what are you scaling?) everyone scales differently!

Copyright © Meebo, Inc. All rights reserved thank you (psst, i can’t help it but... we *are* hiring...)