NetDevOps Overview
NetDevOps integrates the principles of DevOps into the management and operations of networks and network infrastructure teams. Unlike other domains within the IT industry, network teams encounter unique challenges. The term "NetDevOps" was coined to describe the practices that pertain to networks in the era of DevOps.
Introduction to NetDevOps
Here's an overview of the phases within the DevOps cycle:
- Plan: Involves prioritization and decision-making to determine what needs to be created.
- Create: Generating code and configuring settings based on the plan.
- Verify: Ensuring that the created code is in a functional state through unit testing, code formatting checks, and code linting.
- Package: Preparing the code for production release.
- Release: Making the code available for deployment.
After deployment, continuous monitoring is essential to ensure that the application and configuration align with the intended goals.
NetDevOps Versus DevOps
In NetDevOps, the traditional application code is replaced with network configurations. The process involves:
- Configurations replacing general code.
- Build configurations substituting build code.
- Test configurations corresponding to test code.
- Release configurations taking the place of release code.
The core concepts between DevOps and NetDevOps are similar, with differences primarily lying in naming conventions.
NetDevOps Culture
Culture plays a crucial role in adopting DevOps practices. NetDevOps fosters a "culture of change," leveraging lessons from DevOps implementations. Changes are made incrementally, tested independently, and automated to ensure successful deployments with confidence.
Automation
Automation, a key tenet of DevOps, facilitates frequent testing of proposed changes, ensuring consistency and efficiency. Automated testing provides immediate feedback, allowing for adjustments until changes pass the tests, thus minimizing risks associated with deployments.
Monitoring
Effective monitoring provides rapid feedback on changes, helping to assess their impact on the environment. Key metrics are monitored as KPIs to gauge network health and ensure that changes align with expected outcomes.
DevOps Tools
NetDevOps and DevOps utilize various tools beyond automation, including source code management, testing, collaboration, and release management. Collaboration tools like Webex, Jira, and Slack enhance teamwork, while CI/CD tools like Jenkins and Travis CI streamline development pipelines. Configuration management tools such as Puppet and Ansible ensure consistent deployments, while infrastructure orchestration tools like Terraform and NSO automate provisioning.
NetDevOps Pipeline
The NetDevOps pipeline continues to evolve with expanding tooling choices and real-time feedback mechanisms. Tools like Jenkins and Travis CI extend their reach to cover release and deployment phases. Configuration management tools ensure automatic updates, while environment tools like Docker provide consistency across development, staging, and production environments. Monitoring and collaboration tools further enhance the pipeline's efficiency and agility.
Workflow Example
Here's an example workflow for a network infrastructure team using a NetDevOps pipeline:
- Pull: Network Engineer retrieves configurations from a Version Control System (VCS).
- Edit: Engineer makes necessary changes locally.
- Commit: Changes are committed to a feature branch in the remote repository.
- CI/CD: Continuous Integration platforms like GitHub Actions or Jenkins are utilized for testing.
- Test: Defined tests are run against the configuration code.
- Notify: Webhooks send notifications to collaboration tools like Cisco Webex.
- Deploy: Changes are deployed based on organizational policies, either automatically or through manual approval processes.