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.
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
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.