根据百度百科的定义:运维工程师负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体的投资回报率。无论做什么运维,运维工程师最基本的职责都是负责服务的稳定性,确保服务可以7*24H不间断地为用户提高可用的服务。
维基百科的定义:所有流程和服务的超集,这些流程和服务都是IT团队提供给其内部和外部用户的,并由他们自己使用,以实现其业务的运转。
IT运维团队的重要角色包括技术管理和质量保证以及基础架构管理,并确保IT产品(或服务)满足客户的所有需求和期望。运维团队按所需的质量和成本提供有效的服务。
我们主要想探讨三个话题:
1、什么是运维
2、入门者如何系统化地学习运维知识
3、云时代的运维
1、什么是运维
首先,我们看看目前主流招聘平台对运维工程师岗位的工作内容要求和职业技能要求:
工作职责:
1、企业数据中心建设和管理相关工作、包括基础网络、信息安全、服务器、存储、备份、操作系统、数据库、中间件等基础硬、软件建设和管理、优化。
2、信息系统运行保障相关工作,包括生产系统投产支持、日常运维、变更和应急处理。
3、开发测试支持相关工作,包括测试环境的搭建、日常运维和相应的技术支持。
4、内控管理相关工作,包括堡垒机等技术和产品的管理、流程制度的制定和落实等。
任职要求:
1.熟悉VMWare虚拟化和主流的linux系统和HA软件。
2.熟悉oracle、mysql等主流的关系数据库。
3.熟悉weblogic、tomcat、nginx、keepalived、redis等软件。
4.能熟练使用shell或python进行日常管理脚本的编写。
5.熟悉X86服务器、SAN存储等常见硬件设备。
6.熟悉网络知识,可以承担承担常见的交换机、路由器、防火墙、IPS、WAF等设备的简单配置和管理工作。
7.熟悉常见的监、管、控系统,例如ansible、zabbix、堡垒机等。
8.熟悉网络、应用安全相关知识和技能,能对网络和安全问题进行基本应对。
可以总结,运维工程师涉及的工作内容非常宽泛,在软件产品的整个生命周期中均需要适时适度参与,任职要求中涉及的技术栈有较大的纵深,包括:
1、脚本语言,shell、perl或python
2、网络知识
3、分布式计算
4、应用服务器
5、数据库等中间件
6、监控系统
7、安全
那么,到底什么是运维呢?我们看看下图,一个软件产品(或信息系统)的交付过程,在1-5阶段,运维团队负责基础设施资源提供(计算、存储、中间件部署、安全),在6阶段,产品和研发团队完成主要工作后,系统进入上线后运维阶段,运维团队全面负责系统运行质量、稳定性、可靠性、安全性等各项指标。
在实际运维项目中,运维团队要关注的知识领域包括:需求变更、输入/输出、资源、战略、前瞻性、控制、规划以及成本,换句话说,需要在这些要素条件的约束下制定运维工作的标准和相适应的流程。
一个运维部门的职能层级(发展前景)一般有以下几个层次:
a,初级小白,操作系统,中间件的安装部署,一般性配置
b,中级工程师,应用部署和配置、系统运行监控
c,高级/专家级,运维架构设计/优化,具备综合考虑成本、效率和等级的能力
d,带团队,高级规划
2、入门者如何系统化地学习运维知识
首先,Linux系统学习,掌握:
1、Linux基础知识、基本命令(cp、ls、file、rm、cat、ps等操作命令)
2、Linux用户及权限基础
3、Linux系统进程管理
4、文本编辑命令(vim、grep、sed、find等命令)
5、shell脚本
在学习过Linux上述知识之后,进一步学习一下知识,
1、TCP/IP网络基础
2、Linux企业常用服务(如dns、http、ftp、mail、nfs等)
3、企业级安全原理和防范技巧(系统性能监控,安全威胁模型和处理办法)
4、 加密/解密原理及数据安全、系统服务访问控制
5、iptables安全策略构建
6、shell脚本进阶(主要是结合一些应用,写一些案例)
7、应用phppython, mysql搭建CMS或个人网站系统
如:
到此,你基本可以做一个入门的运维工程师了。
3、云时代的运维
随着云计算时代的到来,行业内存在一个流传甚广的“观点”:云计算会淘汰掉传统运维。
那么我们来探讨一下第二个话题,云计算的运维是什么样的,运维工程师如何保持在云计算时代的职业竞争力。
云时代,运维工作发生了深刻的变革,传统运维需要处理服务器、网络、存储等硬件设备,云时代则不需要接触硬件设备,而是处理虚拟资源(事实上,虚拟化是云平台的核心支撑技术,软件定义计算、软件定义存储、软件定义网络)。云平台厂商提供的负载均衡、动态伸缩、数据迁移等服务降低了运维的复杂度,某种程度上也降低了运维的门槛。
云计算时代的运维,通过AI、大数据等技术,会节省更多的人力、物力成本,减轻运维人员的压力。
但是,云时代的运维也将出现新的挑战:
1、工程师不再直接操作实体资源,而是面对一堆API(云平台提供),问题查找的难度增加了,有过编程经验的同学都懂,世界上没有完美无缺的系统
2、大型系统涉及的资源(包括横向扩展的弹性计算服务,PaaS平台提供的第三方服务、负载均衡、数据同步等等)大大膨胀,资源增长带来管理复杂度剧增
3、云产品本身的版本升级带来系统运行的不稳定性增加
4、云平台和云产品按需使用的特性带来控制成本的需求,即在可能的情况下,运维团队要考虑是否可降低云资源的使用量以控制成本支出,而这种“缩容”毫无疑问会给运维工作带来一定的风险。