随着云计算、容器技术的大行其道,DevOps这个一度熟悉又陌生的词汇逐渐被IT企业所津津乐道。曾听过Chris Canciosi的这样一番评价,DevOps填补了长久以来的空白,能够帮助技术企业在不影响速度与质量的前提下以自动化方式尽可能优化运作流程,而这一点在十年之前可谓无法想象。对于网络界、运维界“摸爬滚打”工程师们,DevOps这一高效手段又未尝不是一股改革的清流。虽然现在DevOps仍未对网络有明确的定义,但网络领域已经进行了诸多的尝试,通过Infrastructure as code(IaC)的方式将网络集成到DevOps中,不过这些代码并不能完全覆盖到DevOps中对网络的所有需求。
目前关于DevOps中网络的应用出现了一些术语:基础设施即代码(Infrastructure as Code,IaC)、DevOps Networking、NetOps,还有本文所提及的NetDevOps。当然我们可以不去顾虑这些所谓的术语称谓。不过迄今为止还没有一个明确的方式来确定如何将网络和evOps建立一个有效的“连接”。这就顺理成章的引出了我们需要NetDevOps的原因。
在我看来NetDevOps并不是一个全新的概念,与其说定义NetDevOps,倒不如考虑如何使用。NetDevOps可以说是一个架构约束,使企业的网络团队和DevOps更加紧密的联系。将传统的网络基础设施的手动配置过程在这样一种架构中变得更加自动化,有更好的可扩展性。
关于为什么需要NetDevOps,我们总结了如下5个理由:
1、Networking + DevOps = NetDevOps
网络和DevOps之间的需求是相互的,但可能双方都不承认这一点。网络最关心的是正常运行时间,而DevOps的最终目标是持续交付。因此二者的相辅相成变得至关重要,DevOps需要网络来保障更新的可交付性。
采用NetDevOps可以促进网络应用与DevOps同样的规则和逻辑,实现可复制和自动化的任务,当然这里不是为自动化而自动化,而是使之前一个服务器上的服务进程更高效地部署到多个服务器上。
2、云服务助力远程部署
随着云计算采用的增加,远程部署更新和配置成为了必要的需求。云计算为实现NetDevOps提供了必要的环境,提供了允许代码部署的硬件基础架构。
在云环境(如AWS)中,实现NetDevOps的基础设施条件已经具备。例如,AWS CloudFormation为IaC提供了必要的基础设施。
3、基础设施即代码(Infrastructure as Code,IaC)
IaC是实现DevOps的基础,而这又是NetDevOps的基础:采用网络硬件并将代码应用到环境中,这些代码能够实现自动化配置环境,而目前这些工作仍需要手动更新。
自动化是DevOps和NetDevOps共同的核心原则之一。自动化实现了网络正在运行时间的可预测,能够更好地协助DevOps实现持续交付的环境。
4、软件定义网络
又到了常讲的软件定义网络(SDN),在这里我们可以将SDN看作是IaC的一个分支,它是云架构的企业级网络版本,NetDevOps通过使用白盒交换机在这种环境中工作。
部署白盒交换机并安装Linux将创建出一个SDN环境,这也是NetDevOps发展必要的基础设施。
5、当前堆栈提供的工具
当以上几点都实现之后,NetDevOps环境能够与现有的Ops堆栈进行集成。Ansible、Red Hat、Puppet、Chef等公司目前已经提供了创建NetDevOps环境所需的工具,而企业的团队需要做的就是实践。
由此观之,NetDevOps具备传统网络的手动配置精要与DevOps相结合的产物,它也是将网络的整个生命周期与DevOps巧妙搭配的自动化环境。长按左侧二维码关注