• 被高估的云计算 - OOPSLA辩论
    时间:2009-12-31   作者:Morten Udnæs, R   出处:www.infoq.com

    现在对云计算的炒作就如同上百人在电话会议中狂吼一样喧嚣。回顾20年来IT的演变,较为特别(其实也不那么特别)的一点就是每次新技术的诞生都发生了喧嚣的炒作。以4到5年为周期的技术更新意味着大量赚钱的良机。从最早的大型机到客户端-服务器、CASE工具、.COM、企业架构(如EJB和 DCOM)、SOA,以及发展到现在的云计算,IT一如既往地关注于如何想方设法赚钱。

    云计算广受期许的原因是什么?首先对于一般开发人员和架构师来说,确实非常赞同‘IAAS’(基础设施即服务)的理念。无可置疑,这也难怪,由于在开发过程中IT部门和外包服务商常是制约项目进程的瓶颈,使得这些人过去多是生活在资源的“捉襟见肘”之中。但现在他们终于可以不受限制地开发应用并任意部署。

    对于拥有复杂技术的大牌供应商来说,(据说)可以通过预先配置和包装来让那些缺乏足够技能和经验的用户也能够合理的配置并使用产品和服务。从而为它们的产品和服务开辟了一个全新的分销渠道。由于云计算缺少通用的标准,因为可以将用户的应用绑定在特定的供应商平台上,这样客户就会很忠诚——然后提供富余的硬件也是一条生财之道。

    对于业务主管来说,云计算既支持按使用付费,又很容易平衡成本和收益——这个设想非常的美妙……

    对于学术研究者来说,云计算预示着可在诸多领域进行探索的良机。同时它还使用到了很多过去在并行计算,可伸缩性和虚拟化方面的研究成果。

    云计算的真相是什么?

        * 提供很多你不需要的东西
        * 不是服务复用的圣杯
        * 不是开发/托管全能的瑞士军刀

    如果你只需一辆自行车,那么给你提供一架比自行车贵得多的航天飞机绝不是一件好事。问题的关键在于复杂度。它不工作该怎么办?它不如预期工作该怎么办?该如何操作它呢?除非自己是个火箭科学家,否则会很被动。你已经拥有所有(甚至更多)特性的功能需求吗?你在定制架构上拥有足够的技能和经验吗?如果这些条件都不具备,那么无论是用云计算还是别的什么就都没有多大区别了……

    “软件开发成本如此昂贵,所以我们要尽量复用”。这句话没错,但是请看这条新闻:四十年以来,我们一直试图复用代码但却从未成功!云计算在软件复用上也根本没有任何进步。复用要求非常相似的业务需求和上下文。而现在最主要问题恰恰在于每个用户的业务需求和上下文都有些细微差别。从技术角度上看,同类的云的集成服务会很容易,但在质量和安全领域上复杂度却会增加。简单数据服务(如地图/地理数据)的复用会带来一些好处,但这并不能改变用户仍然需要雇用开发人员来开发新功能这一事实。

    IT不仅指像Facebook和Amazon这类的互联网创业公司,它需要支持业务流程。除开少数流程可以通过云计算来实现,绝大多数都不可以。它们都需要云计算平台所不擅长的整合、安全和灵活。

    SAAS(软件即服务)是个好主意,但也不够通用。即将出台的一系列标准将使SOA和服务看起来很容易,但是其中绝大多数都会被忽略掉,进而根本无法根据它们来做实现!重写软件又是非常昂贵且缺乏商业价值。基于上述问题,未来5-10年里将只出现少量的面向云的应用。而到那时,取代云计算的下一个技术革新将会发生。

    云计算擅长做什么呢?以下场景都是不错的利好方案:

        * 没有基础技术设施而又需要可伸缩性的创业公司。
        * 地理数据,政务信息之类的数据中心。
        * 桌面办公(邮件,浏览器,日历类应用)。
        * 游戏(拥有服务端和三维渲染的廉价终端的这类)。
        * 需要动态处理大容量数据的业务。
        * 具有大容量数据和低安全要求的应用。

    开发人员一直盼望的是什么呢?不是免费。IT部门和(或)外包服务商应该提供丰富的包含安全、标准、补丁等自助服务,从而可以用来开发现实的“自行车”类方案的环境。实际上,学术研究者应该停止附和Garter公司对云计算的不合实际的高估。把时间用来研究产品和市场的需求,这才是云计算等新技术诞生并发展的源泉。

    大牌供应商应该意识到“大量打包用户并不需要的东西”的做法并不合理。他们应该降低开发复杂度从而更好的帮助开发人员完成任务。

    业务主管应该改变IT部门的工作方式。敏捷和精益思考的出现使IT和业务无缝协作成为可能。管理上则应该从成本导向(开发花了我多少钱)转为收入导向(上阶段发布的新功能让我们赚了多少钱)。

    邀请您来挑战我们的观点并指出其中的错误。我们不需要一套套的理论和逻辑,我们需要你举出真实的场景。

    网友留言/评论

    我要留言/评论

    相关文章

    分享自己感触最深的几条设计哲学:今天读到一些UNIX下的编程哲学,对自己相当的有冲击力,把我觉得有用并且有道理的,自己组织了一下
    如何招聘程序员 - 技术经理必知:你有过招聘程序员的经历么,面试过程中是否有些误区,请看本文阐述~
    敏捷开发的二十六条至理名言 - 借此导航自己人生:敏捷开发真正的问题是什么?其实敏捷主要还是一种观念,一种意识,通过人来推动。本文总结了26条有关敏捷开发的关键原则,供读者参考借鉴。
    汇编语言超浓缩教程:汇编语言相对于高级语言来说,确实非常非常地麻烦,但是我们还有必要学习这些么?当然需要,请阅下文!
    什么是UUID:UUID(Universally Unique Identifier) ,通用惟一标识符是128位比特的数字, 用来惟一地标识因特网上的某些对象或者实体。它是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的 API。UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
    Firefox和IE之间7个JavaScript的差异分析:尽管 JavaScript 历史上使用冗长而令人生厌的代码块来标的特定浏览器的时期已经结束了,但是偶尔使用一些简单的代码块和对象检测来确保一些代码在用户机器上正常工作依然是必要的。