Is Google App Engine a Lock-in Play?(Google App Engine是一个封闭的游戏?)

Tim O'Reilly Tim O'Reilly 2008/04/14

Venture capitalist Brad Feld just put up an intriguing post comparing Google App Engine to Amazon EC2. The meat of the entry is from an analysis by Brad's friend Scott Moody. Here are the juiciest bits, pro and con:

With EC2, you still have to set-up load balancers, configure multiple replicated database servers, implement scalability hacks if things grow too fast (such as distributed caching of data via memcached), keep distros and apps up-to-date, etc. Bottom Line: EC2-based companies still require sys admins, AppEngine companies don't. That will certainly change as more companies begin offering EC2 server management services.

Google provides a non-relational datastore and that's the only datastore available (no traditional file system, no relational databases). With EC2, people generally use MySQL or Postgresql. Amazon offers a non-relational datastore called SimpleDB, but it's a bit *too* simple. For example, it does not support sorting of results sets. Huh? That makes it non-workable in my opinion. There's also an issue with using EC2 virtual machines for your database servers -- Amazon says that when a virtual machine crashes, all the data managed by it disappears, so virtual machine crash = hard drive crash.

With EC2, programmers can use any (non-Microsoft) language to develop their apps. AppEngine users must code in Python. Also, Google does not support sockets at this time. All cross-app communication must be done via HTTP.

At *this* moment in time, it would be difficult to move apps off of AppEngine. Doing that in EC2 is trivial. This, to me, is the biggest issue, as I believe it could make startups less-interesting from an acquisition perspective by anyone other than Google. This will most likely change as people develop compatibility layers. However, Google has yet to provide any information about how to migrate data from their datastore the best I can tell. If you have a substantial amount of data, you can't just write code to dump it because they will only let any request run for a short period before they terminate it.

This last point is really very serious. I've been warning for some time that the first phase of Web 2.0 is the acquisition of critical mass via network effects, but that once companies achieve that critical mass, they will be tempted to consolidate their position, leading ultimately to a replay of the personal computer industry's sad decline from an open, energetic marketplace to a controlled economy.

Now it may be that this is a temporary oversight, and that Google does intend, long term, to make it easy for developers to export their applications. After all, Eric Schmidt says he reminds his employees all the time, "Don't fight the internet." But it's also possible that this is one more sign that one of the big guys is forgetting the principles -- the internet as a platform (not "my company as a platform"), harnessing the power of user contribution (which as John Musser pointed out means that you always "pay the user first"), small pieces loosely joined-- that brought their success in the first place.

Keeping the internet as an open platform is a choice. We didn't understand what was happening to the PC ecosystem, but we've seen this movie before, so we should recognize and fight this plot line when we see it happen on the internet. We need to keep our cloud services vendors honest, and tell them we want an open, interoperable platform, not one based on lock-in.

Of course, as some wag said, "the only thing we learn from history is that people don't learn from history."

P.S. There's some further good discussion on the lock-in issue in a Q&A about AppEngine put together by Stephen O'Grady.

风险投资家Brad Feld刚发布了一个有趣的帖子来比较Google App Engine和Amazon EC2。主要内容来自于Brad的朋友Scott Moody的一个分析。下面是最主要的部分,从正反两方面都谈了:

用EC2你还是需要处理负载平衡,配置多台数据库服务器,如果增长太快你还得采取一些扩展技巧(比如通过memcached做数据的分布式缓存),以及更新软件包和应用,等等。归根结底基于EC2的公司还是需要系统管理。采用AppEngine的公司则没必要如此。随着越来越多的公司开始提供EC2服务器管理服务情况肯定会有所变化。

Google提供了一个非关系型数据存储并且这是唯一可用的数据存储(没有传统的文件系统,没有关系型数据库)。EC2上大家通常都用MySQL或者Postgresql。Amazon提供了一个非关系型数据存储SimpleDB,但是太简单了,比如连结果排序都不支持。我认为根本没法儿用。再有一个问题是用EC2虚拟机作为数据库服务器——Amazon说如果虚拟机崩溃了所有上面管理的数据就都没了,所以虚拟机崩溃=硬盘崩溃。

在EC2上程序员可以使用任何语言(非微软的)开发应用。AppEngine用户则必须用Python。而且Google目前不支持Sockets,所有跨应用通信都得通过HTTP。

目前从AppEngine把应用移出去非常困难。在EC2上则没问题。这一点对我尤为重要,因为我相信从收购的角度来看这种情况会使那些创业公司对其他收购者变得缺乏吸引力,只能卖给Google。大家通过开发兼容层可能会有所改变。但是Google还没提供如何完美地从他们的数据存储中把数据移出去的资料。如果你真有大量数据你不能指望写点代码就这些数据转存出去,因为Google只允许请求运行很短的时间,然后就中断它。

最后这一点非常重要。我已经警告过多次Web 2.0的第一个阶段就是通过网络效应对关键资源进行掠夺,一旦这些公司完成了这一步他们就会致力于巩固自己的地位,这将从根本上导致在个人计算机产业中可悲的衰退在这里再次重演,从一个开放的充满活力的市场到一个被控制的经济。

也许这只是暂时的疏漏,Google从长远发展还是会让开发人员简单地把他们的应用移出去。毕竟Eric Schmidt说他经常提醒员工“不要去和Internet作对”。但是这也可能是又一次大公司忘记了那条原则——Internet是平台(而不是我的公司是平台),驾驭用户贡献的力量(就像John Musser指出的你应该“首先回报用户”),大家松散参与——这一切带给了你成功。

保持Internet作为一个开放平台是明智之举。我们不知道当年PC产业里发生了什么,但的确看到一些事情发生了,所以当看到它又发生在Internet上时我们应该认清这种阴谋并与之战斗。我们需要保持云计算服务提供商的诚实,并且告诉他们我们需要的是一个开放的、互操作的平台,而不是一个封闭的禁区。

当然正如智者所言,“我们从历史中得到的唯一经验就是人们从不从历史中吸取经验。”

还有:在Stephen O’Grady汇集的关于AppEngin的Q&A上还有一些更不错的关于封闭问题的讨论。

Discussion

Enter your comment (wiki syntax is allowed):
blog/tim/is_google_app_engine_a_lock-in_play.txt · 最后更改: 2008/09/20 由 radarman
O'Reilly Home | Privacy Policy ©2005-2009, O'Reilly Media, Inc.
All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.