logo
  • Products
  • Speaking
  • About
  • Blog

Performance: Part I Develop a Monitoring Scheme

22 June,2008 by Poornima in Software ArchitectureAaron Patzer, Central processing unit, Data Mining, Databases, Dataflow, Quicken, Servers, SQL One Comment

Two years ago Aaron Patzer was frustrated with Quicken and Money, because setting up the service alone took over an hour. His painful experience led him to ditch both these products, and create his own product Mint.com, in hopes of delivering a faster and more useful personal financial service. Unfortunately, not everyone is a programmer, who can automate a tedious task, and not all tasks can be automated through software. Hence bad products continue to perpetuate the marketplace, and users are left waiting: in a line, for a site to download, or for a better service to come along. But sometimes their prayers are answered and a better service does come along. However, its only a matter of time till this service becomes plagued by inefficiencies. So how do we keep a web service performant? In the realm of software I believe there are three basic principles to keep a site up and running with crowd pleasing response times:

1. Develop a monitoring scheme
2. Address scalability before its too late
3. Re-write code

The first computer I ever had was a 486. While I initially believed that the thrill of just having a computer was enough, I was soon annoyed with the machine when I installed my first modem, and the damn thing would take minutes to connect. Fortunately, my dad’s frustration for it grew as well, and we soon replaced it with a Pentium I, II, III, and so on. So being a very green software engineer, I believed that a fast CPU makes life faster. However, I learned a very valuable lesson in my graduate computer architecture class at Stanford, what “Intel giveth, Gates Taketh away.” Throwing hardware to improve the performance of your machine is easy, but its expensive and only a temporary solution. And even if your company can buy a faster server it doesn’t mean that the consumer can afford to do the same!

So how does a web service stay efficient overtime? Monitoring! Specifically, monitoring features in the context of data flow. Any given feature fits into one of two categories: it either has data that will be displayed to the user, or as the user uses the feature, they generate data that must be stored. Here are the two simple flows:

a. server -> data -> user
b. server-> user -> data -> server

In flow a its important to get the data from the server to the user asap. In flow b its important to get the data from the user back to the server to process it, store it, and in some cases return the processed data back to the user. Now that we know the areas where the data will be exchanged those are the places we need to monitor.

For flow a, we need to figure out how large of a data set we are dealing with, and how long it will take to retrieve the data set from the server. Once we have the data set we need to figure out how long it takes until the user sees the complete data set.

For flow b, we might need to return data to the user once its processed which is similar to flow a, but the harder part is taking in the data from the user, and processing it quickly, and then responding to the user with the new data. Unfortunately, the round trip associated with this flow is an unavoidable evil. But, there are ways to optimize it …

Enhanced by Zemanta
Tweet
Pocket
Share on reddit
Share on LinkedIn
Bookmark this on Digg

Related Posts:

  • Timeline: Mint.com - 2005
  • Timeline: Mint.com - 2008
  • The Silent Salesman
  • Presentation for Code Camp ‘08
  • Think About Scale from the Start
  • Differentiating with Product Design

Join 10K+ techies & receive a little inspiration in your inbox weekly, to help you create, innovate & do your most meaningful work!

1 Comments

  1. Pingback: Femgineer » Blog Archive » Feather Weight Hibernate Objects

Comments are closed.

  • © 2017 Femgineer
  • |
  • Privacy and Terms of Use

Powered by Wordpress

  • Press
  • Contact Us
btn hover btn hover
Go to mobile version