网络架构师如同建筑行业的建筑师(架构师和建筑师的英文都是architect)一样,在理解材料、工具和操作过程中的优缺点的基础上,来实现自己心中的各种不同的设计。区别只是在使用的“原料”和“工具”不同。一个好的网络架构师必须充分理解所涉及的技术中的优缺点,并作为客户需求和技术之间的桥梁让客户的需求尽可能的成为现实。

所以网络架构师需要足够的沟通能力去挖掘客户的实际需求,同时又有足够的技术实力去尽可能实现这些需求。而不是炫耀从各种厂家(粗浅)的白皮书和所谓的意见领袖中得到的各种花哨名词。

在现在的网络自动化趋势下,一个架构师至少应该具备如下能力:

  • 定义标准化服务
  • 对于某一类数据,建立single source of truth
  • 如何用最简单的业务逻辑来实现所需求的服务
  • 如何通过业务逻辑(不特指商业上的业务逻辑),让single source of truth尽量少的包含网络状态(简单的说就是”尽可能让网络状态可推导“)

这样的例子可以帮助上面的要求:

  • 按照一定的业务逻辑,能够得出BGP的AS号。而不是把各个AS号存在某一个single source of truth中
  • 按照一定可遵循的逻辑来连接网络端口,所有leaf和spine交换机都用同样的连接方式。而不是存放所有网络设备连接

网络自动化本质上来讲和其他网络技术没有区别:厂商们忙于推销和吹嘘各种过度复杂(但并不使用)的实现来买自己的盒子。但是真正能完全做到自己宣传的有谁呢?

Ansible、Salt、Nornir、Terraform、Jinja2和其他很多技术,本质上就像传统的OSPF、BGP、VXLAN、MPLS这些一样,都有各自的优点和局限,但不可否认的是自动化已经是大势所趋。就像TCP和IP一样,你可以不喜欢,但是离开他们就等于离开了网络。

最后,在传统的非自动化的网路中想一步到位的做到infrastructure-as-code,无非痴人说梦,甚至永远无法做到。(就是immutable network和mutable network的区别)