Review of Developing Large Web Applications

Web platforms are among the tools I have used to present and capture information since 1998. Yes, I have written much about and shared research on native client app technologies applicable to desktops and mobile. In my opinion, principles applicable to web development can be relevant in the native code space and vice versa. Regardless of platform, scaling up the performance of systems is something I have explored in-depth. I was curious to see what Kyle Loudon had to say about the topic of performance in his book, Developing Large Web Applications.

Good Guidance on Web Performance

When it comes to solutions of systems performance, you can realize this in a variety of ways. Kyle Loudon presents an approach in this book that I was curious to explore. As I read the book, I saw that the suggestions where not unknown to me as I have applied them all in a different way in a different technology called ASP.NET. A technology that, in recent days, has gone more fully open source. Rather, what I wanted to understand piece together was an alternative, broader perspective on system performance. This book presents several things I think will prove very useful. The following is my overall synopsis of the performance lessons in the book.

Disciplined Consistency

The primary concept to apply is consistency. Most software, as it grows, gains weak spots. It does not matter if that software defines a front end (web, native, hybrid), back-end (controllers and processors), or otherwise (middleware, ETL, etc). A block of software newly derived or changed will likely develop weak spots. I think you can reduce the occurrence of weak spots through overall disciplined consistency. Excellent object-oriented design assist this tremendously.

Efficient Data Structures

Second, the more compact each area of the system is, the sooner those elements are likely to complete processing. Many other factors apply, but when most other concerns are not a factor, size can affect computational complexity. Sometimes you have no control over the data definition or pipeline and your best effort is the selection of the right algorithm (see Kyle Loudon’s other book, Mastering Algorithms in C). When you do have a choice, choose to streamline the data.

Efficient User Interface Structures

In this context, data isn’t just what comes out of a database or file system. Data is also configured structures of a user interface, web service, and collection of variables. It is a continuation of the previous point in which you strive to apply a perspective about data structures to executable structures as well. Object-oriented design can assist with this in which the outcome is are compact data structures for the user interface. This includes minimizing user interface data such as HTML, JavaScript, CSS, XAML, OpenGL structures, etc.

Maintainability

A challenge with the foregoing is doing this in such a way that the code, data, and organizing structures are obvious, intuitive, and maintainable. Performance does not have to diminish maintainability or the intuitiveness of a system’s design. Understanding the characteristics of data and how data structures (out of databases, across networks, and memory working sets in user interfaces) are treated by the physical platforms on which they operate. The hardware matters, and object-oriented design applied with the right perspective can aid the goal of an accurate, reliable, efficient system considerably. Kyle Loudon did an excellent job making the case for good design and he backs it up well with a real demonstration that is concrete, ready to use advice on how to achieve this by way of example.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s