Facebook applications deal with the same, if not greater, scalability issues as regular websites. As usage of any online service grows, developers must provide enough storage and computational power to keep up with the demand. Otherwise, pages take forever to load, error messages begin popping up, and frustrated users vow to never use your product again.
Scalability problems have plagued Facebook’s developer platform from the start. I can’t tell you how many times I have tried to test a Facebook app only to wait impatiently and finally succumb to screens like the one below:
There seem to be two primary reasons why Facebook apps have a particularly bad time with scalability. First, Facebook’s news feed serves as a powerful distribution network that can cause applications to spread virally between friends at a rapid pace. The hockey stick can come very quickly and very unexpectedly for Facebook developers. As a consequence, many of them are caught off-guard and left dealing with victims of their own success.
While I don’t have any statistics on how many Facebook developers are amateur rather than professional, it also seems as though many casual programmers produce Facebook apps that they never seriously intend to scale successfully. The Facebook development environment is such that a skilled programmer can build an attractive application within a very short time. Such casual programming sets these applications up for failure when they receive serious attention by users. Unfortunately, many users (including myself) are left with a bad impression of Facebook apps in general when casually-built apps fail them.
So what is to be done? Patel mentions Amazon’s EC2 and S3 services as good processing and storage solutions for developers who need extra resources on demand and perhaps cannot afford to pay for excessively-sized hosted or in-house scaling solutions. He also names WeoCeo and RightScale as other “meta services” that make it easier for developers to hook up their applications to resource providers.
And yet, it seems unnecessarily inefficient to me that developers have to work with both Facebook and a 3rd-party meta service to deploy successful applications. I’d like to see Facebook itself step in and fill this need for developers so they don’t have to scrounge around for extra computational and storage capacity (after all, there is a waiting list for Amazon’s services now).
If Facebook were able to ensure the success of applications on its platform by providing all the requisite resources for a marginal fee, we would have a win-win situation on our hands. Developers could sleep more easily and so would the execs over at Facebook, because the company wouldn’t have to worry about slow 3rd-party applications tarnishing the brand and overall social networking experience. The service might also provide a healthy revenue stream for the company.
Such a move would take the idea of a platform to another level and demonstrate to potential developers that they really do care about the success of applications within its garden.