Lean Infrastructure

"Lean" is a popular word thrown around today. Everything from manufacturing to start-ups have their definition of lean. When I think of lean, I think of trimming the fat, especially when it comes to bulky web applications. There's nothing worse then logging into an application and clicking around, just to have to wait a few seconds for it to respond, especially in a world where people are becoming less patient with technology.

When it comes to a web application's infrastructure, there are many variables that affect performance: hardware resources, hosting provider, application load, and the web service itself, amongst others. The latter is what I want to focus on today; building an application framework using light weight, readily-available tools. There are many methods and languages available for server-side development. Each has its pros and cons and every developer stands up for his or her language of choice. I'm not saying any of them are wrong  or bad , I'm just giving my opinion from experience. 

Users expect their applications to be responsive (I mean responding quickly to an action, not responding to device/orientation/display changes). Front-end development plays a large role in this, but with today's AJAX applications, the back-end assumes a huge chunk of responsibility as well. A web application's back-end service must also be responsive; it must receive a request, quickly process it, and return a result that can be used by the UI. When choosing a programming language and deciding on other infrastructure specifications, keep this in mind.

In terms of start-up cost, I'm a huge proponent of open-source technology. Unless you're limited to a specific language you know, why get tied up in licensing fees when there are free solutions that you can build upon? For example, I'd choose an open-source language (NodeJS, Python, etc) that's free over something that would empty my pockets over time ( .NET).

Another thing to consider is how your infrastructure will behave. Some platforms are blocking, others are event-driven. I'm a fan of NodeJS for a variety of reasons: it's free, event-driven, proven to be responsive, and is JavaScript - the same language you're going to use for your front-end development. In addition, NodeJS is powered by Google's V8 JavaScript engine, the same one used in the Chrome browser.

Now, none of this is proof that something else won't work well. For example, Google's infrastructure is all python, Java, and C++ (from first-hand accounts with employees) and Facebook has done an excellent job exploiting PHP's potential, even creating their own PHP to C++ compiler, HipHop. What I'm getting at is that it's worth the time investment to do research into how your infrastructure needs to behave, weighing what you're trying to achieve with what you're able to quickly (and affordable) build.