CU访谈录30期:版主duanjigang讲述如何将自动化运维从“猛兽”变为“利器”

2021-11-11 00:00:00 开发 学习 工作 自动化 工具


ChinaUnix:各位网友大家好,今天给大家带来的采访是大家都很熟悉的老朋友duanjigang。段兄,相信社区的人对您已经很熟悉了,但是还有一些新人对您不是很了解,您先简单介绍一下自己吧。
duanjigang:大家好,我叫duanjigang,微博是:贺兰云天雪。2005年毕业于西安电子科技大学,毕业8年的前五年主要从事windows/linux下软件开发工作,集中在内网监控,网络安全产品方面。11年至今在淘宝网从事运维/开发工作,对服务器agent程序比较熟悉,linux系统上rpm/yum服务运维具有一些经验。在CU注册也已经有8个年头,曾经活跃于 linux环境编程,linux内核板块,目前主要负责“架构设计”板块的建设,欢迎大家来该板块讨论学习。

ChinaUnix:能不能简单讲讲您的运维经历?
duanjigang: 我曾经对同事说过:我是个不合格的开发人员,又不是个正经的运维人员。因为自己感觉在开发领域,经验还不够丰富,知识也不够宽广和深入;而在运维领域,不到3年的经验也是很稚嫩的,而且时常都在闷头写代码,所以说不是正经的运维人员。
开发的经历就不说了,自从11年进入运维行业后,前1年基本上都在开发服务器agent程序,开发了半年后,推倒重构,在同事的热心帮助下,两三个月后第二版
开发完成并且测试正常,时至今日,虽然公司没能够选择我开发的agent(可能是宣传力度不够的原因),个人还是在很多运维工作中坚持使用该工具,并且把它介绍给
其它部门的同事使用,这也是运维2年多来我自认为比较有成就的一个东西,希望在不远的将来,能够将该工具开源出来。
然后运维第二年,agent开发完了嘛,就要在大面积的服务器上部署了,一开始压根不知道怎么部署,后来在同事的推荐下,采用rpm的方式来安装,由于当时(11年底)对 rpm/yum 的知识基本为零,为了把自己开发的“强大”的程序部署到所有服务器,就花时间对rpm/yum进行了学习,并且对公司的yum/rpm系统进行了研究。
“有心栽花花不开,无心插柳柳成荫”这话说的太对了,我开发的agent没有推广开,但是为了部署agent而学习的yum/rpm知识却把我带入到了集团软件管理服务(rpm/yum)的工作中,由于公司部门合并,加之原来负责yum维护的同学离职,转岗,我就结下了集团yum维护整合这个“烫手山芋”,既然上天如此安全,那就显然接受吧。于是,在12年到13年,大多数时间在从事软件管理服务的维护工作,期间也许学习了不少这方面的专业知识。
近大半年在从事云计算平台的运维工作,还没啥经历可谈。

ChinaUnix:能不能说说在Linux下有哪些运维工具是让您感觉特别好用的,或者说,运维工作中需要掌握哪些技能/工具?
duanjigang: 在运维领域,大多数公司都在做agent,南总(南非蜘蛛)曾经做过sagent,我们公司内部也在用一个名为(s*agent)的东西,为了凑热闹或者“彰显实力”(玩笑),我也做了一个运维agent,基于标准C语言开发的,名为cmos,个人认为这个工具还不错,目前在筹划开源过程中,该工具能够支持日常的监控和业务功能需求。
对puppet等工具实在不了解,就列举下我在运维工作中经常用到的一些命令吧,相信从事运维的同行都也熟悉这些命令:文件/数据传输/同步:rsync,scp,其中rsync是一个很值得研究的利器,个人曽在一段时间内对其源码进行了部分阅读和修改,很适合学习。http/ftp下载工具:wget,curl和axel,这三者各有其特点,我们在架构版做过精彩的源码分析,大家可以去学习下。数据库:mysql,pgsql,sqlite和oracle,个人觉得对于运维人员来说,这几种数据库不必要精通,但起码要会用,能够亲自开发一部分代码进行数据库的操作更好。
linux内核:/proc文件系统,内核模块这些,应该是必备的技能要求。日常使用:find,grep,sed,awk等,个人目前的shell脚本技能中,80%集中在awk的使用中,我开发的脚本中,基本上没用不用到awk的。在开发语言方面,个人从事过6年的c/c++开发,期间对shell,js,ruby和python也略有了解,水平停留在照着例子修改代码的地步,对于运维人员来说,python应该是使用广的语言,当然,如果有时间和精力,我还是喜欢用C去开发的。

ChinaUnix:您对运维工作自动化是如何理解的?您认为自动化的技能/意识对于运维的重要程度如何?
duanjigang: 关于运维自动化:个人觉得自动化工具既是利器,又是洪水猛兽。
首先,大量的服务器和繁杂的业务系统,不可能靠人肉的方式去一点点运维了,需要自动化工具来协助运维人员进行高效的管理工作,这也是运维工作的发展趋势。另外,自动化工具又是我们驯养的猛兽,如果使用不当,就可能对企业带来毁灭性的灾难,因为,自动化工具经常是从一台机器,一个按钮发送指令,触发成千上万台服务器/平台运转,如果数据有差错,或者工具出现bug,带来的损必定是巨大的。所以,个人觉得,在自动化运维工作中,一定要介入必要的人工检查工作,在发布,任务执行工作中,一定要引入备份,灰度发布的理念或者意识。运维自动化不可缺少,而又必须投入大量精力去掌握,了解和反思。

ChinaUnix:目前是一个云计算的时代,云环境下的IT运维自动化有什么不同呢?
duanjigang: 在云计算时代,大家都在积极把核心业务/产品迁移至云平台中,因此,客户的命运与云计算平台的稳定性是绑定在一起的。可以简单用一句话来表达我个人的观点:云计算这个新兴的技术/产业,对于各个提供云服务的公司来说都是机会,对使用到云产品的客户来说更是关系到身家命运,因此,(自动化)运维工作一定要慎重,可靠。

ChinaUnix:您推荐运维人员可以通过哪些资源、渠道来学习有关自动化方面的经验知识?
duanjigang: 在技能学习方面,需要多读一些官方文档,如果要精通,就需要去阅读一些工具的源码。在运维架构的能力提高方面,建议多参与一些民间/官方组织的讲座和分享活动,比如IT168组织的每年一次的数据库大会和架构师大会,在这些分享中,你能够能够接触到各个行业的牛人,可以学习到他们(公司)的宝贵经验,了解前沿的产品和理念。在自身能力提高方面:尽量多反思,总结,个人提供的谏言是:多学习,多思考,多实践,多总结。

后,在linux系统运维方面,向大家推荐我刚出版的一本书籍《Linux软件管理平台设计与实现》:这本书算是对我学习linux软件管理过程和经验的总结,书中从零开始讲起linux软件包的概念,软件管理工具,服务,到后的软件管理平台构建和实现。很适合对linux工具开发/软件架构设计感兴趣的同行和系统运维人员阅读和参考。欢迎大家购买阅读这本书籍,并且使用我在 github上 提供到的这套软件管理工具,更希望收到大家关于该书和工具的反馈,谢谢!

相关文章