Application Performance Series- Introduction

Developing software applications is not just writing code, but it is much than that. It’s both science and Art when combined together can produce great quality applications. It is an art of writing efficiently working, fast and secure code. This is especially true when we are working on web applications. Developing a fast, scalable and secure application looks very simple at top. Writing an application which is works as per user expectations with speed and security is complex (but not impossible) to design. Many a time we need to find a middle path between security and performance based on a number of factors.

The design and construction of an application involve many-many decisions, each representing a trade-off. Many a time each alternative has significant positive and negative consequences. In such trading off, we hope to obtain a near-optimal good while minimizing the bad. It’s like “I want to go to heaven and meet god, but I don’t want to die”. Any application development there are three major factors that a project triangle.

 
Achieving all three in ideal circumstances is not possible. There are always tradeoffs and we need to make decision based on the priorities and situations. While developing applications we see time versus memory trade-offs while developing logic, time to market versus code quality. Such trade-offs always have a large impact on the effectiveness and success of the application.
 
But if we have to design and develop performance-oriented web applications then it is not only code that can improve your performance, but we need to pay attention to a lot of other factors too. In this article, I will focus on such areas. While preparing this article I read a lot of article and white papers. Many of these techniques are already used by top most sites in the world and even in my live projects. This is kind of a short summary of all that learning. I hope this will be a baselines guideline for you and will help you improving performance of your applications.

I will divide this article into following sections:

  • Front end or UI  Performance
  • Code behind
  • Database
  • Hardware

The “Front end or UI Performance” part will be generic and mostly not based on any technology (.NET, Java, PHP etc). But The “Code behind” part will specifically be related to .NET stake (ASP.NET, C# etc), because this is my core specialization. I am less familiar with Java or PHP, so sorry guys. In the “Database” part we can relate them to any SQL language but all the examples and code here will be based on SQL-Server.

Before starting next part/s  about performance improvements I will suggest going through my another blog HERE, which gives details of an overview of HTTP and how it can play an important part in performance improvement. 
The series parts are as follows: