摘要:在云计算刚进入中国的时候,成功地把握住了职业转型的机会,在实践中成长为优秀的架构师。技术人攻略在工作中遇到最大的挑战是什么做云计算的难点在什么地方挑战最大的是在工作的时候,要从头到尾搭一套以为基础的云计算平台。
导语:本期采访对象李雨来@Blacktear ,86年生人,是云计算创业公司迅达云成的架构师,提供云计算领域的IaaS服务。毕业于北工大机械专业的他,曾有过长达两年半的技术编辑生涯,对编程的热爱支持着他成长,出版社的工作也拓展了他的技术视野。在云计算刚进入中国的时候,成功地把握住了职业转型的机会,在实践中成长为优秀的架构师。除了个人的成长经历,他还谈到在云计算领域的实践经验和感悟,强调开发要站在运维的角度看问题,在云计算时代,开发和运维的结合将变得越来越重要。
“搞编程这行如果不是兴趣驱动的话,永远会觉得它只是一个工具,如果非常有兴趣,就会发现很多乐趣。计算机行业更新这么快,如果只是上班工作,下班回家什么也不想,那么用不了几年就会被淘汰。”
技术人攻略:你从什么时候开始接触编程?
我从小学就开始接触电脑,通过Basic对编程建立了一些感性的认识,高中开始学计算机二级C语言的书。可是考大学由于分数不够,进了机械工程及自动化专业。但还是很喜欢计算机,就一直泡图书馆看相关的书,通过一些小项目积累经验。计算机这个领域很偏实践,看书上的理论是一回事,真正动手做了之后再反思自己做的东西,会对理论有更深的理解。
* 技术人攻略:为什么毕业的时候没有找开发的工作,而是进了出版社做技术编辑?
因为不是计算机专业出身的,HR那关就过不了,那会儿也没有人脉可以推荐工作,就去了电子工业出版社的博文视点,做了两年多的技术编辑,工作主要是跟踪一些技术趋势,联系作者做一些书。
也写了一些程序,根据书的销售的数据,做一些类似大数据处理的工作。当时出版社的电脑都是很普通的台式机,计算能力有限,所以用了分布式的方式来实现计算。还有就是从各个网站上抓一些帖子做数据分析。出版社离书比较近,对视野的开阔有帮助,所以感觉这段时间跟读了个研究生似的。
* 技术人攻略:后来什么时候开始真正的做开发?
在出版社的工作毕竟不是自己最喜欢做的,2010年云计算刚开始进入中国,正好有机会可以去一家美国的云计算公司做开发,于是就辞职加入了。很多人都感觉我跳槽的这个跨度很大,我自己却觉得还行,在出版社出书也是教别人怎么做Coding,如果你想把一个事儿给大家说明白的话,你自己得先明白。
搞编程这行如果不是兴趣驱动的话,永远会觉得它只是一个工具,如果非常有兴趣,就会发现很多乐趣。计算机行业更新这么快,如果只是上班工作,下班回家什么也不想,那么用不了几年就会被淘汰。我是学机械的,机械这个行业发展了几百年已经很成熟了,搞机械的人都知道本叫做机械设计手册的书,基本上你想要做的设计,所有的能拿到的标准件的尺寸,能承受的强度,查手册都能查出来。而计算机这行发展才几十年,没有这样固定的模式,如果没有很强兴趣驱动,很快就会落后。
“云计算这块遇到的主要问题不是编程,而是运维上的问题,更多考虑的不仅仅是性能,还包括如何保证稳定性。”
技术人攻略:在工作中遇到最大的挑战是什么?做云计算的难点在什么地方?
挑战最大的是在China Cache工作的时候,要从头到尾搭一套以KVM为基础的云计算平台。当时考虑过OpenStack,但当时OpenStack的架构还不够成熟,在跨数据中心部署的情况下会有一些安全性的问题。所以后来完全重新写了一套,通过这个挑战在技术上成长得很快。
云计算这块遇到的主要问题不是编程,而是运维上的问题,更多考虑的不仅仅是性能,还包括如何保证稳定性。为客户提供服务,程序要写得很严谨,系统在应用一些配置的时候,要设计如果失败的话回退怎么办;另外要考虑稳定性的因素,因为中国的网络环境不是太好,在公网上跑一些东西的时候,大网抖动一下,或者某个数据中心到一个核心节点的链路不是很好,导致一些数据连接的中断,怎么能重建连接,怎么自动做一些重置,怎么保证集群的稳定性,程序必须具备自动诊断、自动恢复的功能。纯Hadoop那套东西全在内网,不用考虑网络环境的问题,云计算的服务器都在公网上,怎么向服务器发送一些消息,服务器怎么保证消息能收到,这些是需要积累经验的,好多经验也都是四处碰壁碰来的。
另外一个难点就是对知识面的要求很高,做IaaS****要让整个数据中心实现自动化,需要了解包括服务器、交换机、网络、存储,并且这几部分如何整合起来,作为一个服务对外提供。云计算的运维不是简单的会用Linux,不仅是做一些维护性的操作,还要和开发一起讨论整个系统的物理架构是什么样的,交换机的配置是怎么做的,网络是怎么搭的。因为牵扯到太多的系统,所以对于运维的要求非常高,出问题原因有可能是系统的bug,也有可能是数据中心的网络等,怎么去快速的定位、解决问题,有很高的技术含量。对于一个复杂系统来说,想了解哪儿出了问题,复杂度不亚于给人看病,而且有时候并不简简单单是一个问题,可能是好几个地方的故障引发的导致严重问题。
* 技术人攻略:云计算时代的开发和运维工作是不是会更紧密的融合?
我自己很喜欢学习一些运维自动化的东西,可以开拓视野。做后台系统的工程师很有必要多了解一些运维知识,因为做出来的系统一方面是给业务人员用,另外一个潜在的客户就是运维团队的同事。如果运维在部署系统的时候觉得吃力,可想而知这个系统写得有多糟,如果运维不部署你的系统,系统一点意义都没有。开发在搭测试环境的时候,其实相当于做了一部分运维的事儿,这个过程中开发工程师可以想想用什么方式让它变得更简单。还有就是自动化部署,用自动化工具来做重复性的工作,这样可以保证持续Release,增强工程师的满足感,另外也可以降低出错的几率。如果能达到Devops的效果更好,就是开发运维化、运维开发化,这两个团队其实是一个团队了。
运维其实挺苦逼的,干好了没人说你好,稍微出点错就挨骂。越牛的运维越是拿钱砸出来的,如果没摔过跟头,就不可能知道地上哪儿有坑。有的公司对于运维犯错这个事儿的思路不太对,运维捅一大篓子,就把人开了招新人,但新人更有可能犯错,而老人不太会犯同样的错误。运维对于产品来说很重要,能不能让系统不出大问题,出了问题之后能不能很快恢复。就跟军队一样,养兵千日用兵一时,但是很多公司没有把运维当军队,就当扫地的使。
* 技术人攻略:你现在所在的这家公司是云计算领域的创业公司,你对现在云计算创业的市场环境怎么看?
现在云计算创业这块创业的人多了,快到了当年大批量上团购的阶段。技术含量也已经被压了下来,因为OpenStack的开源架构已经很成熟,很方便就能搭出一套云平台,整个行业对云计算的接受程度也越来越高。
不过我们公司的系统完全是自己搭的,一方面因为之前在云计算这块积累过很多经验,另一方面,如果完全搭在OpenStack的环境下,会受限制,并且二次开发的工作量也不小。OpenStack****像一个大而全的东西,用起来比较复杂,如果自己做,基于自身的业务特点做技术选型,可以把事情做得更专业,运维起来也更容易。OpenStack的UI界面做得不够好,需要二次开发,做跟自己业务相关的一套东西。如果不用社区做的一键化部署工具的话,OpenStack对运维也很不友好,需要配置的东西太多。
我们公司提供的服务目前还是主要是基于IaaS这层,主要面向游戏客户,对他们来说采用IaaS更灵活,因为已经积累了一些规则、业务运营模式和系统,用PaaS的方式他们也不一定能接受。
“打个比方,如果你了解的语言特别多,等于是在周游世界;如果对某个语言了解得很深,就类似于把北京城每一个角落都去了一遍。因此,当见识过很多东西,对其他语言设计的理念有了解之后,你的视野就变得更开阔了。”
技术人攻略:在开发语言的选择上你有什么倾向和建议吗?
语言我用得挺杂的。在语言选择这块,我倾向于会得越多越好。打个比方,如果你了解的语言特别多,等于是在周游世界;如果对某个语言了解得很深,就类似于把北京城每一个角落都去了一遍。因此,当见识过很多东西,对其他语言设计的理念有了解之后,你的视野就变得更开阔了。当然对初学者来说,还是应该先对某一门语言了解到一定程度之后,再拓展到其他编程语言会比较好。不同的语言在处理一些特殊的情况下,有不同的做法,例如同样实现一个根据配置调用不同代码处理数据的功能,Java和Python的实现方式就会不一样,Java会用到接口和工厂类,动态语言则可以直接根据配置拼出一个函数名调函数。不管用什么语言,目标就是把问题解决了,根据不同的情况选择适合的语言。对创业企业来说,用Java搭一套Web界面的人力成本和时间成本远高于用ROR,所以语言选择不在于技术本身,跟时间、成本都有关系。
* 技术人攻略:如果不考虑工作的话,你想开发什么东西?
比较感兴趣的还是做一些智能家居的东西,搞一些软件和硬件结合的事儿,例如可以通过iPad控制家里的洗衣机、冰箱等。我个人对硬件还是有点兴趣,计算机不能只停留在一个方盒子里,得让他出来。有的人担心技术的发展会带来更多的问题,我举个航空工业的例子,飞机的自动驾驶系统发明以前,空难的问题主要是人犯的错误所带来的,自动驾驶系统发明之后虽然有时候会失灵,但可以在有问题的时候切换回手动,技术很多时候是有两面性的,不能因此否定自动驾驶系统对航空工业发展所起到的作用。
* 技术人攻略:有没有你特别欣赏的人或者公司?
每个人都有他自己的优点,闻道有先后,术业有专攻,在一线做Coding的人应该保持谦虚的心态。
* 技术人攻略:你做技术编辑的时候看了不少书,能不能推荐一些有价值的书?
我觉得看书是一个过程,不是说看了几本书,就能把计算机领域的东西弄得很清楚了。而且计算机有很多不同的领域,不是你都看过一遍就行了,这几个领域之间有先后的顺序,如果不了解最初的CPU长什么样,直接看Intel的CPU手册就跟看天书差不多。任何东西都是循序渐进演化过来的,最重要的是本质上的那些东西,例如CPU再怎么演化也不会逃出冯诺依曼的架构。
很多学计算机的人对单片机了解不多,单片机可以理解为x86架构的一个鼻祖设计。如果你写一个程序,用现在的编程语言足够解决问题的话,没必要看硬件的东西,但如果想提升你的知识,了解操作系统到底怎么干活、硬件总线之间的寻址是怎么工作的,那么推荐有精力的人看看8051和数字电路。计算机是以数字电路为基础的一门学科,逐渐发展过来,****CPU****看似很复杂,但还是从门电路演化过来的,如果学过数字电路,了解怎么设计加法器、单片机,用单片机做一些小的设备,对你了解计算机会有很大帮助。
编程方面的书,推荐《Java编程思想》,看了这本书之后,会提升对面向对象和java类库的了解。看书应该边看边做,做得差不多的时候再去想,想完之后回来再去看一些东西,在这么一个闭环的过程中逐渐进步。
技术人攻略访谈是关于技术人生活和成长的系列访问,欢迎和我们有共同价值观的你关注“技术人攻略”,邮箱 devlevelup@gmail.com,新浪微博 @devlevelup,希望能成为技术人成长的精神家园。
欢迎通过微信公众账号关注技术人攻略
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/25122.html
摘要:导语本期访谈对象许式伟,七牛云存储,国内语言圈领军人物,社区发起人。许式伟的经历颇有传奇性,大学时就有狂外号的他,凭一份手写简历成功应聘金山,两年后成长为首席架构师,领导长达年的研发。在某技术大会的间隙,我第一次见到许式伟。 showImg(https://segmentfault.com/img/bVjLDc); 文:Gracia (本文为原创内容,部分或全文转载均需经过作者授权,...
摘要:我一直认为运维工程师就是让跳舞的人,当我操纵几百台机器,整齐划一地做一件事情,那种感觉特别棒。技术人攻略你怎么看待,运维和开发的关系应该怎样平衡国内大家提得多 showImg(http://segmentfault.com/img/bVb66I); 技术人攻略:运维工作普遍很辛苦,你却能做得如此快乐,有哪些经验可以分享? 流程比补位更重要,方法比拼命更重要。UPYUN运...
摘要:导语本期采访对象黄允松,青云创始人及。作为一个纯粹的工具理性主义者,黄允松致力于打造优良的工具,大幅降低的复杂性,让一切变得更加平滑和简单,这是他让世界变得美好起来的方式。 showImg(http://segmentfault.com/img/bVbYfe);文:Gracia 摄影:周振邦(本文为原创内容,部分或全文转载均需经过作者授权,并保留完整的作者信息和技术人攻略介绍。) ...
阅读 1766·2021-10-19 13:30
阅读 1334·2021-10-14 09:48
阅读 1530·2021-09-22 15:17
阅读 2006·2019-08-30 15:52
阅读 3272·2019-08-30 11:23
阅读 1982·2019-08-29 15:27
阅读 886·2019-08-29 13:55
阅读 752·2019-08-26 14:05