Miller(A8):在运维道路上,我的切身体会比较多,简单总结一下主要有以下几点:
1、坚定的目标
目标是职业生涯远处的灯塔,它能冲破迷雾,让你在迷惘中坚定信念和方向。要想成为一名优秀的技术专家就要牢牢树立你的目标,持之以恒,每天一点一滴地前进。
2、运维服务能力
餐饮业的海底捞以服务口碑得到顾客的认可。同样,运维人员做为支撑服务部门,也要通过服务来获得用户和业务的认同。我们要以超出用户预期的目标来为用户和业务提供服务。
可能有人要问,我们是技术人员,为什么要特别强调服务能力?我觉得技术运维的团队目标不是提供功能的业务,而应该是提供持续化的服务能力,如资源交付能力,变更能力,可用性能力,调度能力等等,让业务如同水和电一样使用我们的服务。在这些服务能力的背后需要长时间的建设和积累。
例如传统的DBA团队重在技术支持,而我们数据运维团队除了技术支持之外,提供专业的服务已经成为团队的核心目标。
在服务能力上要致力于做到超出用户预期。什么是超出用户预期?就是用户期望得到五星的服务,而你能给他们提供到六星的服务。
要获得超出预期的服务,我认为要做好以下二方面:
1)主动服务
在我们运营中心,有句口话为“服务用户、服务业务、服务自己”,也就是说在做事时要考虑,我们的服务目标是谁。我们在制定目标和方向的时候不能只考虑到自己,要把眼光放得更长,看到业务,看到用户。
这里有一个例子,业务在申请设备资源时,按部就班走硬件成本资源采购是B级服务;通过虚拟化技术把设备申请从周提升到小时是A级服务;在虚拟化技术之上通过调度能力保证业务上线后,能根据实际流量实现人工或自动化的资源伸缩,即节省了成本,提高业务部署速度,还提升了运维能力,这就是S级超出预期的服务。
2)提供超出预期的服务,还要主动站在用户角度替用户思考,给用户带来价值,实现多方共赢。
譬如我们在设计代码发布系统时应该要思考,发布系统的初步目标是减少了运维团队的工作量,同时也提升了应用团队的发布效率。但通过更深入的思考我们还会发现,如果具备灰度发布能力,我们可以做到对用户无损。发布过程中引入自动化测试,我们可以保证了应用的可用性。通过多队列服务和生产者/消费者模式,我们可以瞬间完成数千台服务器的发布,等等。做这些事情时,站在多方面来思考会让运维工作变得有价值,而不是背黑锅的角色。
3、一万小时的专业技术积累和丰富的实战
丹尼尔在《一万小时天才理论》提出一万小时定律,即要成为某个领域的专家,需要积累一万小时,如果每天工作中花在学习和实践上的时间达到4小时,那么成为一个领域的专家至少需要十年。
因此我们在工作中要善于利用时间,尽量保证20%的工作时间用在提升专业能力和运维效率方面。即使是加班时间也要把时间用在提升效率的工作上,避免加班仍是做重复性而无技术含量的事情。
“纸上得来终觉浅,绝知此事要躬行”。要把技术运用得弓马娴熟,武艺精通,就得把知识落地,应用到实践中,在工作中不断提出新想法,勇于尝试新事物,不断给自己新的挑战。
4、不断打破心理舒适期寻求突破工作到一定程度后就会进入心理舒适期,这是让人感到熟悉、驾轻就熟时的心理状态。这个时候就要勇于打破心理舒适期,从这个方面去突破自己的天花板。打破心理舒适期就要保持自我动因,譬如对技术的热爱,保持强烈的好奇心,给自己设立中长期目标,对工作和事业的自我驱动力等。
在突破的领域上,运维人员不仅只是局限于运维技术层面,在沟通表达、项目管理、业务、产品、开发等方面都要获得成长。
打破舒适期甚至要勇于跳离舒适的岗位、稳定的公司,寻求更好的职业发展平台,这样才把保证自己的价值不断获得增值,打破“IT只是吃青春饭”的悲观宿论。
5、开发能力
运维自动化有三个阶段,脚本化是第一阶段,工具化是第二个阶段,产品化是第三个阶段。运维人员要掌握开发能力,来提升运维效率,解放运维生产力。
运维的开发语言可选Python、PHP甚至C/C++等。有些优秀的运维人员可能是全栈工程师,从前端到后端,从WEB开发到后台开发都可以自己解决。
除了开发能力,运维人员还要深入了解运维需求和业务需求,规划设计具有前瞻性的运维产品,用产品的理念来做运维系统。优秀的运维系统需要具备出色的用户体验,并通过模块化、松耦合的设计,方便其他工程师在平台上的二次开发,以提升运维开发效率和运维效率。好的运维产品可以开源出来,回馈业界,为外界弱小的运维团队提供更大的帮助以及贡献度。精通开发还便于理解业务,和开发一起共同推动业务架构的优化,成为开发的紧密合作伙伴。
具备开发能力还可以让运维工程师掌握进入系统内部的钥匙。运维工程师通过阅读Linux内核源码、MySQL源码或者Redis源码等,能更深入掌握操作系统、数据库和网络框架等服务的运行机制,根据业务特点改写功能特性,使之更能符合业务需求。好的特性还能回馈提交社区,以结合到下一个版本中。