运维工程师是干嘛的
627
运维工程师(Operations),负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体的ROI。运维工程师最基本的职责都是负责服务的稳定性,工作主要有安装调试软硬件,根据不同开发项目配置服务器软件,监控等事情。
1、职责
运维工程师最基本的职责都是负责服务的稳定性,保障并不断提升服务的可用性,确保用户数据安全,提升用户体验。通过技术手段优化服务架构、性能调优;通过资源优化组合降低成本、提升ROI。负责参与并审核架构设计的合理性和可运维性,以确保在产品发布之后能高效稳定的运行。
无论做什么运维,运维工程师最基本的职责都是负责服务的稳定性,确保服务可以7*24H不间断地为用户提供服务。在此之上运维工程师的主要工作职责如下:
- 质量:保障并不断提升服务的可用性,确保用户数据安全,提升用户体验。
- 效率:用自动化的工具/平台提升软件在研发生命周期中的工程效率。
- 成本:通过技术手段优化服务架构、性能调优;通过资源优化组合降低成本、提升ROI。
从产品的生命周期来看:
- 产品发布前:负责参与并审核架构设计的合理性和可运维性,以确保在产品发布之后能高效稳定的运行。
- 产品发布阶段:负责用自动化的技术或者平台确保产品可以高效的发布上线,之后可以快速稳定迭代。
- 产品运行维护阶段:负责保障产品7*24H稳定运行,在此期间对出现的各种问题可以快速定位并解决;在日常工作中不断优化系统架构和部署的合理性,以提升系统服务的稳定性。
2、工作内容
运维的工作性质主要还是维持运行的平稳和高效,工作主要有安装调试软硬件,根据不同开发项目配置服务器软件,监控等事情;相对开发来说更加偏向操作系统或数据库;而开发的偏向于开发软件和一些中间件,数据库和系统一般就由运维的人把关 。
在软件产品的整个生命周期中运维工程师都需要适时地参与并发挥不同的作用,因此运维工程师的工作内容和方向非常多:
- 事件管理:目标是在服务出现异常时尽可能快速的恢复服务,从而保障服务的可用性;同时深入分析故障产生的原因,推动并修复服务存在的问题,同时设计并开发相关的预案以确保服务出现故障时可以高效的止损。在这方面主要工作内容有:
- 问题发现:设计并开发高效的监控平台和告警平台,使用机器学习、大数据分析等方法对系统中的大量监控数据进行汇总分析,以及在系统出现异常的时候可以快速的发现问题和判断故障的影响。
- 问题处理:设计并开发高效的问题处理平台和工具,在系统出现异常的时候可以快速/自动决策并触发相关止损预案,快速恢复服务。
- 问题跟踪:通过分析问题发生时系统的各种表现(日志、变更、监控)确定问题发生的根本原因,制定并开发预案工具。
- 变更管理:以可控的方式,尽可能高效的完成产品功能的迭代的变更工作。在这方面主要工作内容有:
- 配置管理:通过配置管理平台(自研、开源)管理服务涉及到的多个模块、多个版本的关系以及配置的准确性。
- 发布管理:通过构建自动化的平台确保每一次版本变更可以安全可控地发布到生产环境。
- 容量管理:在服务运行维护阶段,为了确保服务架构部署的合理性同时掌握服务整体的冗余,需要不断评估系统的承载能力,并不断优化之。在这方面主要工作内容有:
- 容量评估:通过技术手段模拟实际的用户请求,测试整个系统所能承担的最大吞吐;通过建立容量评估模型分析压力测试过程中的数据以评估整个服务的容量。
- 容量优化:基于容量评估数据,判断系统的瓶颈并提供容量优化的解决方案。比如通过调整系统参数、优化服务部署架构等方法来高效的提升系统容量。
- 架构优化:为了支持产品的不断迭代,需要不断的进行架构优化调整。以确保整个产品能够在功能不断丰富和复杂的条件下,同时保持高可用性。
3、能力要求
运维人员的要求特别严苛,因为运维人员针对不同的问题,需要不断的补充扩大自己的知识和研究范畴。对网络设备、服务器备、操作系统运行状况进行监控,对系统和业务数据进行统一存储、备份和恢复,对企业自身核心业务系统运行情况的监控与管理,对于业务的管理。
基础技能:
- 精通shell/Python/Perl等1至2种编程语言
- 熟练掌握常用数据结构和算法,并能灵活运用
- 熟悉网络基础知识
- 深入理解Linux操作系统
加分技能:
- 熟悉开源的监控平台工具,比如:Ganglia、Nagios、Zabbix等
- 熟练掌握Shell脚本熟悉Awk、Sed等基础工具
- 熟悉分布式计算或者存储系统,比如Hadoop/Hbase/Storm等
- 熟悉机器学习原理能付诸实践者更佳
- 熟悉TCP/IP、HTTP等网络协议,精通socket网络编程
软素质要求:
- 强烈的责任心与主动性,对所负责工作有owner意识,并能自我驱动成长
- 能承担较大工作压力,有较强独立分析、解决问题的能力
- 工作中需要胆大心细,具备探索创新精神