Networking world has witnessed heated debates over SDN over the last 2-3 years. Even today, there are debates raging over what SDN is or what it should be. In the middle of all this hype and heated debates between SDN enthusiasts, skeptics and neutral observers, we are beginning to see 1st generation SDN products hitting the market. A survey by the market research firm Infonetics suggests that 87% of medium and large N. American enterprises surveyed intend to have SDN live in the data center by 2016. Only time will the success of SDN and the kind of SDN model that will be adopted (centralized vs hybrid).
Many organizations are now beginning to prepare themselves for the kind of skills and competencies required to run Software Defined Networks. A frequent query that comes up in these discussions is whether or not Network Engineers should learn programming skills. When you look at the structured programming interfaces such as C, Java, and Python provided by SDN vendors, one wonders whether or not a Network Engineer needs to learn these programming languages. These topics were touched upon in a recent article in Network Computing and a blog entry by Greg Ferro.
I agree with Greg that the programming skill would be nice to have to gain insight into the application world, but it may not be needed in the long run as SDN platforms mature and we may have enough abstractions to help address common use cases. In the initial days, programming might be required to address shortfalls in the SDN products. But these skills can be borrowed if the Network team does not have them. In addition, Enterprises do not want to develop and maintain custom applications unless it is a critical business need. On the other hand, scripting skill is highly useful. Network Engineers like me have always found scripting to be very useful to make our lives easier by eliminating or minimizing repetitive and/or structured tasks from our daily routines.
When you consider the Network Life-cycle, other interesting things emerge. Broadly speaking, we can break network life-cycle into Build and Run phases. We should be aware of many unique requirements of these phases not only in terms of skills required, but the size of the network team required as well.
The Network Build Phase will require architects and designers to have software integration skills due to plethora of options available and interoperability will become a key issue if it involves multiple vendors. This is especially the case in Data Centers where SDN controllers will have to integrate with Northbound applications via APIs. These may include virtualization management, network automation, network management and cloud orchestration tools. Cross-technology skills will become crucial for DC network architects & designers to ensure success of these complex software integrations.
The Network Run Phase is where SDN will likely deliver its benefits the most in the form of increased automation. This will require us to change our mind-set from administering the network to orchestrating the network. If and when this becomes a reality, we will be forced to size the Network Operations team size appropriately as simple/repeatable/structured tasks will be automated leading to fewer folks at the bottom the skill pyramid. These might include VLAN, ACL, QoS, basic security and server load-balancing policies among many other things. Since failure is an underlying feature of any complex system, the complex software integrations and sticky architectures will elevate the importance of Network Specialists with deep skills who will help keep the networks running.
We can draw a parallel from what has happened in the Enterprise Telephony market. With network convergence becoming increasingly popular about 15 years ago, Data Network Engineers quickly learned the voice technology to enable VoIP and IP Telephony in their networks. Over the last 10 years, industry has evolved from IP Telephony to Unified Communication & Collaboration (UC&C) which today is mostly software and application integration play requiring UC&C Engineers to be well versed in LDAP, Messaging, IM, SIP Federation etc. While UC&C platforms provide APIs for custom application development, I have rarely come across UC&C Engineers who can also develop custom apps as well. Typically it is left to the application developers to customize UC&C apps for a particular use case that an organization needs. Teaming is required between application developers and UC&C Engineers to ensure success of such projects. I envisage similar things to happen in SDN space as well where we have to team up with application developers to build custom use cases. It should also be noted that many mature UC&C platforms today provide many features and functions which required custom development just a few years ago.
In summary, to build and run SDN networks:
- A sound understanding of networking technology will be highly valued. There is no getting away from the fundamentals.
- Cross-technology skills will be essential (more so in Data Centers where complexity is higher)
- Scripting skills will be very useful in creating quick and dirty automation use cases which may not be readily available in SDN products
- Programming skill will be nice to have, but not a must. In the long run, SDN maturity should enable availability of higher level abstractions for Network Engineers to address most of the use cases easily without the need for custom programming.