基础技术岗位之运维篇

102 阅读11分钟

基础技术岗位之运维篇

运维是什么

运维是互联网公司的一个重要的基础技术支撑部门,它涉及的工作内容繁杂,基本涵盖了除开发、测试以外的所有技术领域及岗位。

运维的目标是保障业务系统安全、稳定、低成本运行,同时提高其迭代和变更效率。然而业务系统在实际运行过程中,会受到各种不确定性干扰而偏离目标状态,比如业务迭代引入代码Bug、用户集中涌入、恶意用户攻击、网络/服务器故障、变更操作失误等。运维的工作概括起来有三部分:第一,不断优化业务系统的稳定性、安全性、性能等内在特性,提高其抗干扰能力;第二,通过持续的观测、控制,及时纠正业务系统的运行状态,确保其始终运行在目标状态;第三,不断提高业务迭代和变更的效率。

image.png

运维的工作内容

运维的工作内容几乎涉及IT技术领域的方方面面,可以说除了产品、开发、测试以外的工作基本上都由运维负责。包括但不限于以下内容:

  • 业务代码版本更新
  • 服务器配置管理
  • 响应监控,处理故障,执行应急预案
  • 建设并维护基础设施,如机房、网络等
  • 搭建并维护基础平台,如数据库服务、缓存服务、容器平台
  • 技术服务,负责公有云、商业CDN、域名等资源的管理和运营
  • 建立网络安全防御体系,迎接主管部门安全检查,处置安全事件
  • 研发运维工具平台,提高运维效率
  • 维护大数据平台及计算任务
  • 维护办公网及办公IT系统
  • ......

运维的发展变化

受益于近几年云计算及相关技术的持续发展,运维工作发生了翻天覆地的变化,这种变化主要体现在三个方面。

1. 基础设施全面进入云时代

从物理机到虚拟机(云主机),再到容器化,基础设施(IaaS)资源的供给粒度越来越小、速度越来越快。原先从库房上架一台物理机需要几个小时,如果是新购服务器,一套采购流程下来更是需要几个星期;现在从云平台上创建一台云主机只需要几分钟,启动一个容器只需要几秒钟。

目前,国内外主流公有云平台已经很成熟,得到了广泛认可,云的使用也已经深入人心。公有云按需使用、按量付费的使用模式,可以帮助企业避免在业务前期过度投入的风险,也能让业务更加从容地应对突发流量。因此,上云成了越来越多企业的优先选择,尤其是中小型互联网公司。

基础设施云化还意味着基础设施资源从静态变为动态,用户可以根据业务需要灵活调整,只需在控制台上操作或者通过API调用即可完成基础设施资源的管理,而底层硬件和云平台本身的管理和维护则转移到了云厂商的专业团队身上。这是IT行业分工细化的必然,也是对运维的一次彻底解放。动态基础设施还使得基础设施即代码(IaC)成为现实,我们只需要通过编排代码即可实现基础设施资源的高效管理。

2. 应用架构进入云原生时代

伴随着基础设施的云化,应用架构逐渐云原生化,从单体架构、SOA架构到微服务架构,再到服务网格(新一代微服务技术)。云原生应用是为云而生,可以充分利用云的优势,同时也有利于企业更好地用云。

微服务化的拆分,意味着服务数量级的上升,给服务治理带来挑战。以Spring Cloud、Dubbo等为代表的经典微服务框架,自带服务注册与发现、负载均衡、容错与熔断、配置管理、监控与跟踪等服务治理组件,提供了一套完整的服务治理方案和能力,可以帮助架构师和开发人员更快、更好地构建微服务系统,已经得到广泛的应用。

但是在经典微服务框架中,服务治理代码与业务代码混合在同一套代码中,都由业务开发者负责,业务代码的升级可能会导致服务治理代码的失效甚至出错,从而引起微服务系统性故障。新一代微服务技术服务网格则将服务治理与业务应用分离、解耦,将服务治理能力下沉到网络代理上,由网络代理组成一张通信网格,这张网格(数据面)连通配套的控制面一起组成服务间通信的基础设施,由运维人员统一维护和管理。服务网格技术不仅简化了业务开发,规范了服务治理,还能做到框架无关、语言无关,已经成为云原生领域的重要方向。

3. DevOps日趋成熟,DevSecOps已成共识

在传统的软件生命周期协作模式下,开发、测试、运维、安全之间存在脱节,也就是所谓的“隔离墙”,阻碍了各个团队之间的有效沟通,从而影响了软件代码的快速迭代和稳定交付。云计算和云原生的广泛采用,促成了DevOps模式的日趋成熟。

在DevOps模式下,软件代码持续从Dev到Ops再到用户实现自动化交付,软件问题则可以从用户到Ops再到Dev实现持续反馈。DevOps打通了开发-测试-运维的全流程,也是一种强调沟通合作的文化,帮助技术人员快速、稳定地交付软件代码。随着DevOps模式的发展,以后可能不再有Dev和Ops之分,只有业务代码开发者和基础设施开发者之分,运维逐渐转变为基础设施开发者,将基础设施和运维能力以服务的形式提供出来,进而通过IaC代码完成基础设施编排。

DevSecOps模式则更进一步,在软件生命周期的各个环节把“安全”也考虑进来,这是安全开发生命周期(SDL)在DevOps模式下的自然演进,从而实现快速、稳定地交付安全的软件代码。

相信在不远的将来,大数据和AI技术也一定会为运维带来新的变革。

运维团队有哪些岗位

业务运维

负责公司各产品线业务系统的运维,保障业务系统的安全、稳定、低成本运行和高效迭代。业务运维是运维团队最核心的岗位之一,因为运维的价值就是支撑和成就业务。业务运维的工作非常杂,从代码上线到配置变更,从监控响应到故障处理,从系统优化到预案管理,从压力测试到容量规划,从日常维护到重大活动保障(如阿里的双11、京东的618),都离不开业务运维。同时,业务运维还是运维工具平台的主要需求方和受益方,运维研发团队的很多项目都是来自于业务运维的需求。

于团队而言,业务运维最重要的是标准化,采用统一的运维工具和模式,将优秀的方法和成熟的经验固化下来,避免过度依赖个人能力和经验。于个人而言,要成为一名优秀的业务运维,需要掌握很多知识和技能,涉及Linux操作系统、计算机网络、软件工程、数据库系统、网络安全等多门计算机专业课程,还要有良好的抗压能力、动手实操能力、分析问题解决问题的能力和追根刨底的精神。作为业务运维,一定要与业务研发团队密切协作、多沟通,全面了解业务。除此之外,业务运维还要有一定的编程能力,至少掌握一门高级编程语言,这样才能看懂业务代码、提出优化建议,能阅读甚至贡献一些开源项目的源码,能自己写一些实用的工具。

基础运维

负责公司IT基础设施的建设、运维和管理。在不同的公司,基础运维可能会细分出不同的岗位,主要有机房运维、服务器运维、网络运维等。云计算的普及,简化了基础设施运维的工作,对于大量使用公有云的公司而言,传统的基础运维岗位被弱化甚至消失。但是对于实施混合云或者多云战略的公司而言,基础运维仍然必不可少。

平台运维

负责公共基础服务、基础平台的运维,包括数据库、缓存、消息队列、网关、配置中心、注册中心等基础服务,容器平台、服务网格、私有云等基础平台,以及CI/CD、监控&日志系统、流量调度平台、压测平台等运维工具平台。平台运维跟业务运维有着不一样的关注点,它主要是为业务提供稳定可靠的基础服务,为业务运维提供可靠的基础平台和运维工具。DBA也可以归为平台运维一类。

运维研发

这个岗位大家应该也不陌生,很多运维工程师都想转运维研发。运维研发是运维团队里的研发担当,他们需要既擅长研发又熟悉运维,以提高运维的自动化、平台化、智能化为目标。所有涉及到运维相关的研发工作,都可以由运维研发来承担,比如开发运维工具平台、开发网关等基础服务、通过阅读源码定位开源软件的问题、帮助业务开发优化代码的可运维性等。

网络安全

安全和运维不分家,很多公司的安全职能是放在运维部门的。安全组的职责是建立健全网络安全防御体系,从网络、主机、应用层面丰富攻击检测和防御的手段,保障业务系统的安全。除此之外,安全组还需要响应处置网络安全入侵事件,迎接主管部门安全检查,组织安全培训以及实战攻防演练。

其它运维

除了以上常见运维岗位外,有些公司根据实际需要,还会设置其它运维岗位,比如大数据运维、CDN运维、办公IT运维等。

总结

运维是一个入门容易、精通难的岗位,因而运维从业人员水平也良莠不齐。运维入门容易,是因为你只需要学会一些基础的Linux知识和命令,就可以上手。但是有不少运维工程师停留在入门阶段止步不前,沦为操作工、背锅侠,最终被时代抛弃。

一个优秀的运维工程师,是典型的全栈型人才、六边形战士,掌握多方面的知识和技能,有较好的心态和应变能力,有刨根问底的精神,还有系统性思维和工程化能力,最终成为架构师、技术专家,或者走上管理岗位。需要注意的是,即使脱离了一线,也要持续提升个人技术能力,技术是核心竞争力,一定要有时间去深入思考技术的发展和应用,这样才能适应IT行业日新月异的发展。

结语

本文简要介绍了运维是什么、运维的工作内容和发展变化,以及运维团队有哪些岗位,希望能给即将进入运维或有意向做运维的朋友提供参考,也欢迎有经验的运维朋友一起探讨、指正。