这个blog文章酝酿了相当长的时间,最后还是写了。虽然所谓大专家们总还是不那么感冒云计算,不过,事实上,至少就我个人的角度来看,云计算的时代已经真正的来到了。特别是体验了一下SAE之后。
若干年之前,头一次开发bioinfor服务的时候,我用着标准的LAMP环境,用着UltraEdit来写PHP,用着简单的putty通过SSH来部署服务,当然,是在实验室自己的服务器上。服务器的安全,稳定性,一度是严重的问题,有paper在under review的时候,然后突然服务器挂掉真的是很心跳的事情。虽然跳了这么多次都还算最后有惊无险。不过这种开发模式里固有的弱点和困难,以及开发的灵活性方面的问题在当时的环境,特别是管理环境下都是很难解决的。尽管后来有了DreamWeaver,至少在PHP编辑环境上确实进步了不少。
然而PHP固有的问题在于你不能用它来实现太复杂的算法,效率是一个无法解决的问题,或者至少,是没法用PHP在本地做一个BLAST的。当时的环境,最佳的方案是从PHP调用本地BLAST程序,当然,这样就会带来一系列的权限设定问题以及数据和结果的交换问题。但毕竟这样可以让PHP服务以较高的效率来执行一些较为复杂的操作。特别是后来,受限于实验室的某些特别的管理制度以至于开发JSP的服务接近不可能的任务。这种模式就成为了一种标准配置:就是 PHP的服务前端,实际的任务执行是使用C/C++甚至C#或者Java来编写的所谓coreapp来执行的。虽然ajax技术在一定程度上改善了界面和交互的用户体验,不过上述开发过程在相当长的时间内都没有发生变化。
到了新单位以后,很快就有自己的web server了,总算是可以使用需要的操作系统,需要的操作模式,利用虚拟化来在一台服务器上解决前端,执行,备份的操作系统级隔离,只让外界看到虚拟机。当然还有自己搞定所有的安全问题,及时去消除各种潜在的服务器被破坏的威胁了。至少现在服务器可以7*24连续运行11个月不出任何软件故障了(话说,这个成绩绝对超过以前实验室服务器的任何连续无故障时间段的长度,不管是由于什么原因当年拒绝我做服务器管理员都是某些人的决策性错误)。
然而,新的问题总是在不断的显现,网费的连续供给居然成为了一个问题,虽然交费的能力不是问题,毕竟网费还是便宜,问题是总是忘了交费的确是一个不大不小的问题,为了这个问题,只能是cron一个任务每天查网费,没钱了就给自己发邮件(话说要是ubuntu能有办法直接访问某银行的网银,也许我还会让他自己去划款)。
但是一切这些问题在云计算时代都不会存在了,最近再一次抄起家伙开发服务,现在的环境已经是Eclipse+Aptana+SubClipse的开发和部署环境,直接对接在SAE引擎上,用SVN执行部署了。这里完全不需要自己有什么服务器,甚至还不怎么需要交钱,因为没人用这个服务就没有计算量,也就不需要交费,这就是云计算真正的魅力所在(特别是,你能用信用卡+预算限制+通知的方式付账,几乎不可能遭遇网费故障了)。虽然SAE只能用PHP,不过 BLAST根本犯不着部署本地版本,直接用NCBI的eUtils的WebService就可以了。而另外的数据库查询几乎总可以用在线的方式来完成。
看到这种模式的好处了么?所有的计算程序都只需要有一份就可以了,在世界上某个角落的强大的专门服务器上由专业人员维护。开发新服务的时候只要远程调用这些服务器上的服务就可以了。永远不会有版本冲突问题,因为实际上永远都只有一个程序的一份拷贝。一个用户计算任务不是由开发者自己的服务器来完成的,而是由分布在世界各地的专门服务器分工合作来进行的。甚至开发者自己的算法,都可以放在一些通用的远程服务器上而完全不需要自己进行任何服务器的系统和硬件的维护。更进一步讲,这是一个全世界的计算程序进行远程的分工合作和大规模集成的时代。
总结起来,云计算,不管这个概念是什么,至少我能从宣称的“云”中体会一点真正的意义。那就是“云”改变了在线服务的开发和运营模式,解决了很多现实的技术问题,并且节省了很多的资源,包括人力,财力和时间。云,至少从这个意义上,是一个全新的时代,而不是一个简单的“噱头”。