前言
难得一个礼拜五,当下班遇上下雨……我心情居然一点都没坏!
写写笔记有时候是挺好的,在写这段话的时候刚刚看了一遍自己写的前几篇文章,一下子就能明晰,这段时间自己思考了什么,学到了什么,想到了什么。有次朋友向我抱怨怎样才能变得更牛叉,我当时牛逼闪闪站着说话不腰疼地瞎吹说只要今天的自己能比昨天的自己牛逼就算更优秀了。现在想来,有时候看看自己写的那些愚蠢的话,在羞愧欲死的同时也能感到一点自豪(想想还有一点小激动呢!)。
言归正传,本篇的关键字是实践、落地、应用和平台。本来就是随笔性质的,一段一段的说比较符合我的思维方式。
高大上VS假大空
自从换了部门以后,旁人问我是在做什么,我都会略带自豪地说是搞云计算的,然后迎来的是不出意料的赞叹和感慨——高大上!在虚荣心得到满足之后,我有次反问一句:你觉得云计算哪里高大上了?然后是一阵冷场。
在充斥着”云计算“、”大数据“之类关键字的文章和报道铺天盖地而来的时候,即使行内的人也被忽悠得一愣一愣的,更何况是没有在做这方面工作的,于是”云里雾里“,看不懂,那自然就是高大上了,我们中国人都这样。再往下发展,云计算就又变成了一个泡沫——在铺天盖地的忽悠之下,生活好像并没有依照宣传中的做出了如此之大的改变, 一切都是镜花水月,很大但很假,到头来却是一场空。
在世界上绝大多数人眼里,技术的创新和优雅并没有太大意义,切实改变生活、带来方便、降低成本、创造价值才是评价一个好技术的标准。而我自年后进入云计算这个领域以来,度过了一时的头脑发热,逐渐开始冷静下来思考:怎样才能避免让人觉得云计算工程师就是一群大忽悠?怎样展现出云计算方式相较与传统方法的优势?云计算到底新在哪里,好在哪里然后又有哪些致命缺点?
困惑带来的危机感与思考
由于有段时间的工作需要和销售人员以及用户进行交流,心里难免留下一种阴影:最怕用户和别人问你们产品的优势在哪里?你所说的这些功能XXX产品不是一样都能做么?何况人家比你出来早做得比你稳定又有稳定的使用群体了?……于是我总有习惯在自己全程参与的项目进行中不停地问自己这些用户可能会问的问题,如果这些问题我自己都回答不出来,那么我做的事就毫!无!意!义!
我开始冷静下来思考应该如何利用云计算这门技术。以前我看到一个项目就不经想这个能用云计算来实现,这个也能用云计算来实现……现在想想这些都不是重点,重点在于,为什么要用云计算来实现?人家成熟技术做得好好的,干嘛非要用这些云里雾里的东西?我们这些做云计算的人,在概念初创阶段的首要任务借用《教父》里的话来说:给别人一个无法拒绝的理由!
云计算比之前的技术强在哪里?线性扩增?高可用高稳定性?大规模并行处理?没错,云计算在这方面比之以往的技术确实有更好的方案和整合技术,但还远远没有达到足够引起变革的地步。有人,特别是一些书和文章的前言部分会大肆宣扬云计算的按需使用计算能力这个特点,对于这点我不得不承认,公有云的IAAS、PAAS的确吸引人,但不是每个组织都有能力和必要去做的。云计算真正的优势在哪里?我认为是数据。
昨晚在和朋友扯淡的时候我不知不觉蹦出一句:以前牛叉的应用功能都是代码堆出来的,现在牛叉的应用功能都是从数据里挖出来的,然后用代码展示一下结果而已。单条数据是廉价的,大规模数据是无限可能的。数据积累对于应用设计的作用是能够达到量变到质变的。少量的数据能够用于展示,简单的统计计算等等;大规模数据配合合适的算法能够完成一个从数据世界到客观世界的转换过程,从而达到一种”上帝视角“的能力:以时间作为维度研究单个个体,人类虽然能够独立思考,但是智慧生物意味着有本身的思维和行为惯性,这些都是可以拟合成数学表达式的;以数量作为维度,在一个离散的时间点内单个个体的行为是不可预测的,但人类这个族群或者说人类社会的集体行为也是可以借由统计学的方法来进行归纳的(百度大脑预测高考题不是魔法而是数学)。
大规模数据之下带来”上帝般“的应用功能,这是传统方法论下软件技术所做不到的。而这”上帝般“的功能也有自己”上帝般“的实现条件,这也是数据量变到质变的一部分——当数据大到单台或几台几十台计算机无法装进内存或者处理的时候,云计算在并行处理方面做的努力重要性被无限放大:云计算在并行处理上做的努力我认为最为重要的就是在设计应用的时候只需要考虑计算模型,而不需要过分考虑通信管理等一大堆底层技术。瞧,这就是必须用云计算的理由!
从云端到落地,“假大空” 的实践之路
在我眼里,云计算能够在互联网企业蓬勃发展但在传统制造业领域开展缓慢甚至举步维艰的原因主要有两点:管理和数据。
先谈管理,我认为互联网的项目管理模式更适合云计算项目,而制造业或其他传统行业的管理模式只会对云计算的发展产生反作用。一个新的功能,一个新的应用都可以作为一个新的项目。在互联网企业中,所有项目是基于一个数据池向用户提供服务,业务性的数据可以做到共享,项目组之间、部门之间的技术互相开放(甚至对外开源),因为对于互联网来说,数据和服务才是真正的价值所在而不是源码;反过来看传统制造业,绝大多数项目都在于产品的研发、制造和销售,对于业务数据却没有很好的收集和积累(当然我不是在指责和抱怨只是在阐述事实,有些东西确实因为行业规则和习惯之前没有做),此外部门和项目组之间技术壁垒严重,更别说公司与公司之间的开放交流,原因也是因为传统行业的核心价值在于产品,即设计、源码以及实物。
传统行业在云计算方向的努力存在先天不足, 所以更需要思考如何实践,创造真正价值。我认为解决方案应当从前面提到的管理和数据入手。
项目和组织的管理应当更加灵活,真正的云计算卖的不是传统产品而是各种各样“上帝般”的服务,在这点上对于传统企业内的云计算开发团体(不是说整个公司),试着学习互联网项目的开发模式,至少在部门间加强数据和技术的交流。云计算之下没有独立的项目,新的云计算应用总能在过去项目的技术和数据上得到更多的参考和发展,换句话说,随着算法和计算能力的提升,同一份数据能找出更多更精彩的内容。我不是一个真正的开源程序员,像我这种生在新中国长在红旗下的好少年,遵从大大们的教导坚定社会主义初级阶段一百年不动摇,仅仅达到了“人人为我”,而“我为人人”那已经是中级阶段和高级阶段的事情了。但看看阿里,facebook等开源企业确实从开源中获取到很多,为什么越开源越赚钱,这个跟为什么有钱人越捐款越有钱一样,值得思考!
第二点是得到数据,传统行业的特点注定了其无法像互联网应用那样收集用户数据和行为。但传统企业在自己领域可能已是一方霸主,利用这个基础是可以进军互联网应用无法涉及到的领域,收集到特有数据的。在工业领域的数据收集还有很大版图等着企业去占领,并且收集到的数据所包含的领域是广泛并且巨大的,可以实现的应用也将是一般互联网企业所达不到的。
越做这方面的工作,越觉得云计算绝不是随便搞几个开源框架搭一下就能完成的事。这是一份真正的事业,是一个很有前景但是未知的远方。从数据收集模式的建立、数据和技术的积累、方法论的验证等等,要做的工作还有很多,很多……不过真的很好玩,不是么?
应用与平台
随便谈谈云计算应用与平台。 如果说云计算应用提供“上帝般”的功能,那么云计算平台就是这位上帝的天国。
云计算平台的研发工作(不谈开源的话)并不是一个新的领域。云计算平台是一种以往技术的深度整合,是一个高度复杂的中间件集合体。因为前文提到的那样,云计算平台的价值在于处理单机解决不了的计算任务,又要为应用隔离底层部分的技术难题,所以在架构、性能、算法、计算模型等方向都有更加严格的要求。
而在云计算应用的开发中,数学占据了最重要的地位。云计算平台和大量的开源软件库为云计算应用的开发降低了难度(可能看起来牛叉的要死的应用只是一点点代码就可以实现)。数学基础和实验能力绝对是重中之重(数学能力的低下已经成为了我日常开发中最大的绊脚石)。
胡言乱语完毕,that's all,thx!
Joe
|