In Juniper Network’s anthology of 5-step frameworks, we take a different turn. Instead of focusing on a network domain vertical like the 5-steps for data center, campus, WAN and branch, we are focused horizontally across all domains on network automation. This 5-step can apply to any place in network, and be overlaid like a transparency, for example, over the data center 5-step.
Not 5-Steps to Network Automation
Sometimes you climb the ladder only to find it's standing against the wrong wall.
In the pursuit of network automation, a multi-decade long affair, the narrative and advancements mostly revolved around programmability which gave way to NFV and SDN. Despite those developments, network automation seems to have ricocheted back to center. We’ve realized that the average NetOps job has practically been sealed in a time capsule compared to the evolution of software engineering and related DevOps and SRE movements.
That’s not to say network automation hasn’t gone anywhere, but progress has largely been technological in the inner-workings of products: we have slightly more autonomous systems; we have abstracted and elevated systems across more network surface area; and we’ve created more APIs, making systems more automatable. Alas, all this one-sided network automation does not make an automated network.
What has failed to change? The forlorn customer and NetOps opportunity for automation.
The handoff from vendor to customer is still, on average, very siloed and impetuous. NetOps catch what comes over the proverbial DevOps wall and then has to run it. Then starts the same old crucible of some inaugural architecting, some less-agreeable administration and then hapless eons of daily toil and troubleshooting, trying to uphold availability. And we cannot forget our “friend,” IT gravity - pulling down issue triaging and blame fastest to the lowest common denominator, the network.
In brooding over that experience, surely NetOps itself is where the emphasis on automation is needed most, to evolve from automatable to automated. And the metamorphosis process cannot consider automation in the vacuum of technology alone, but rather must pay particular attention to amelioratingpeople and processes.
Where to Begin?
Transforming people and process, it turns out, is hard, but luckily there are bright spots to replicate. The DevOps movement copied the lessons of the manufacturing industry to change the way software engineering was done, and now the most successful NetOps teams are essentially copying DevOps.
It also turns out that network engineers don’t fancy being called developers because developers and associated app teams are often the ones dropping the headaches, falling with that IT gravity, down upon network engineers’ heads. While most don’t mind the term DevOps or DevNetOps, implying “developer” may induce ire and make network engineers want to duck for cover. Moreover, DevOps is a fairly amorphous set of principles, so the leading NetOps teams have drawn inspiration from site reliability engineering (SRE), a prescriptive implementation of DevOps and dubbed their transformational job: network reliability engineering (NRE).
This 5-step framework to automating NetOps is a journey to a more self-driving network, but most of all, a journey of engineering reliability and simplicity. The journey stars upskilled network reliability engineers capable of some coding and wielding the tools of automation to manage the service-level goals and indicators of reliability.
Think of the framework as a map. As you orient yourself and direct your path, you’ll see progress is seldom a straight line, and it won’t begin in the same place for everyone. In all likelihood, most networkers are at Step 1, manual ops, “riding the pine” in the automation game and gingerly operating their networks by the ITIL book. But we’re convinced that engineers are dedicated lifelong learners and their stagnation at Step 1 is not so much from hesitation, but rather because they’re busy firefighting and the network automation narrative has not addressed them directly until the rise of NRE.
The importance of taking the first step cannot be overstated, yet it has also historically been daunting and difficult for engineers without a software engineering background. This is why Juniper has just launched EngNet, NRE Labs, ATOM, free trials, hosted trials, labs, training and services to ease the first small steps to automating.
Reaching for Step 2, once you scientifically dissect some NetOps workflows then re-engineer what were manual tasks with some coding and tools, it’s a gateway and virtuous cycle to more automating. Finding, sharing and using these tools, you also buy yourself more time to automate, partaking in less toil.
STEPS IN DETAIL
Step 1 - Manual Ops
Manual ops are actually very useful for teaching how things work and fit together, but for tasks that are arduous, lengthy and especially repetitive, network engineers need to begin to document their tribal knowledge and workflows and assess the ROI of automating them.
To move to Step 2:
Adopt an automator’s mindset. Be a builder and a technologist, not a technician
Take documented workflows and automate them. At this stage it can be any ad hoc workflow to cut one’s teeth coding and using new tools for speed, scale and consistency
In addition to using the CLI documentation, explore the API documentation for individual systems
Find tools that already exist and dissect them. And build those that are customized and contextual to NetOps workflows.
Realize the value of abstractions and SDN so that the recreation of automation at the box-to-box or lower levels does not have to occur unnecessarily where proven systems exist. Automate on top of them.
Step 2 - Automate Workflows
In Step 2, you take documented workflows or their pseudocode and start automating small wins. The biggest pay off is in repetitive troubleshooting workflows, which are in fact an early form of testing and verification that will be useful in Step 3. Troubleshooting read-only workflows are a safer bet than re-configuration, re-deploy or read-write workflows. Automating changes during maintenance windows mitigates risk. But ultimately maintenance windows are an IT anti-pattern to avoid and changes are best handled with the reliability of a pipeline introduced in later steps.
To move to Step 3:
Progress beyond ad hoc automating. Begin to practice as-code and “GitOps” developer-like behaviors. Code means codifying, not necessarily programming. Use SCM workflows and a versioned source of truth for all artifacts, configurations and creations.
Configuration is not distributed and perpetually drifting, but declarative and codified and its changes are reviewed, as are programmed automated workflows.
Begin to think proactively of how to eliminate mistakes and manual triggers with both testing and sensors.
Connect the “then that” Step-2 automated and aggregate tasks that were manually triggered to now start getting automatically triggered. Thus, begin automating the “if this” to trigger the “then that.”
Use APIs and data from systems like Juniper AppFormix or other telemetry collectors and analytics systems in: 1. observability and decision making, moving to NRE service-level indicator tooling; 2. proactive testing instead of relying solely on reactive troubleshooting; and 3. automating “if this” sensors.
Step 3 - Automated Triggers and Networks as Code
Beyond provisioning, scripting and programming languages, at Step 3 you’re learning GitOps, version control and code reviewing. You’re embracing infrastructure as code and thinking about automating troubleshooting as testing and proactive verification. Test-driven network automation is inspired from test-driven development (TDD). It’s not sufficient to simply run scripts and fix problems later; but instead must build holistic tests that protect from failures.
Beyond proactive tests, we can be proactive about triggering some automated actions where event-driven frameworks will help. And proactive triggering requires building or using sensors. Sensors are sometimes based on telemetry and analytics systems that are also useful for providing or building service-levels indicators.
To move to Step 4:
Adopt a QA and testing mindset in making all changes, automating not only consistency, but accuracy as well.
Testing processes are inserted in between “as-code” and deployment on a pipeline. Congruent to software engineers using a DevOps pipeline, we could optionally call this a DevNetOps pipeline or networking CICD pipeline, like Juniper’s NITA framework.
Move toward expediting more frequent deployments without maintenance-window woes because of higher confidence in automated change testing.
Step 4 - Continuous Processes and Pipeline
Here, the technology and automation runtime takes on a new axis of pre-production instead of only in-production. Step 4 adds a CICD pipeline for running automated testing.
Continuous integration (CI) allows being able to integrate code changes at any time. For example, these could include programming changes or a configuration change. Reliable changes are made possible thanks to automated testing. The automated merging of sometimes concurrent changes into a safely tested main line and building the artifacts necessary for deployment is continuous delivery (CD).
Automating the deployment itself is also wise (here’s an example) and reaches toward continuous deployment (also CD). And even actual continuous deployment still involves manual judgements. Truly deploying any time, especially following the immutable infrastructure pattern, can cause controlled, isolated outages that require architecting and automating around the outage to preserve availability and not drop traffic. In microservice-crafted software, deployment patterns like blue-green, canary or rolling upgrades are more readily possible, but networks are not traditionally designed and architected for such things, although today some SDN systems are, and redundant or sliced hardware systems are closer to enabling it.
Beyond CICD, continuous response (CR) extends the event-driven if-this then-that from Step 3. Also CR acts mostly in production instead of in the phases of pre-production and deployment. CR with machine learning, deep learning and big-data analytics can be used for observability and automated regulation of networking systems to achieve optimization and efficiency far closer to the edge of the envelope than what a human would manage. See the Juniper blogs on self-driving networks for more on this concept.
Operations culture, observability and planning is data driven
Seek to understand system efficiency, effectiveness and satisfaction to customers (e.g. the up-stack IT organization or an SP’s actual customers)
Use chaos engineering and experimentation to understand system boundaries, limits and dependencies to optimize and plan for capacity and what-if scenarios.
Step 5 - Engineering Outcomes
While Step 5 is the last step, it’s still one of continual learning and growth. This allows quick and safe iteration on the network and fine tuning of processes to focus on higher-order reliability metrics and other goals. Don’t stop at network uptime - dive deeper and continuously improve the ability to respond to issues and change.
The network ceases to be the center of the universe in this step and an NRE specialized in networking will manage reliability with error budgets, toil budgets and service-level indicators (SLIs) like any other SRE. They do this for themselves with service-level objectives (SLOs) and for their dependents with service-level agreements (SLAs). They consider their reliability dependencies; for example, they may have reliability dependencies on software running on infrastructure outside of their control.
An NRE in this step has a world view in layers of separate concerns and understands their place in the stack.
With agreements, automation and tradeoffs, reliability is a goal to be managed, not necessarily maximized. Speed, agility, efficiency and other successes are incidental for the NRE meter that holds reliability and availability prerequisites to other useful economies.
Flip through our 5-step framework slides to learn more. Technologists seem mostly gripped by the 5-step tool landscape slide, but progress is less about what you use and more about how you use it.
Please leave a comment below about your journey and lessons, and finally, thanks for sharing these ideas that have long been missing in the automation discourse.