Friday, December 14, 2012

Choosing technology stack for your Next Big Idea? Here's help...

Listed are some common decisions that you need to take when you are planning to develop a new web application along with hints at helping you in choosing the right vendors and frameworks:

1. Hosting:
Heroku - Easy deployment + scalability and high availability + plug and play services. But least custom control.
Engineyard - Ease of deployment + Amazing customer service + root access.
Linode - Cheaper than many + variety of server templates to start with + root access. But complicated.
Amazon EC2 (self-managed) - We configure the environment from scratch. Maximum control and easily scale-able but the onus of server management falls on you.

These are just a few common options. I'm sure there are many more...
You can check out this white paper to understand the advantages of using a Platform-as-a-service over self-managed servers. It helps you in reducing the Total-Cost-of-Ownership (TCO). It feels like having the best server engineers dedicated to making your servers more secure and reliable.
2. Monitoring:
New Relic is the de-facto for monitoring the server, identifying bottlenecks and setting up alerts when the performance falls below some threshold. Highly recommended.
3. Data persistence:
Relational Database v/s No SQL. Here's a related discussion and mongodb faq 
Possibility of an application utilizing both Relational database and No SQL as a hybrid persistence. 
4. Choice of Application Frameworks:
Depends upon the technical comfort of the development team and sometimes on the management red-tape involved in the decision making process.
  1. Ruby on Rails - Rapid and Agile web application development. Vibrant open source community with plugins for just about anything that you can imagine. Any CPU intensive operations are generally extracted into native code (say written in C) with a ruby wrapper around it.
  2. Java/.net - Long list of active enterprise applications to support the credibility.
  3. Node.js - This a new contender in the server-side application development technologies. Best suited for serving high volumes of requests with minimal hardware *conditions applied.
    Using Node.js, LinkedIn went from running 15 servers with 15 instances on each physical machine to just 4 instances that can handle twice the traffic. More about it here.
An application can be built on Service Oriented Architecture - where the data can be processed and served by one or many server written in different technologies while being consumed by a modern client-side framework like AngularJS and BackboneJS.

No comments: