Let’s go for something controversial. I was recently having this conversation with John McGovern (IPvZero) – which one is better: SDN solutions, or straight up network automation and code solutions? So… Ansible vs DNA Center? Nornir vs ACI? Buy it off the shelf, or custom make your own solutions?
I don’t think it’s a black and white issue, and the likelihood is that the correct answer is “somewhere in the middle” or a “combination of both.” I get that. I know this. But that doesn’t mean I have to like it. You can, in fact, automate the controller solutions after all, and it’s a big part of the certification exams.
The thing is this. The DEVCOR exam pushes you past your limits. It drives you into big boy-or-girl network automation with CICD pipelines, mastering YANG for the real world, delivering custom made streaming telemetry solutions, even touching on K8s. And when you come out the other side of DEVCOR, you can do things that give you a real sense of power, like “oh, I’ll just custom make a full-blown solution to fit this exact use case.”
Jenkins is a CICD tool that can help you deploy network changes automatically after validating that it won’t break stuff
And it’s when you come to that realization that you start to think to yourself “I don’t really need a network controller or SDN solution – I am the network controller.” Dangerous proposition, to think that you are better than an entire sophisticated network automation solution like SD-WAN, SD-Access, Meraki, or ACI. But on the flip side, at that skill level, there is a pretty good chance that you can create a custom solution for your environment that fills in gaps, even large gaps, that SDN solutions can’t provide.
So I think the argument here is to think about it like this. From a network automation professional’s perspective, you should regard the SDN solution as just another, extremely powerful tool that you can use. Like, a ridiculously awesome Python library. But after a certain skill level, I do think the individual can create and deploy even more sophisticated solutions (read: provide a greater ROI) than just buying an SDN solution and calling it a day.
Let’s take me for example. I haven’t worked in a production network since losing my job in the field on April 30th this year. But if I were still out there slinging packets, I would be creating my own CICD pipelines, leveraging tools like Nornir (and probably a little Ansible), but also using SDN solutions as a tool to leverage, too. I think of the SDN solution as something that can both amplify your abilities while abstracting away a lot of the nitty gritty (unless there is a specific use case where you need to, say, use Nornir to handle some nitty gritty).
So, gun to my head? Which one do I think is better? For me, personally, if I have to choose one, I would take network automation because I believe that my current skill level has me at a point to where, quite frankly, I feel like I could just custom build any stable, secure solution that I want. For newcomers to both networking and code, I would say roll with an SDN solution. But if at all possible, my end goal would actually be to use both, thinking of an SDN solution as another tool to boost what I’m capable of doing with my own automation solution.