Network programmability is such a generic term, like SDN and the whole Software Defined X paradigm, that it means different things to different people. Not so long ago network programmability was synonymous with Openflow but as time passed and pragmatism kicked in, the industry settled around a common view. Driven by real benefits like time and cost savings, reduction of human error, customization and innovation, network programmability is currently understood as a set of tools and best practices to deploy, manage and troubleshoot network devices.
Designing the flexible network
The times when we could configure and manage one device at a time are going away. In a dynamic DevOps world when entire testing and development environments are built and destroyed within minutes, we expect the network to keep up and be just as flexible. This means that we have to look at the way we’ve done networking so far from a different angle. When a new VLAN needs to be added to our infrastructure, or a new application requires a set of QoS parameters to be applied end to end in the environment, we need to be capable of performing these changes safely and within minutes.
Networking vendors have seen this challenge and are at different phases of adopting and implementing solutions for it. The common solution across the industry seems to be revolving around providing application programming interfaces (APIs), sample code, and reliable software development kits (SDKs). Besides the good old Command Line Interface (CLI) that has faithfully served us for so many years, vendors are now exposing APIs with their products. Repetitive tasks in an environment that provides programming interfaces leads organically to network programmability and automation.
Pushing the boundaries of automation
Network programmability and automation is not new. Engineers have tried to simplify their work since the first ARPANET in the late 60s. From screen scraping, to bash and Expect scripts, the pain has been real. What is new is that we have reached a point in which the scale of our networks, the agile nature and dynamic requirements of our network infrastructure cannot be realistically configured and managed one device at a time. It is now time to start interacting with the APIs, use them to automate most of the mundane and repetitive tasks that used to take so much time to get done, and manage as many network devices as possible with a few scripts. As an industry we learn from our mistakes and always try to improve and push the boundaries.
Your time is now
So, what does all of this mean for us who have been in the industry for a while, or for new students looking to improve their knowledge and trying to get a job in networking? Is this the end of world as we know it? Hardly. Networking has been constantly changing and evolving, much like programming. Although you still see requirements for Fortran or Cobol developers, mostly for maintaining very old legacy applications (I am sure somewhere out there there’s still a network running on 10Base5), the vast majority of the world has long changed and evolved, in most cases for the better. If you follow the Cisco certification program and the NetAcad community, you can see the same change patterns. All the certification tracks have been in a constant evolution process based on new technologies, new requirements from the job market and feedback received from the students. This time is no different. The difference is that now the network has become even more critical, and the requirement for highly skilled network engineers will only increase. The network has become a business differentiator and the more agile and dynamic your infrastructure is, the quicker you can develop and bring those applications into production.
Training and retraining
Networking students: I recommend that you keep an open mind! Know that you will have to constantly learn and be interested in new technologies. If you enjoy this and are passionate about it, you are in for an amazing journey.
Networking veterans (me included): I tell you, this is no different that what you’ve done so far. Remember when you had to learn about ATM and Frame Relay, and then MPLS, L3VPNs, LISP and OTV? We all have to learn now about data formats, APIs, mostly REST hopefully, parsing and manipulating data programmatically in a way that makes your life easier.
Based on the maturity of the language, the amount of libraries and support, as well as ease to learn, the general consensus is that Python is the best fit at the moment to tackle the challenge of network programmability. As network, DevOps or systems engineers we need to be able to talk to developers in their own language and be able to understand their problems.
Following the server virtualization and hypervisor revolution at the end of the 90s and more recently the move to the cloud and the whole DevOps style of management, it is now time for the network to become more agile and accommodating to the requirements of the applications. There’s no better place currently for massive innovation than the network. The network sees and hears everything that moves through it! From more intelligent WAN routing with solutions like Cisco iWAN, to embedded security in which the network acts as a dynamic sensor and policy enforcer, to traffic anomalies detection and instant analytics, with products such as Cisco Tetration, there’s more and more intelligence being moved to the network layer.
I would like to invite you to join me on this trip as we start exploring network programmability in more depth. All questions, beginner and advanced, are appreciated. Add them below, or find me on Twitter @aidevnet.
And remember… the only constant is change.
Great post and so much truth in it. The only for sure about being in IT is change. The network is migrating from the “Can I Ping IT?” to focus more on the application characteristics.
Brad, thanks for reading the blog and for the comment. I agree with you, the network is becoming much more than just transport and making sure you have connectivity between two end points is no longer enough. What started with QoS is now being taken to the next level in which visibility and enforcement of the applications requirements and performance is key and a business differentiator.
Requires taking a close look at people, process and technology. Nice blog!
This is spot on! Engineers need to adequate the mindset to the industry trends. Not leaving your role behind you, but to enrich it much more and broaden your skill set.
Thanks for this write-up!
Thanks for the comment, David. I believe there is currently massive innovation across all industries and aspects of life. From new medical procedures to renewable energy advancements to new transportation breakthroughs there has never been a better time for innovation. In one way or another IT is integral to all these changes and I am extremely grateful for being part of it. In order to take advantage of all these innovations we have to keep up to date and continuously learn and like you said broaden our skill set.
Adrian, Great post! Breaking down the fogginess that most people experience when thinking about “DevOps” and Programmability is key (in my mind) for understanding how to take the next step in our careers and businesses. There are so many classic hurdles we’ve put in front of ourselves as an industry that the journey into a systems that work for us can be seem overly daunting, but it’s not the case.
Thanks for bringing attention where it’s needed most… Cheers!
Great Article. I am seeing this with everyone of my customers especially in the Data Center where I am focused. The Networking trend is moving to a more open platform based around automation and programability. Those engineers who can adapt and change as the industry changes will be the most successful!
Definitely some great points made here – reminds me of the CLMel keynote, where Chris Dedicoat talked about the need for networks to evolve and become self-monitoring. The world is changing for sure, and the emphasis on evolving with it is well-timed and appropriate. It’s a great time to be a network engineer for sure!
Adrian, great post – I think your commentary on how us ‘old’ network folks need to keep participating in the new world of automation is absolutely key. It’s a great reminder that learning is a process and not a singular achievement.
I’m with Frank – us ‘old’ network guys have to keep hitting the books!
Great to see a full fiscussion of SDN and the whole Software Defined X paradigm
Key takeaways: keep an open mind, and keep learning. Great article!
Great article! Network programmability is the future and thank goodness we have DevNet to help provide the tools to make the transition. The DevNet labs are laid out in a manner that is non-intimidating and easy for anyone to start. The DevNet Sandbox allows us to get more hands on experience.
Thanks for the insightful article! It should be broadcast out to the STEM students and teachers of the world.
Laura, thanks for reading the blog and for the comment! We’ve already started reaching out to all the STEM teachers and students. What better community to start than Cisco’s NetAcad? https://developer.cisco.com/site/netacad/
Great post Adrian, the change is here, embrace it and use the tools (DevNet and dCloud) to help!
Congratulations Adrian! Great write-up… and so true!!!!
The only constant is CHANGE!! And is OUR time now to lead this change!
Can I just say what a aid to find somebody who really is aware of what theyre speaking about on the internet. You undoubtedly know how to bring an issue to mild and make it important. Extra folks have to learn this and perceive this side of the story. I cant believe youre not more in style since you undoubtedly have the gift.
http://johnnie16.angelfire.com/no-longer-seeking-data-related-to-commercial-roofing-check-out-this-page.html
great blog !
I hope i see you one day