Network Automation: Road to Programmable Networks
The world of networking is undergoing a major shift over the past few years. Micro services and containers in application stack has put new challenges to networking engineers across enterprises to build a faster and leaner network stack. Greater visibility into end-to-end network flow and granular control is another big requirement. It means that organizations need to keep up with the agility of ever-changing application landscape.
While these approaches to network agility sometimes complement each other, SDN requires a foundational shift in the way the networks are built and operated. Service providers have absorbed this concept in a limited way, while enterprises are still finding it hard to adopt since their needs are different. Enterprises don’t sell networks like service providers.
Programmable networking is the answer to the needs of enterprises. End-to- end network can be automated through programmability without changing the infrastructure. That’s why enterprises are looking for network automation to manage infrastructure through central automation engine.
One of the preferred network configuration and automation engine is Ansible. Ansible works over SSH and supports multi-vendor deployment. As enterprises start looking at automation, the configuration and operation of network devices are the most important factors to consider.
Enterprises need to consider the below points while adopting these major transformations:
I. Reorganize Team Structure
In enterprises, networking team is divided into Engineering and Operations team. Network automation team should be formed as a subset of Engineering and Operations. On one side,this team should take care of developing the automation scripts by working with design team. On other side, this team should work with operations team to build a platform that ensures the scripts are deployed correctly while providing the needed support.
II. Skillset Transformation
During this transformation, networking engineers will become networking developers and it needs to bridge the skill-set gap. It means that we should provide a seamless way in which existing network architects and engineers can learn about the various toolsets, understand configuration Management tools such as Ansible, understand scripting languages such as Python and understand Linux as base operating system.
III. Continuous Integration and Development
This is the most important transition in this transformation process. In the traditional network management, the configurations used to be pushed on device basis individually through manual method. This manual process controlled the rate of changes. It also kept issues isolated within the network device and further changes could also be halted.
Please refer to the below checklist to build this new process:
a. Identify Toolsets
Tools are the most important fact in building the CI/CD architecture for network automation.
Some of CI/CD example tool sets are:
- Source Code Management: GIT, SVN
- Configuration Management: Ansible
- Deployment Orchestration: Jenkins, Ansible Tower
- Monitoring: Nagios, Sensu
b. Introduce Test Driven Development
As the entire configuration management for network deployment becomes automated, it is critical that developers follow test-driven development model to write playbooks or scripts. It means that a test case should be written first, followed by the code to verify the test case. It will eliminate longer development cycle and more confidence within the team to make quick changes to the environment.
c. Build Automation for Dev, Test and Staging Environments
This is key to ensure that there are sufficient dev and staging environments for developers to test their code in a controlled environment before it gets into production. Developers should be able to spin up these environments on-demand so that they have multiple variants of these testbeds.
d. Versioning and Deployments
It is important to keep track of every change to the infrastructure as a version change. It should be easy for teams to track changes easily and revert back changes if required. Versioning is also important to deploy changes across an infrastructure within the network, rather than deploying it on all the devices.
e. Continuous Monitoring
The final and foremost of CI/CD architecture is continuous monitoring. It includes a monitoring system to ensure notifications are created for errors/issues, and trigger alerts at certain thresholds. As the number of changes increase in automated deployments, monitoring system ensures that the NOC team don’t have to keep monitoring every change.
In summary, network automation will lead the future of network development, configuration, management and monitoring. Organizations should brace themselves and get ready with required skill-sets and tool-sets for programmable networks through network automation.