文章目录

1.运维工程师的工作:

保障业务长期稳定运行(如网站服务器、游戏服务器等)。

保障数据安全可靠(如用户名密码、游戏数据、博客文章、交易数据等)。

随时解决报警故障。

业务程序更新。

编写一些脚本,监控或完成其他可自动完成功能。

运维架构完善,部署一些用起来更方便更可靠或性能更好的开源工具以及制定运维流程规范。

打杂,如调交换机,装系统,部署新环境等。

运维和开发是两个截然不同的方向。如果做运维的话,有开发的底子那么转岗位也不是不可以。

运维负责具体的产品线运维工作,同时也需要掌握开发的能力,深入业务,最了解业务的痛点和问题,同时研发/优化针对产品业务需求的平台、工具和手段,能够接触到各类优秀的系统架构并有能力做出优劣对比,同时对业务的掌控决定了相应运维工程师在业务发展中的作用。

2.拓展资料:

运维,这里指互联网运维,通常属于技术部门,与研发、测试、系统管理同为互联网产品技术支撑的4大部门,这个划分在国内和国外以及大小公司间都会多少有一些不同。

一个互联网产品的生成一般经历的过程是:产品经理、需求分析、研发部门开发、测试部门测试、运维部门部署发布以及长期的运行维护。

运维是一个非常广泛的定义,在不同的公司不同的阶段有着不同的职责与定位,如果以operation字面的含义去理解,认为就是敲几行操作命令的工作,那就错了。 对于初创公司,运维工程师的工作可能需要从申请域名开始,购买/租用服务器,上架,调整网络设备的设置,部署操作系统和运行环境,部署代码,设计和部署监控,防止漏洞和攻击等等。

3.运维的职责

对于初创公司,运维部和系统部一般是合二为一的,相关工作由同一批人负责,界限可能不是很明显。大型公司对运维工作的要求更高,需要有更精细的分工,因此机房/网络/操作系统相关的底层工作分离出来由专人负责,成为系统管理部,而上层和应用产品相关的工作则由运维负责,成为运维部。以下从互联网产品生命周期和运维涉及的技术分别来看分工较细的大型互联网公司中运维工作的职责。

4.产品生命周期

运维的职责覆盖了产品从设计到发布、运行维护、变更升级及至下线的生命周期,各个阶段的职责包括:
产品发布前
这个阶段运维工程师的职责是参与设计并把有关运维准入,主要包括:
(1) 产品的业务熟悉;
(2) 产品架构设计的合理性评估,包括是否存在单点,是否可容错,是否有强耦合等,同时需要提供产品设计的合理性建议以使产品能够满足上线发布并稳定运行的基本要求;
(3) 资源评估,包括所需的服务器资源、网络资源以及资源的分布等,同时把相关产品对资源预算申请的合理性,控制服务成本;
(4) 资源就位,将申请的服务器及基础环境/域名准备就位。
产品发布
这个阶段运维工程师负责发布的具体工作,将具体的软件和系统/硬件资源整合形成产品并对外提供服务。
对于已在线服务的更新也属于发布范畴,这个时候的产品发布一般要保障在线发布,在不中断对外服务的情况下完成产品的升级。对于大型复杂的变更也存在中止服务部署完成后再重新提供服务的情况,但这种情况需要运维工程师通过尽可能的技术手段来避免。
产品运行维护
这个阶段的主要工作包括:
(1) 监控:对服务运行的状态进行实时的监控,随时发现服务的运行异常和资源消耗情况;输出重要的日常服务运行报表以评估服务/业务整体运行状况,发现服务隐患;
(2) 故障处理:对服务出现的任何异常进行及时处理,尽可能避免问题的扩大化甚至中止服务。这之前运维工程师需要针对各类服务异常,如机房/网络故障、程序bug等问题制定处理的预案,问题出现时可以自动或手动执行预案达到止损的目的。除了日常小故障外,运维工程师还需要考虑产品不同程度受损情况下的灾难恢复,包括诸如地震等不可抗力导致大规模机房故障、在线产品被删除等对产品造成致命伤害的情况。
容量管理:包括服务规模扩张后的资源评估、扩容、机房迁移、流量调度等规划和具体实施。
产品性能/成本优化
产品对外提供服务最重要的一点是用户体验,用户体验中非常重要的是产品的可用性和响应速度。而如何用最合理的资源(如机器、带宽等)支持产品提供高可用和高速度的用户体验,这也是运维工程师的重要职责。
产品下线
发展良好的互联网产品将始终在线对外提供服务,但互联网产品快速迭代,也存在相当多孵化的产品最后被淘汰的情况,这些产品都需要做下线处理,这个过程运维工程师主要做好资源回收的工作,将机器/网络等资源回收后纳入资源池中供其它服务使用。

5. 运维技术方向

产品的整个生命周期里运维的职责重要而广泛,但运维工程师们的职责不仅限于这部分工作,还需要总结工作中遇到的问题,抽取出相关的技术方向、研发相关的工具和平台以支持/优化业务的发展并提高运维的效率,相关技术工作主要包括:

  • 服务监控技术:包括监控平台的研发、应用,服务监控准确性、实时性、全面性的保障
  • 服务故障管理:包括服务的故障预案设计,预案的自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提高产品的稳定性
  • 服务容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工作
  • 服务性能优化:从各个方向,包括网络优化、操作系统优化、应用优化、客户端优化等,提高服务的性能和响应速度,改善用户体验
  • 服务全局流量调度:接入服务的流量,根据容量和服务状态在各个机房间分配流量
  • 服务任务调度:服务的各种定时/非定时任务的调度触发及状态监控
  • 服务安全保障:包括服务的访问安全、防攻击、权限控制等
  • 数据传输技术:包括p2p等各类传输技术的研发应用,也远距离大数据传输等问题的解决
  • 服务自动发布部署:部署平台/工具的研发,及平台/工具的使用,做到安全、高效的发布服务
  • 服务集群管理:包括服务的服务器管理、大规模集群管理等
  • 服务成本优化:尽可能降低服务运行使用的资源,降低服务运行成本
  • 数据库管理(DBA):通过设计、开发和管理高性能数据库集群,使数据库服务更稳定、更高效、更易于管理。
  • 平台化的开发:类docker和google borg平台的开发管理,及服务接入技术
  • 分布式存储平台的开发优化:类google gfs等分布式存储平台的研发及服务接入

等等,凡是关系到服务质量、效率、成本、安全等方面的工作,及涉及到的技术、组件、工具、平台都在运维的技术范畴里。做好每一个技术方向、完成相应的组件、工具、平台研发都能对履行运维职责起到积极的作用,对业务的发展发挥关键影响。

6.技能和素质

运维以技术为基础,通过技术保障产品提供更高质量的服务。运维工作的职责及在业务中的位置决定了运维工程师需要具备更加广博的知识和深入的技术能力:

  • 扎实的计算机基础知识,包括计算机系统架构,操作系统,网络技术等;
  • 通用应用方面需要了解操作系统、网络、安全,存储,CDN,DB等,知道其相关原理;
  • 编程能力,小到运维工具的开发大到大型运维系统/平台的开发都需要有良好的编程能力;
  • 数据分析能力:能够整理、分析系统运行的各项数据,从中发现问题及找到解决方向;
  • 丰富的系统知识,包括系统工具、典型系统架构、常见的平台选型等;
  • 综合利用工具和平台的能力;
  • 运维工作的复杂性对这个岗位的运维工程师们的软素质也提出了要求:
  • 时间管理能力,特别是碎片化时间的处理能力;
    沉稳的心态,面对紧急情况时需要处变不惊;
  • 沟通能力、团队协作,运维工作跨部门、跨工种工作很多,需善于沟通、并且团队协作能力要强;
  • 工作中需胆大心细:胆大才能创新、不走寻常路,特别对于运维这种新的工种,更需创新才能促进发

动性、执行力,能够主动学习国际国内的运维技术,并引入到工作中,提高运维的质量和效率;

7.开展方式

业务运维工程师的日常工作包括:
监控线上的服务质量
响应异常/处理突发故障
在线发布/升级产品
和相应产品线的研发和测试协调处理产品问题
基于工作中的问题和数据分析进行抽取,将运维经验理念落地沉淀为方法论/工具/系统/平台,并制定相关的改进计划,在各个技术方向上落地实现,最终反馈回运维工作中,提高运维本身的效率和产品的价值。

8.平台工具

运维工程师使用的运维平台和工具包括:

  • Web服务器:apache、tomcat、nginx、lighttpd
  • 监控:nagios、ganglia、cacti、zabbix
  • 自动部署:ansible、sshpt、salt
  • 配置管理:puppet、cfengine
  • 负载均衡:lvs、haproxy、nginx
  • 传输工具:scribe、flume
  • 备份工具:rsync、wget
  • 数据库:mysql、oracle、sqlserver
  • 分布式平台:hdfs、mapreduce、spark、storm、hive
  • 分布式数据库:hbase、cassandra、redis、MongoDB
  • 容器:lxc、docker
  • 虚拟化:openstack、xen、kvm
  • 安全:kerberos、selinux、acl、iptables
  • 问题追查:netstat、top、tcpdump、last

广义上所有开源的软件都是运维工程师会使用到的平台和工具,同时也包括运维各个技术方向上自行研发的各类平台。

9.运维行业前景

  • 从行业角度来看,随着中国互联网的高速发展、网站规模越来越来大、架构越来越复杂,对专职网站运维工程师、网站架构师的要求会越来越急迫,特别是对有经验的优秀运维人才需求量大,而且是越老越值钱。
  • 从个人角度,运维工程师技术含量及要求会越来越高,同时也是对公司应用、架构最了解最熟悉的人、越来越得到重视。
  • 互联网运维是一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,给运维工程师提供了一个很好的个人能力与技术的发展空间。
  • 运维工作的相关经验将会变得非常重要,而且也将成为个人的核心竞争力,优秀的运维工程师具备很好的各层面问题的解决能力及方案提供、全局思考的能力等。
  • 由于运维岗位所接触的知识面非常广阔,更容易培养或发挥出个人某些方面的特长或爱好,如内核、网络、开发、数据库等方面,可以做得非常深入精通、成为这方面的专家。
  • 当前国内外对运维人才的需求非常迫切,运维工程师的薪资也水涨船高,与研发、测试等技术部门持平,甚至超出。