1.2 NetDevOps,你需要知道的事
1.2.1 什么是NetDevOps
NetDevOps是网络(Networks)、开发(Developments)与运维(Operations)三个单词的复合词。很显然,这个单词已经非常清晰地表达了其所包含的内容:网络的运维工作需要开发者来一起参与进行,通过程序化的代码来完成大量运维的工作。推动这种变化(或称为演进)有来自多方面的因素:网络规模变大带来维护工作量的增加、应用快速上线、快速响应需求、自动化运维思想的驱动等,总之就是需要提高运维效率,给运维人员降低工作负荷,提升网络操作的准确性,降低误操作。从定义来看,NetDevOps包含很多方面的内容,它既包含了技术的一些细节,也涵盖了很多非技术的内容。实际上,NetDevOps代表了一种思路、一种方法论、一种与时俱进符合当前业务发展需要的新型的网络管理和运维手段。
本书主要从技术入手,侧重介绍实践过程中能直接应用的工具与方法,在最后会给出几个常见的应用场景的实际案例。
NetDevOps不一定都要通过编程来实现。毕竟对于绝大多数网络工程师而言,编程属于陌生或跨界的领域,要求传统网络工程师一下子就能编写出大量代码来实现自动化的网管和运维也是比较困难的。学习和实践NetDevOps并不一定需要我们从头开始写每一行代码,我们可以学习和掌握一些已有的工具和现成的程序库来实现我们的想法、达到我们的目的。尤其是对于初学者而言,有现成NetDevOps工具能实现的就尽量不要使用编程,有现成的语言平台库能实现的功能就尽量不要去一行一行地去撰写代码。可以逐步编写更多的代码或基于已有的代码模板进行修改,这是一个循序渐进的过程,只有你一路坚持下来才能体会出这其中美妙的、得心应手的滋味。
1.2.2 NetDevOps适用环境
现在得益于IT技术的发展,很多行业自身的自动化程度越来越高。随着人工智能的逐步普及,以后机器将会能做更多的事情。但是目前很多的网络规划与运维工程师们,特别是在国内,大家都还不太善于利用机器来帮助自己做更多的事情。在云计算的大趋势下,无论是网络的自动开通,还是网络的变更运维,都需要非常高的自动化程度。目前不论是传统的网络还是SDN相关的网络,都适合采用NetDevOps的方式进行运维管理。
在传统的网络中,设想某网络工程师管理维护了一套企业园区网,假设这个园区网从接入到汇聚再到核心和网络出口一共拥有100台网络设备。在日常的管理维护方面,网络工程师需要监控这些设备的运行状态,并定期做设备配置的备份或设备版本的升级;当然也会经常有新业务上线,对应网络及安全的策略变更等工作。可想而知,如果没有类似NetDevOps工具的帮助,此网络工程师的工作量将会非常庞大。而如果能够借助NetDevOps来完成此类日常事务,那么此网络工程师的工作量可以缩减为原来的十分之一,甚至更少。由机器完成此类重复类(循环类)的信息统计,其效能将万倍于人的手工操作。
在云服务商自身的SDN网络中,NetDevOps已经得到较为广泛的使用,包括公司层面DevOps的开发(此类NetDevOps通常会跟公司主营业务应用以及服务器虚拟化平台进行融合,打通业务自动化链条上的各个环节)以及网络运维部门自身的维护NetDevOps工具的开发。国外Google公司内部日常运维的网络工程师已经要求必须具备NetDevOps的编程能力。
NetDevOps实际上适合运用在任何存在网络的环境里,包括传统园区网、新型数据中心,以及当下日益火热的SD-WAN市场。
1.2.3 为什么我们需要NetDevOps
为什么我们需要NetDevOps?原因有以下几方面。
首先,上层业务的自动化程度越来越高。这些自动化的业务推动了网络管理需适应其业务自身的快速迭代与发展。
其次,网络设备及网络技术的演进。最为典型的就是SDN的发展让网络设备的API越来越丰富,这点拉动了网络管理方式的变革——可以更多地使机器和代码参与到日常的网络管理工作中来。
再次,网络节点数量在急剧增加,导致重复性工作越来越多。只有使用机器和代码才能快速高效地完成此类工作。最后,人工管理网络势必会不可避免地带来大量人为疏忽性错误。网络维护操作中的小失误常常会引起大范围的网络故障,因此网络维护的准确率是非常重要的。就这点而言,使用机器和代码完成自动化将会是更好的选择。
纵观当前的IT发展状况:快速服务是目的,自动化是手段,NetDevOps是方法。NetDevOps是之前游戏规则的改变者,它打破了传统IT各领域的边界,其本质是一种思路、一套方法论。如今许多网络和IT运维人员已经开始寻求和部署自动化的解决方案,并借此来提升用户体验,提升服务质量和效率。当然这些技能也会提升网络运维人员自身的竞争力。
上士闻道,勤而行之。既然已经有了这么强大、这么好用的技术和理念,我们有什么理由仍然拒之门外呢?
1.2.4 NetDevOps需要什么样的人
传统的网络工程师需要掌握很多的网络基础知识。例如,OSPF、ISIS、BGP等路由协议,还有相关设备厂家的命令行使用方式等。既然希望借助NetDevOps让机器和代码参与到网络工程师日常的管理与运维工作中,那么必然也需要要掌握一些NetDevOps相关的基础知识,如文本处理工具、网络设备的API、一些简单的编程语言以及一些现成的自动化工具。本书的目的就是帮助传统网络工程师了解和学习这些方面的基础知识。即便是传统网络工程师不愿转向软件开发领域,但了解和掌握一些NetDevOps的基础知识也是很有益处的。当你和软件开发、软件设计人员进行交流时,当你希望公司开发部人员能帮你们部门开发一些系统和工具时,这些知识将会很有帮助。