Code playing a leading role in networking is of course nothing new. Protocols, implemented in a huge variety of programming languages, have been the backbone of the evolution of computer-to-computer communication for decades.
The network that changed the world as we know it, the World Wide Web, is after all fundamentally based on code.
But there is a strong argument that we are reaching a new inflection point in the importance of code in defining, running and managing networks. As digital traffic volumes continue to grow exponentially, computer science is having to develop new ways to deliver the scalability and efficiency required to cope.
Network automation is at the forefront of these solutions. By taking on tasks like resource provisioning, network mapping, testing and security, automation provides speed and agility many times greater than even the most efficient of the previous generation of networking management systems could deliver.
Network automation is overtly software-based, and is therefore closely associated with software-defined networking (SDN) and network function virtualisation (NFV). Collectively, the pursuit of software-driven networking solutions is often referred to as ‘Network as Code’.
Cisco positions the ‘Network as Code’ concept within a broader ‘Infrastructure as Code’ family which it defines as “techniques used to describe and provision the compute, storage, network, and other resources as part of the deployment of the modern applications in cloud platforms.”
In other words, the ‘as code’ tag describes solutions where elements like networking requirements are defined as part of the source control code of an application, merging the worlds of software development and infrastructure engineering.
With advances in data analytics and AI, Network as Code solutions have evolved to become increasingly sophisticated, progressing down the path of automation. We are now seeing software-defined network automation applied across all network domains – cloud networks, enterprise WANs, data centres and more.
Examples of use cases for network automation include security analysis and threat remediation, network state verification, service orchestration and provisioning, and real-time system management.
Benefits of network automation
According to research from Enterprise Management Associates, a third of enterprises have adopted infrastructure as code or DevOps automation tools as an integral part of their network automation strategy. This is in line with the proportion of management tasks that have been automated across the enterprise, suggesting that network automation occupies a prominent role in many organisation’s overall automation strategies.
It is easy to understand why. Many areas of network provisioning and management, including security, risk reduction and problem detection, have long depended on manual monitoring of hardware-based systems.
Network virtualization opens the door to running scripts within the software-defined network elements which take care of this automatically, increasing agility and reducing error. The end result is better performance and higher reliability.
Another benefit of the switch to SDN and NFV is that it turns every element of network performance into a data feed. Where traditionally different network elements operated in their own silos and understanding the way one impacted on another was often a matter of educated guesswork, with modern analytics, data leads to complete visibility across any system.
Analytics alone leads to error reduction and significant gains in performance and reliability. But when you then take the next step and add artificial intelligence into the mix, particularly machine learning, you start to enter the realm of what we might call ‘true’ autonomy – network management programmes that don’t just identify fixes and performance gains as guidance on action to take, but which trigger the actions themselves.
This kind of intelligent network automation opens the door to things like dynamic provisioning, the ability of networks to predict and respond to demands in real-time. This might involve allocating, say, just the right amount of bandwidth to whatever system communications are taking place at any given moment, or prioritising traffic not just according to pre-defined protocols, but to achieve optimum performance across all use cases.
Finally, turning away from benefits within network performance itself, network automation has the impact of speeding up app development. When networking requirements are scripted as part of the source control of an app itself, not as an external influencing factor, you reduce the testing workload. This is a great benefit to boosting the efficiency of DevOps workflows, as you are writing the operational parameters into the app as part of the developmental process, creating further synergies between the two.