I’d like to talk about Heroku and its relationship with Salesforce. Salesforce has spent much time and money to make its Force.com platform a great option for hosting your data-backed application. They have done a wonderful job with crafting a reliable platform, so why would they purchase another development platform like Heroku? Looking at it one way, it may seem like they have little confidence in their own platform and feel a need to purchase another solution to stay competitive. However, this can’t be the explanation, since Force.com has a thriving app market and is successfully used by many ISV businesses. So, what is the difference with Heroku that Salesforce sees? After looking at the limitations of each platform, we can begin to see the logic behind Salesforce’s acquisition.
Force.com has strict limits. They are well-advertised and well-known by its development community. Salesforce advertises multi-tenancy as its architecture and the reason for its success, but what does that mean? A multi-tenant acrhitecture means that one instance of an application is used to host multiple client organizations, giving each of them a virtually partitioned data space and configuration. Each instance, then, shares its hosts resources, such as processing time, with each of the other client organizations residing in the same Salesforce instance. You may not realize it now, but this architecture was not designed to have high performance or high response times. This is not a problem for an application like Salesforce, in which the goal is to provide a secure data model and enable a company’s employees to easily administer their data. The goal is not to provide the best experience for its users, but rather to provide services to its clients for the best price possible.
Heroku, on the other hand, is an application platform that does not impose such limits. It’s architecture is very different, in that the application you write is managed on a process-level. If your application needs more resources, new instances of your application are spawned and the load is spread evenly across them. Allotting more resources in this manner ensures that it remains responsive and can handle huge numbers of simultaneous requests. Like Force.com, Heroku apps also have a database available, however, it is a stripped down, off-the-shelf database, so any custom database functionality must be written by hand. You can see how Heroku is catered towards high performance apps by giving your app the resources it needs, charging you only for what you use.
The two Salesforce platforms have two different target markets, dictated by their different philosophies of what an application platform should be. When deciding on a platform for your app, remember to choose a platform that was designed to support your type of app and its audience.