NetDevOps理解与学习路线分享

2020-06-19 16:28:08 浏览数 (1)

本文章整理自SDNLAB一期一会第10期直播分享

分享嘉宾:王旭涛,毕业于北京邮电大学网络技术研究院,现就职于中国银行信息科技运营中心。

当我刚开始学习NetDevOps的时候,发现国内这些资源很少,很多东西都取自于国外的博主、厂商,或者社区资源,因此我萌生了一个想法,希望可以把我对于NetDevOps理解与学习路线分享给大家。首先声明,本次分享仅代表我个人的观点,不代表SDNLAB和我所在单位的立场。

一、云时代我理解的网络运维之痛

在云计算的时代,我从一个底层运维工程师的角度,通过我做自动化运维的亲身经历,看到它正在面临非常多的挑战。

面对如此多的挑战,运维工程师可以说是太“难了”,那么新时代的运维究竟有哪些难点呢?我们又该如何应对?

运维难点:

  • 网络环境的敏捷交付要求越来越高
  • 网络复杂度越来越高,运维困难、重复性劳动多。
  • 网络关联性越来越强,沟通成本、运维成本高
  • 架构、技术越来越复杂,故障越来越难定位
  • 运维领域越来越细分,运维一直处于失衡状态
  • 工具、数据越来越多,使用越来越困难

解决方法:

  • 自动化(核心):提高运维的效能,是解决问题的关键
  • 可视化:自动化运维的外在形式
  • 智能化:针对特殊领域的一种自动化表现形式

二、云时代的网络需要NetDevOps

现代化运维难点的解决方案,就是自动化。目前大多数人都清楚,将来网络一定是无人值守的运维,因此我们需要NetDevOps。

  • 网络的运维拼的是效能,提高效能的根本是提高自动化水平
  • 网络运维需要的是个性化、成长性的自动化工具,购买的工具往往水土不服
  • 网络运维与工具开发的沟通成本非常高,因为技术堆栈不同
  • 买买买的时代已经过去了
  • 当下的运维,“敏捷”是王道
  • 当下的时代,是开源技术喷涌的时代

新时代在效能上对网络工程师的要求越来越高,但是运维工具成本和人力成本上反而是压缩的,这也就要求广大网工们做到敏捷运维、自动运维。所以现在做NetDevOps是一个比较好的时机,我们通过NetDevOps能够做到什么?

  • 极低的沟通损耗
  • 极高的迭代速度
  • 极深的场景认知
  • 极低的人力成本
  • 极广的覆盖范围

运维领域其实有很多不同的领域,我们在运维过程中,可以通过自己编写的脚本,去把我们的人力消耗极大的那部分重复性的动作覆盖,其覆盖的范围比一个工具广泛很多。NetDevOp带给我们的东西,本质上就是自动化水平的提高。

三、我的NetDevOps学习路线分享

对NetDevOps的理解:网络运维人员针对自身运维场景,利用技术与工具提高自动化运维水平,进而提高日常管理、运维效率的工作方法及过程。

开发:基于开源的技术与工具、已购工具的开发与使用

场景:开发深度结合自身网络运维场景

实践:这是一种方法论在自己场景中持续实践的过程

下面从我个人这几年做自动化的经验来分析下,个人以及团队NetDevOps转型的路线,以及一些需要注意的点。然后给大家分享一下我的技术堆栈和学习路线。

1、个人的NetDevOps转型

思想的转变:网络运维将来一定不会是现在这种人肉运维的方式,一定是高度自动化的运维。

思路的转变:重复性、有规律的工作内容能否用自动化的工具去解决

持续的学习:NetDevOps是需要持续学习、不断吸取营养的一个领域,没有一劳永逸。

选取最合适的工具:合适的工具(包括开发语言)可以帮我们节省大量的时间。

不断的实践:一方面实践能看到成果,品尝收获,另一方面只有不断实践反馈才能进步。

清楚自己的定位:学习哪些知识,学习到什么程度要因人因岗位而异。并不是每个人真的都要去开发,但是每个人最好都了解NetDevOps,了解其思想和当下的趋势、技术。

2、团队的NetDevOps转型

思想观念的转变:网络运维将来一定是软件层面驱动更多的网络,需要更多具备NetDevOps技能的运维人员。

培养一支自己的NetDevOps队伍:网络专业领域知识强,拥有一支自己的NetDevOps作战部队可以最小损耗最快速度的实现你的想法。

勇于尝试,小步快跑:勇于投入一点人和一点时间去尝试,敏捷的方式看看值不值得。

路线要明确,注重性价比:要注重性价比高的运维场景,能最大减少人力或者提高网络的稳定性、应急能力等。

队伍逐步的转型,由点到面:人员的转型、场景的实现都是由点到面,逐步实现。

我的学习路线分享:

  • 基于Python的脚本开发:成本最低,效果最明显
  • 基于django的web开发:通过web将自动化成效普惠
  • 不断写场景提升产品设计能力:针对场景的产品设计很重要,易用。
  • 开源技术的野蛮生长
  • NetDevOps课程的系统学习与归纳总结
  • 众多优秀网络运维工具系统的学习与吸收
  • 基于团队与场景的架构设计

我推荐的技术堆栈-基础篇

开发语言:Python

前期:需要掌握的内容:基本数据类型、控制(判断、循环)、文本操作

后期:面向对象的编程能力,归纳总结抽象自己的工具类、装备库

IDE:Jupyter Notebook、Pycharm、 VSCode

我推荐的技术堆栈-运维必备

网络层面新协议新技术:

  • Yang model
  • Openconfig
  • Netconf
  • RESTConf
  • gRPC
  • telemetry

运维工程师必备新技能

  • markdown:快速写文档
  • git:代码管理
  • json、yaml、xml:优质的数据传输

我推荐的技术堆栈-网络自动化框架

  • Ansible:自动化运维工具,如果网络环境简单可以考虑使用这个,但也是每个新时代网工需要去了解的。
  • Nornir、 napalm:自动化运维工具,更贴合网络,可以使用或者了解参考
  • Genie、pyATS,可以参考,如何拉平数据、如何网络配置测试、排障、验证。
  • NSO、Opendaylight、netYCE、netbox 国外非常优秀的一些开源或者收费的网络自动化系统,各有所长。

我推荐的技术堆栈-网络服务化

  • Web后台 :Django (flask FastAPI tornado),做RESTful API
  • Web前端:vue、element-ui、vue-element-admin、AdminLTE、echarts
  • ORM:django的orm或者是SqlAlchemy
  • 分布式框架:Celery
  • Nginx 部署web服务
  • APISIX、kong:API网关,推荐APISIX开源版本自带dashboard

我推荐的技术堆栈-系统知识提高

  • Linux,从脚本和服务部署使用逆向学习所需核心
  • 开发流程管理 gitlab、git最佳实践
  • 以下选修
  • NoSql:ES、redis、MongoDB
  • 微服务设计(API设计)
  • 架构设计:网络运维应该有的架构 开源组件 (中间件、流计算、分布式)了解
  • 容器技术 docker k8s rancher

我推荐的技术堆栈-一些优秀的资源

除了网络自动化框架、软件的官方文档外:

  • 思科的DevNet社区
  • 个人:Hank Preston
  • 个人:David Bombal
  • 知乎专栏:NetDevOps加油站、网络行者
  • 个人:Roger Perkin
  • 组织:NANOG
  • 公众号:SDNLAB、NetDevOps加油站
  • Git相关网站定期搜索关键词、关注一些优秀的自动化运维系统。

四、抛砖引玉

我认为未来网络运维会越来越脱离CLI ,更加聚焦数据,也就是你的参数。从系统运维就可以看出来,他们可能很多东西都不是基于CLI的,而且基于脚本封装的一些东西。NetDevOps应该是开发、架构、产品等各种技术及思想在网络运维领域的实现。

我们一定要用未来去规划现在走正确的道路。希望今天的分享能够把自己对NetDevOps的理解,以及所掌握的技术,分享给每一个愿意投身其中的网络运维工程师。如果大家对内容有任何疑问,欢迎大家关注我的公众号“NetDevOps加油站”,与我进行交流。

【转载须知】

若转载文章为原创文章,可在相应文章下或公众号后台留言;其他非转载类文章须在文首以不小于14号字体标明转载自SDNLAB

0 人点赞