快意IT江湖20年,砥砺运维开发之心得

AidaEscamil 8年前
   <p>二十年,是一个什么概念?</p>    <p>对于中国互联网,过去二十年是个从无到有并且不断完善的时期。自1994年中国科学院高能物理研究所设立第一个国内Web服务器之后,互联网开始走进大众生活,1996年底互联网用户达到10万,2016年目前我国网民规模达到7.12亿。这二十年间,网民规模增加了7000倍,中国的网络使用普及率达到51.7%。这个数字,比全球平均水平高3.9个百分点,比亚洲平均水平高10.1个百分点。</p>    <p>而对孙虎先生,过去二十年里他一直在IT领域工作,目前是1号店的平台保障部总监。从最初在银行工作,再辗转蓝点、腾讯和盛大,到现今的1号店,在这二十年的大环境发展中,他见证并经历了许多;从技术新人变成团队leader,他积累了丰富的运维、研发和管理经验。“好日子,慢慢过”是孙虎先生的个人签名。那他怎样看待过去的这二十年,这些好日子他是怎么度过的?回望过去,他对个人、对职场生涯和对行业的心得有哪些希望和大家分享?带着这些的问题,InfoQ与孙虎先生进行了采访沟通,并将文稿整理如下。</p>    <p><strong>技术生命线之简单回顾</strong></p>    <p>我1996年参加工作,在银行系统从事系统管理和软件开发工作,从那时开始便和运维开发结下了不解之缘。 最早的这三年多时间算是打基础的阶段,在银行系统,从事对数据库、unix系统相关的运维和开发。</p>    <p>2000年我独自到深圳闯荡,先后在蓝点、腾讯等公司从事研发工作。 在蓝点属于技术提升阶段,主要深入了解Linux和网络,研发一些网络安全相关的产品。 腾讯工作则拓展了视野,工作上涉及对海量用户IT系统的架构设计、运维开发,这个阶段接触到不少和海量用户、数据打交道的项目。另外,我很喜欢腾讯的人文关怀,也努力将这种氛围带到其他地方。</p>    <p>在深圳工作10年后,我于2010年携家带口来到上海盛大。 除了从事基础服务和运维的研发外,也负责POI、数据等运营。对于这个阶段最大的体会是好的机会需要坚持,当时做过的旅游、LBS、O2O等产品都挺不错,但转变方向太快, 如果能坚持一两年,收益会非常可观。</p>    <p>2012年8月来到与盛大同在张江的1号店,开始创建运维开发团队,经过不到四年的发展,1号店私有云从无到有从小到大,运维开发团队从2、3人发展到近20人,一粒种子成长为小树。 现在我的团队是平台保障部,整个部门除了实现平台研发工作:为公司提供运维自动化、SOA基础架构和办公自动化服务外,还需要负责全公司的监控、质量保障、测试、应急处理等。平台保障部属于一个大部门,我负责的部分包括下面绿色框线中部分:</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/5b053dfb573063739843079451702479.png"></p>    <p>除了这几块具体业务,我还负责包括应急指挥中心(一个虚拟团队,由值班员、值班经理、系统咨询、架构、各业务组成)和演练,近期开展了交换机切换、大促缩容、流量切换等演练,目的是通过演练发现潜在的问题,让我们的业务更加健壮。</p>    <p><strong>从无到有建立运维开发团队</strong></p>    <p>回想2012年8月刚到1号店的时候,除了一款被吐槽的发布系统,没看到什么运维工具,大家运维得很辛苦:发生问题三更半夜起来处理是家常便饭,不光是运维同学出面,而是各团队都要来参与处理;人多情况比较乱,大家的意见也各不相同,半夜里有的要求回滚,有的凭经验要重启应用,有的建议查看DB。</p>    <p>当时做发布系统的同学刚离职,负责维护的两位同学也感到很迷茫,其中一位刚毕业一两年,感觉玩不转了。发布一次之后发生故障概率很大,有时出了问题回滚,居然回滚了几个小时,结果大家宁愿手工发布也不愿意用发布系统。</p>    <p>虽然是一头黑线,但是也要上啊。 我花了几个通宵时间,把发布系统所有的问题汇总并且归类,包括发布系统自身的、业务的、操作的等类别,然后和各个对应的团队沟通改进方案, 内部也就DevOps的理念进行交流引导。为什么要需要各个团队的参与?因为如果发布不够高效稳定,受到影响的包括运营、研发、测试、产品、运维各个团队,最终会严重影响业务的正常运转和特性的快速迭代。最后通过各团队的一致行动,我们终于在两周多的时间内稳定了发布系统,也就奠定了现在的运维开发团队。</p>    <p>当时还没有私有云的样子,在监控选型上也有些不同意见,有的希望完全自研,有的要求不要给业务研发看到,有的认为只要用开源的即可。 结合当时的人员状况和公司的实际,我采用了开源+少量自研的方法,并倡导全员监控的理念,得以在较短时间让各团队都用上了方便的监控。 有了发布、监控能力之后,对基础数据的要求越来越高,领导对我们的支持力度也在加大,我们得以有机会开始建设私有云的第一个版本,涵盖CMDB、装机、发布、监控、配置管理等。 随着产品越来越丰富、用户越来越多,我们开始了对各产品进行优化美化,通过API方式打通内外平台系统,逐步发展成了现在的乐道云平台。 我们选择乐道这个名称,有三个含义:快乐运维之道、安贫乐道、津津乐道。</p>    <p><img src="https://simg.open-open.com/show/ba2b4800e61dc3e0ce2ac154025df8e3.png"></p>    <p>目前1号店的技术团队大约1000人规模,为全国几千万用户的购物提供强大技术架构、研发和运维服务。 我负责的运维开发团队有20人,与其他团队密切配合(运维、研发、架构等),高效管理上万台设备的平稳运行。其他团队主要是运维自动化的需求方,我们会按照业务的紧急重要程度安排需求的深入沟通、设计、快速原型和迭代。</p>    <p>这四年坚持做运维开发工作,恰好赶上电商和云计算的高速发展阶段,加上领导和团队的支持,所以取得了一点成绩。我期待未来能在云端化和智能化上做出更多有益的产品。</p>    <p><strong>最有成就感的是带过的那些团队</strong></p>    <p>说一个20年前对我触动很大的事情:当时在银行系统工作, 领导对我说“领导就是服务”。当时我不太理解,但是在有了一定工作经验后,我越来越认可这一观点。团队里每个人都是我服务的对象,遇到问题领导要冲锋在前,遇到奖励让最有功的同学上,遇到黑锅我来,甚至还要检查下还有没多的锅?都给我压上。 需要什么资源我会尽量争取,短期争取不到的我也始终惦记着。想方设法为团队谋些福利,多让团队做出些有价值的产品,提升成员的成就感。“领导就是服务”这句话现在算是深入骨髓了,要感谢当时的领导:黄昌云行长。</p>    <p>现在带领团队,我很注重快乐高效与成长,实际上每个人有自己的优势与长处,我会努力创造一个好的环境,让每位成员各司其职、各尽其能、各得其所。</p>    <p>我非常喜欢“好日子,慢慢过”这句话,这也慢慢成为了团队名言。我的观点是工作要快,事情尽量做在前面,高效高质量研发;但生活要放慢,我们周末在家陪宝宝讲故事,在阳台品茶看书听音乐,在餐桌全家人共度快乐时光。 平时如果看到团队成员加班,我会要求他/她早点回家,未来需要的是健康体魄创造性思想,而不是代码工人。</p>    <p>如果问我这些年的工作什么最令我有成就感?是我带过的团队,他们都有着共同的特点:快乐、高效、稳定、战斗力强。</p>    <p><strong>技术生涯发展的几点建议</strong></p>    <p>这里想先讲讲我早年的一个经历。那时是在腾讯刚接手快速Tips项目,即大家看到的QQ弹窗,项目交接的前任同学刚刚因为事故受到了处罚。他好心提醒我,尽量少接需求,以免重蹈覆辙。 一方面,我对腾讯制度的完善受到触动,事故的各类惩处会一级级追究到VP;另一方面,我却认为少做事不是解决问题的办法。于是,我快速开发了一个测试后台,无论谁想测试弹窗,可以直接使用,而且影响范围可控。最后,这样的方案既能方便各团队用新产品,又不会引发事故。 所以我现在在1号店的团队也建立了内部的奖惩制度,甚至包括涉黄也有惩处,方便积累活动经费。同时建立私有云平台,让各个团队可以方便地发布、监控、查看日志等,为业务团队高效研发创造良好的环境。</p>    <p>举这个经历为例子,是为了说明技术人应该怎样看待和处理公司的项目需求。少做事情一不能响应业务需求,二也失去了锻炼自己的机会。要通过思考和努力,在尽可能的范围内,完成工作保证质量。如果给出一个广泛性的建议,那就是遇到困难问题,主动想办法解决,对每个职场人的发展都大有裨益。一个人职业的发展过程,伴随着解决的问题越来越大、越来越难,如果解决的问题千篇一律甚至越来越简单,那很有可能是职业道路越走越窄。</p>    <p>再具体一点,对于处在技术生涯中不同阶段的技术人,发展侧重点略有差别。 对于刚刚入行的技术新人,要重视打基础的这个阶段,无论是什么规模的公司,我建议:</p>    <ol>     <li>多思:为何这样设计、实现,能带来哪些益处,会有什么问题。</li>     <li>多做:别让自己闲下来,多做事没坏处,哪怕短期没有直观的收益,“风物长宜放眼量”。</li>     <li>沟通:及时回复,及时更新进度,有困难的确难以解决时及时寻求帮助。</li>    </ol>    <p>还有一点,有个能带着你一起成长的团队和老大,很重要。</p>    <p>工作三到五年之后,要保持学习和发展。还有,就是要评估下是否达到了职场发展的瓶颈,我建议从下面四个维度进行考虑:</p>    <ol>     <li>空间:自己在团队中的位置,公司在行业中的位置,行业的发展情况,综合出可以预见的发展空间。</li>     <li>简历:每半年更新一下自己的简历。不是鼓励大家频繁跳槽,而是通过这种方式,我们可以检查过去半年有没有成绩和进步。</li>     <li>持续性:马上可能面临组建家庭等问题,现有的工作生活与学习方式是否可持续,如果不可持续如何调整。</li>     <li>目标:我们离长期目标是更近了吗?有没有更好的途径、方法确保目标的实现?</li>    </ol>    <p><strong>关于加班这个话题</strong></p>    <p>对于加班,我个人的看法是:如果是自己为了成长或业务,主动加班,很好,也是职业精神所在;但是如果只是被动加班,被不成文的规定、文化束缚,被不合理的进度限制,我不赞成。</p>    <p>作为知识工作者,如果不能留出思考时间,不能留出精力来发展业余爱好,不能在运动场上锻炼体魄,不能和朋友知己交流经验,长期来看一定是难以持续的。</p>    <p>的确,在这个时代,技术人很吃香。尤其是在一些人文关怀比较到位的公司,除了薪资不错,福利待遇也挺好。不过我们的梦想更重要,如果梦想和稳定冲突,我建议还是选择梦想:只有做真正喜欢的事情,才不枉此生。当你的职业就是你的梦想的时候,你会发自内心地热爱工作的时光。</p>    <p><strong>我看IT的发展及未来</strong></p>    <p>结合这二十年工作,对于行业环境的发展,我能感受到的四个方面:</p>    <ol>     <li>硬件:内存从几M到几G,硬盘从几百M到几百G。别说磁带了,连当年常见磁盘都已经找不到了。</li>     <li>编程语言:可能现在很少有人知道Cobol啦,以前在银行可是很吃香的。C语言还是历久弥新,而Python、JS等变得越来越热门。</li>     <li>网络条件:从几十K的猫,到现在家里100M光宽带和手机4G,不可同日而语。</li>     <li>行业:这20年来热门语言和概念越来越多,不过很多基础软硬件没有什么变化。服务器是X86,运行的OS是LINUX系统,Java、PHP应用在Tomcat、Apache上跑,数据库不少仍是MySQL、Oracle,网络协议也还是TCP-IP。 变的是我们对IT的依赖程度越来越高,要求越来越严格,衍生出不少新概念新产品,如电商、电子支付、不断升级的智能手机。</li>    </ol>    <p>未来,随着软硬件和网络的进化,人们希望随时随地获得高效安全的服务。我认为会体现在如下的三方面:</p>    <ol>     <li>云端:大部分人处理事务只需要一个接入端,可能是手机、平板或建筑物的表面,随时处理公司、家庭的事务。</li>     <li>智能:很多工作外包给智能机器人,家中的智能管家负责打扫、烹饪、保安;工厂的智能机械负责流水线的运转;投资也交给智能顾问</li>     <li>安全:从买衣买书买手机,到手机转账、理财、交流,我们对安全的要求越来越高,这方面也是大有可为。 因此,IT服务的云端化、智能化、安全化将是技术发展的方向。</li>    </ol>    <p>未来的这些发展趋势,具体对应到我们运维行业人员,要跟上和引领技术的发展。首先实现运维的云端化,让各团队随时随地了解业务健康状况,便捷地构建、测试、发布;其次通过机器学习让运维更加智能,如何报警只报根源避免被现象淹没,如何自动修复典型故障,如何提前自动扩容避免事故,是我们需要探索的重要方向;最后在安全这块,除了做好运维平台自身的安全,如何帮助业务实现更好的安全,以电商为例,通过一键削峰、防CC、防黄牛等安全项目,让业务安全平稳运行。我们1号店目前研发的主要内容是私有云,有了坚实的基础,与公有云的融合也很便捷,1号店已经有多次成功实施的经验,与公有云的融合需要通过自动部署、发布、配置等,迅速将公有云与私有云打通。</p>    <p> </p>    <p> </p>    <p>来自:http://www.infoq.com/cn/news/2016/11/sunhu-20-devops-years-in-IT</p>    <p> </p>