Network automation best practices for DevOps
// Cumulus Networks Blog
Optimizing a network for maximum efficiency almost always requires some level of automation. From provisioning resources to configuring processes and applications, network automation can improve upon the consistency of network operations while also reducing the resources needed to maintain the network. That being said, network automation can be exceedingly complex as well. Following network automation best practices is necessary to ensure that automation doesn't interfere with or compromise the network.
Create a centralized hub for automated services
As networks grow, it can be tempting to add new services and tools one by one. Unfortunately, piecemeal additions can quickly become haphazard and difficult to maintain. Automated services should always be controlled through a single API or centralized hub, to improve upon reporting, maintenance, consistency and optimization.
Network automation suites have been developed to be robust enough that they can use the same code base for computing, networking, and storage, thereby significantly simplifying network optimization and other related processes. Ansible is one example of a network automation tool that can help you embrace DevOps as a network automation best practices, though there are many others. IT departments will find the process of automation easier to manage and maintain when filtered through a centralized monitoring and reporting system.
Use DevOps principles as network automation best practices
For a better and more stable environment, it's a good idea to apply standard DevOps best practices to the specific processes of automation. DevOps best practices are specifically designed to reduce risk and improve upon efficiency, which works extremely well for network automation overall.
- Propose changes regarding automation. Before any work is done, a comprehensive proposal should be completed. This eliminates any network changes that may be unnecessary and reveals any potential concerns early on.
- Add network automation to version control. Rather than adding network automation to a system separately, it should be included within the version control for the system. Network automation impacts the entirety of the infrastructure and should be treated as such.
- Test and approve network management optimization. Before network automation is completed and approved, it has to be tested in an environment that is as similar as possible to the live environment. This will reveal issues before they become a problem.
- Promote changes into production after testing and approval. Changes should only be promoted to production once carefully vetted.
Using these best practices will avoid two major issues: resources being consumed at greater than predicted rates and potential issues with security or functionality.
Resist the temptation of custom coding
There was a time when custom coding was considered to be a best practice in and of itself. Developing solutions from scratch allowed for optimal resource usage, paring down to strictly what was needed. But as technology has changed and advanced, the benefits of custom coding have been outweighed by the negatives. Custom coding now takes more time to maintain and can be easily broken by upgrades and updates.
It can also be prohibitively difficult for custom programs to maintain the level of security necessary for a network's services. Though a custom coded automated service may be well-optimized, it may not be able to work with a load balancing system or other network technology. Overall, a single code base or API will make the task ahead far easier, both in terms of implementation and maintenance.
Begin automating from the ground up
Automation is most frequently utilized for configuration and provisioning first. From there, the most basic and simplistic services should be automated first — such as simple error recovery. By beginning from the ground up, an organization can achieve the most significant efficiency gains without a substantial investment of resources. As systems become higher level and more complex, the network will experience diminishing returns in terms of automation.
Remember the "black list"
There are certain items that should usually not be automated. While there may be some exceptions, automating these items could cause other issues.
- Sensitive workloads. Automation is designed to improve upon business operations. When it comes to sensitive workloads, it is more likely to interfere and cause problems rather than resolve them.
- New and advanced applications. Newer applications often manage their own automation and load balancing; adding on another layer may actually cause further problems.
In general, if a service or process is complex — and if the idea of automating it appears overwhelming — it's a bad idea to automate it. Automation is intended for simple tasks that do not usually require human intervention.
Always keep complete control over reporting
Reporting is by far the most important component to network automation. All automated processes must consistently report both their state and their results — and a failure of automated processes must be immediately prioritized. Without a comprehensive reporting process, it becomes difficult for administrators to track and identity problems — and small issues can eventually snowball into much larger and more significant ones.
By following the above network automation best practices, DevOps can integrate their system with automated processes without unnecessarily exposing their organization to potential risk factors. These best practices will create stable changes in a system targeted towards future-proofing and resource management. When properly managed, automation will reduce administrative overhead and make it far easier to scale a system moving forward.
Are you interested in automating your network? Check out NetQ, a telemetry-based fabric validation system that ensures your network is behaving as it should. Or, head over to our solutions page and read more about NetDevOps and network automation best practices.
Read in my feedly
Sent from my iPhone