首先,做一点背景介绍:我们开发的第一版IronWorker,起初叫做SimpleWorker(很不错的名称,不是吗?),用的是Ruby。我们过去是一个顾问公司,为其它公司开发应用,在当时有两个东西被炒得非常火:亚马逊的Web Services和Ruby on Rails。所以我们开发的应用都基于AWS的Ruby on Rails架构,并因此吸引了不少大客户。我们开发IronWorker的初衷是来源我们自身的需求。我们有不少做硬件设备的客户,他们会7×24小时不停的给我们发送数据,我需要收集这些数据,把它们整理成有用的信息。典型的做法就是让定时任务每天每小时的遍历这些数据。我们想到应该开发一个东西,能够处理所有用户的数据,而不必做一大批的定时任务为每个客户单独处理。于是我们开发了一个服务类应用,并在内部使用了一段时间,但后来我们认为一定会有其他的人也需要这个应用,于是我们决定公布它,这样,IronWorker诞生了。
我决定重写这应用。这是一个很容易的决定,很显然,我们的Ruby on Rails无法支撑我们业务规模的增长。我们都有多年的开发Java的经历,曾经写过很多东西只需要很少的资源就能处理大量负载,远比Ruby on Rails的处理能力强的多,我知道我们可以做出很多改进。于是,接下来的问题变成了应该使用哪种语言?