App Engine: Google's deepest secrets as a service
The software scales. But will the Google rulebook?
Lazy developers not allowed
The restrictions that App Engine places on third-party coders are much like those that Google places on its own developers. Or so it seems. Recently, when we sat down with Google's Sean Lynch (who has since left the company) and senior App Engine product manager Gregory D'alesandre, they fielded most questions about the ins and outs of App Engine, but they drew the line at discussing the particulars of the Google infrastructure. Like Amazon – its cloud rival – Google is typically reticent to discuss its internal operations.
But by all accounts, the App Engine rulebook mimics Google's internal rulebook. "[Google App Engine] has the same limitations that even Google engineers complain about around their internal development and deployment," says Jason Hoffman, chief technology officer of Joyent, the San Francisco-based startup that offers both infrastructure-cloud and platform-cloud services. But these limits are in place for good reason.
Two years ago, at a conference in San Francisco, Google's Vijay Gill – who oversaw the company's network and data-center infrastructure at the time – briefly described the tight restrictions placed on Google's internal app developers. "Any idiot can build atoms together and then create this vast infrastructure. The question is: how do you actually get the applications to use the infrastructure? How do you distribute it? How do you optimize it? That's the hard part. To do that, you require an insane amount of force of will," Gill said.
"We have a set of primitives, if you would, that takes those collections of atoms - those data centers, those networks - that we've built, and then they abstract that entire infrastructure out as a set of services - some of the public ones are GFS obviously, BigTable, MapReduce." GFS is the company's distributed file system, BigTable its distributed database, MapReduce its distributed number-crunching platform.
That force of will is required to ensure that developers stick to the rulebook. "People are lazy. They say 'I don't want to design my applications into this confined space.' And it is a confined space. So you need a large force of will to get people to do that," Gill said.
In building for these "confined spaces", Google ensures that applications can readily scale, but it also allows application developers to operate without worrying about the particulars of the underlying infrastructure. "If we make a minor change to, say, disk storage to get a three per cent gain, and we roll that out to the GFS library, suddenly the entire base of applications stored on GFS sees that gain," Gill said.
App Engine brings this setup to the masses. "App Engine came out of the philosophy of internal development at Google. You don't want to have to worry about scale once scale hits you, because then it's too late. At Google, it's something we always plan for. You don't rewrite your application once it starts to scale. You write it so it can scale up front," D'alesandre says.
"But also – and this is something else that came from Google internally – people hate carrying pagers. No one likes to be on call for things. You try to build on services that you know someone else it taking care for you. That's where App Engine came from. All of the people building on top of it? We're essentially carrying the pagers for them."
But, yes, if you want Google to carry your pager, you too must write for those confined spaces.