NetDevOps: Methodology and Business Use Cases
Networking involves two primary teams, namely network development engineers and network operations engineers. These two teams have different responsibilities. The development team works on code development and testing, whereas the operations team deals with the environment, IT architecture, deployment, availability, etc. Traditionally there are silos across these teams, and multiple hands-off are involved while taking code under development to production.
This results in software quality issues, delays, and frustration amongst team members. This issue exacerbates further as modern, challenging environments require persistent updates, features, and application releases from the development team.
What is NetDevOps?
NetDevOps is a culture, movement, or practice that emphasizes the collaboration and communication of both network architects and operators while automating the process of network design and changes. It embraces interoperability and communication between the development and operations teams to break down silos and create better products. It aims at establishing a culture and environment where building, testing, and releasing network changes can happen rapidly, frequently, and more reliably. The movement also encourages automation and monitoring to increase efficiency and reduce errors.
Today, network changes are generally significant and complex. They are seen as high risk with a rigorous, costly, and lengthy vetting process. Many teams avoid making such changes. As a result, a “culture of fear” is developed around network changes. To mitigate it, NetDevOps ensures that network changes are small and frequent but also performed in a much more automated, efficient and reliable way. Together it delivers high network uptime along with the latest updates.
NetDevOps – Methodology
NetDevOps applies a number of strategies from DevOps to address this issue. They mainly are:
- Automation: It takes what traditionally are manual procedures in network infrastructure and applies the principles of automation and scalability.
- Frequent but smaller updates. They are incremental and make each deployment less risky.
- Reduce manual intervention with Infrastructure as Code (IaC): Under this paradigm, data centers are provisioned using machine-readable definition files rather than physical configuration files.
- CI/CD: This shrinks iteration times to insignificance. It involves
- Continuous Integration (CI): Each developer check-in is built and verified by unit-tests. It allows teams to detect problems early.
- Continuous Delivery (CD): Once CI is complete, the code is deployed to a test environment, where load and integration testing is performed. At this point, the necessary software artifacts are ready to be deployed to production.
- Continuous Deployment: production deployment is automatically triggered.
- Demolish human silos: It encourages cross-team communication across development and operations.
NetDevOps Use Cases
Command Line Interface (CLI) is a good way for manually configuring and managing a device. However, it is prone to errors and tasks are not easily repeatable, hampering the scalability when we are talking about hundreds or thousands (or even more) of devices. In NetDevOps, automated systems perform configuration changes, carry out testing at each stage to ensure that network changes don’t result in downtime, and finally push those configurations to respective devices. There are at least seven primary use cases:
- Device provisioning: The first step is to create the configuration file and then pushing the configuration onto the device.
- Data Collection and Telemetry: It can be done by SNMP or custom-built code using various libraries.
- Compliance Checks
- Configuration Management: It involves actual deployment and management of configuration files to networking devices.
Tools and Best Practices for NetDevOps
- Terraform is based on the principle of using Infrastructure as Code to provision and manage any cloud, infrastructure, or service. It can be leveraged for provisioning and managing network devices programmatically. This management includes configuration management as well.
- Ansible, Chef, or Puppet are also popular for configuration management.
- Network as code can be captured using Github or git and perform source as well as version control.
- Support for RESTful Application Programming Interfaces (REST APIs) allows for remote management and ease of use. It also enables integration with various programming languages. These interfaces can exist on network devices as well as controller/orchestrator.
- pyATS is used heavily for network testing and verification.
- Prometheus is quite useful in monitoring and overall management of the solution. The software-Defined nature of the network makes this further easy for use.
While there are many challenges for NetDevOps implementation, the tools and methodologies discussed in this blog will certainly help one step closer in NetDevOps implementation. We would love to hear your thoughts in the comments section.
Sameer Mahajan | Principal Architect
Sameer Mahajan has 25 years of experience in the software industry. He has worked for companies like Microsoft and Symantec across areas like machine learning, storage, cloud, big data, networking and analytics in the United States & India.
Sameer holds 9 US patents and is an alumnus of IIT Bombay and Georgia Tech. He not only conducts hands-on workshops and seminars but also participates in panel discussions in upcoming technologies like machine learning and big data. Sameer is one of the mentors for the Machine Learning Foundations course at Coursera.