2014年3月30日,由全球最大的中文IT社区CSDN主办的“开源技术大会·2014” (Open Source Technology Conference 2014,简称OSTC 2014)在北京丽亭华苑酒店召开。 本次大会以“启蒙·开源”(Open Mind, Open Source)为主题,邀请到了来自全国各地的30多位开源业界资深人士发表主题演讲,数十个开源社区现场参与,到场的开源软件开发者、贡献者和开源爱好 者总人数超过500人。作为一场“接地气”的开源盛会,“OSTC 2014”以其开放性、专业性、社交性深受与会者的好评。 李道兵:我今天要讲的题目是重整工具箱,从开源软件到开放服务,我自己对开源软件看法谈一些思考,我写过一些小的软件,还在持续参与一些项 目。这里分为三部分,引子,演化中的lamp,未来会发生什么,开源软件未来纠正会变成什么样的形式的东西,是我这里想跟大家探讨的一个话题。 先说引子,我们用什么版本的管理软件,第一回答是github,github是开源吗?是基于开源的版本管理软件工具,你为什么不用开源以 版本管理软件,我回答不了这个问题,从另外一个角度来说我不想回答这个问题,至少我们公司来说我们开始更多的接触一些不仅用了github,腾讯邮 箱,saas有很多的slides,今天我主要讲的不是这个,我今天主要讲的是从我的观点来看未来会发生什么,以及程序员,或者作为开源开发者我们怎么去 应对这个事情。 从lamp说起,有人说lamp是开源软件最伟大的成果,从某种角度是能站住脚的开源软件运动,在什么方面成功?包括互联网在内的外部应用体系,以及内部计算平台这方面取得了巨大的成功,从某种角度来说lamp体系。 lamp早期来说是这四个软件无可替代的,稍微的完整,扩展一下,从名字来扩展和linux平行了有bsd,和apache、nginx、lighttpd,和mysql,postgresql,php。 对于真正的要用lamp做一件事情不管是创业也好,还是作为企业内部的完整平台来说津津有lamp的部分只是一个骨架,真正的完整展开来 看,线上的部分有狭义的lamp,有缓存,存储,整个文件的存储,图片应用上传的东西,可以简单的利用磁盘,或者nfs,或者gfs,全文检索 (sbks)。 除了线上的部分资源开发的部分,我们简单的列一下至少有软件仓库,开发部分的软件仓库、bug管理,持续集成,部属。 运维部分,监控、日志,数据分析,日常升级。 前端部分:我也不懂。 这些都可以在开源上做出来的,lamp是开源的最大的成就,当我们想做互联网的事情或者企业内部的事情,做一个稍微大一点的事情的时候开源软件能够从头包到尾不用花一分钱。 插一个写代码,下次再有人问的时候把这个给他,一个写代码的负责这些事情,只要整这些事情,而不仅仅是差一个写代码的。 前面只是想带大家回顾一下,在这里开源以及互联网产业也好,企业的软件产业也好,我们现在的现状,或者简单的做一个分类,接下来会发生什么? 云服务已经大量的入侵这里的东西了,我们能看到比如开发的部分软件仓库现在用github的不少,也开始用一些服务,而不是简单用软件来作为管理,github自己带一个,其实也有第三方的,持续集成,前面我提到trvels。 像监控除了自己内部要做一些监控,监控为什么打一个星号,现在监控来说尽管已经云服务化了,但是只能做一些低压类的服务,真正线上系统的话监控的压力可能比监控大得多,数据的采集量远远超过监控宝支撑的这个量级。 另外就是存储,存储为什么在线路上部分率先出来变成有云服务的部分呢?一个最主要的部分第一这部分的是可以分离,第二比较难做,特别是数据 量大到一定量级的,怎么做到安全,这方面会越来越多的压力,存储另外一个会涉及到的东西,我们存储有很重要的问题,如何用用户的数据快速到服务器,如何用 服务器数据快速到用户,第二个部分比较好解决的,因为有比较典型的cdn服务,能方便的解决这个问题。 第一个问题如何用用户的数据快速到服务器,这个自己来做就意味者,上传节点和后端数据快速的一致,这个有一个难度让存储率先的进入,已经有云服务这个行业。 云服务有一个特点,一旦开始用,很难再回头,当github用习惯了之后自己再用本地的gat的时候就不是那样的感觉,对团队里,你的时间已经不允许花那样的力气,用一些简单自己搭软件了。 开发相关的软件是云服务化比较快的,但是现在开发软件我觉得国内服务并没有想象的那么好用,有两个问题让我很头疼,第一个很多开发软件想着 通吃所有的需求,baug管理,内部交流等等很多的东西,对于程序员来说这个不好用,就是不好用,没法忍,所以做好一个需求就不错了。 另外每个云服务都想着有自己的帐号系统,怎么打通帐号系统,也是很重要的事情。 前面提到过已经发生云服务的部分,我们看一下未来哪些东西即将会样云服务,其实来说除了编程需要你来做,大部分都可以云服务化,这些云服务 化显然他们至少有一定的优势存在,比如说数据库这个领域,数据库优秀的团队可以做到百万,常规你能做到多少,自己的(mac)k做到上万就很不错了。包括 后面我提到的全文检索,全文检索来说也是对性能要求比较高的一个东西,如果云服务化让更专业的团队做专业的事情对于开发者来说我觉得是好事,从大部分来说 这些都会云服务化,最后的形式是什么样的形式,我想探讨可能以什么样的形式出现? 提出这个问题,第一个我觉得不是paas,现在已经有很多的pass平台,包括ga1,sa1,gad出现到现在三四年了,但是在这个上面 产生对你生活有影响的大项目吗?没有产生过,对于我来说它最大的缺点是什么?它没有操作系统,上面的系统怎么运行摸不着,很不爽,也没法优化它,有可能牵 到主机里,没有操作系统,我不知道现在的系统是卡在AO上,还是卡在CPU上面,或者不是那么很直观的看到。 稍微量大一点的东西,线路上的bug很多,怎么快速的定位bug,不能说产品没有bug上线一切都顺利,没有操作系统就没有形成定位bug的能力,自己靠本地区在线这些技术得到bug的反馈。 第三个问题没法开发有创造的服务,希望这个服务器是没有状态的,可以随意伸缩的,不是每件事情都可以做成这样的,可伸缩的架构是好架构,但是有一些关键的结点,用一些比较脏的方法实现它,而没办法那么干净。 第二个来说我们公有云有没有可能,现在看到大部分云服务都是这样的类型,存储、邮件、短信、还有开发相关的服务,对于前面提到的几类服务都 是非常合适的,但是如果我们往更深步的考虑,比如数据库,消息队列,对这类来说性能远远达不到这些需求的,简单的问题是说没法保证公有云服务不在同一个平 台,不能保证整体的性能,不可以接受,还不如自己部署。 我期望的东西就像我刚才说的,再往下走,云服务化很重要的就是我们怎么提升性能,提升性能的关键我们怎么让它能响应时间最够好,响应时间怎 么好了?简单的来说我们把云部属到机房,每个机房步入一个字服务的结点,这个能够保证能用我的服务,同时来说又不用承担性能上的损失,你需要数据库,用我 的,我来保证你的数据库的高效,安全,我会帮你自动备份这些事情,甚至一些增值的服务,比如mickl这边的数据错了,能回归到数据结点吗?如果是小团队 是很痛苦的事情,如果对于云供应商来说,这是可以接受的,因为他的技术能让他能够做到这一点。 这里的几个例子如果能部署到机房这个结点会变得很有用的,数据库,语音识别,音视频转码,电商也许都会对这个感兴趣。 我前面说的这个东西其实有一些IDC在做一些类似的东西,但是他们做的方向可能不合适,为什么这样说,IDC只能用一般的团队作出一些一般 的产品,对一般的产品会带来一些问题,我干吗用IDC的,简单的问题是说专业的团队必须交给专业的人士做,数据库你能优化到什么程度?视频转码每个人都会 做开源软件直接下载,软件怎么做调优,几十款,几百款型号mp4是什么样的,mp4优化之后必争的数量能做到多少,这些都是很专业的事情,如果能找到专业 的团队帮你做这个事情何乐而不为,为什么一定要让自己做,而且做的很糟糕。 所以说对于IDC来说自己来做,做好这个事情我会选,所以期望看到好的东西,我们云服务供应商需要更多和机房做合作,云服务的能够就近的部署到各个机房的结点,就可能能推广我们的更多的,整个技术上更多的东西云化。 这个事情的难点在哪里?云服务本身就很难,安全性,稳定性,公平性,这三个点安全性和稳定性这两件事情是平常,即使周围开源软件本身也会考虑的。 最后一点公平性,是现在很多不去考虑这个问题,比如这个服务同时对10个客户用这个服务,这10个客户怎么保证,不会因为某一个用户滥用而 导致整个服务下降,这个东西又是怎么去保证的,这个在常规的软件体系里其实很难,或者说我们对这个事情考虑的很少,不是说不可以做,而是说比如mckl开 发者,当50个用户一起用的时候,如果有一个用户在滥用,怎么让其他的49个用户仍然能得到合理的服务质量。 存放机房点太多,管理难度会大幅度的增加,这个问题也是一个问题。 这些东西摆在这儿,我也不想进一步考虑,不去做这个事,开发者如何做?有一天机房所有的mickl的服务,有一个消息的管道怎么接?怎么样 才是合适的接法?对于我来说信任,同时又不信任,信任我会主动拥抱这些云服务,这些机房提供的这类的东西。不信任,我用了你的服务,你的数据返回,我会检 查数据的完整性,接受是合法的接受吗?生成需要的字段提供了吗?这些都是需要认真的检查的。 异常要有详细的日志,推动服务提供方提供reqld,如果是错,我知道reqld出问题了,我把这个给你,你作为服务供应方,出什么事了,能不能修补这个问题。 对于无状态的服务,邮件,sms会找好几家,定期的测试,能够自动的切换就切换,这样不会太依赖于单个的服务供应商。 |