Tactics are nice because we can work towards implementation today.
Unfortunately, tactics are short term and constantly changing. On the other hand, principles build foundations. Effective principles rarely change.
That is why DevOps is working to establish principles.
This is no different than any discipline establishing itself. Network optimization has a place in this discussion with its own set of principles.
Here are 8 network optimization principles for DevOps.
Network modeling based on your actual network
Let’s start from the beginning. This means planning the layout of your network through network modeling.
Currently, DevOps uses application models. It is easy enough to incorporate a network model as well. I say this with hesitation because it is common to create models that sit on a shelf somewhere. Never to be looked at. Don’t let this happen to you.
Create a network diagram and model that is useful, tactical and applicable. Not a theoretical model for how we would like our network to look, but how it actually looks.
Principle 1: Use applicable network modeling
Network monitoring leads to optimization
Monitoring, whether your network or applications, is the first step in optimizing. There is no shortage of tools either.
You can be using New Relic, Datadog, AppDynamics or any number of others. Incorporate your network monitoring software in your DevOps monitoring process to understand your problem areas.
Monitoring for network latency can be a telling sign of the health of your network. It will help you understand your network flow, which will alert to network congestion. Packet loss and jitter are also key metrics.
For this, you can use tools such as Thousand Eyes or SmokePing. For global network latency monitoring, you can use our new network monitoring tool.
Principle 2: Employ network monitoring
SDN is going to eat your network
Networking has a manual process proble. This is why network automation is only beginning to be a topic of discussion. Don’t put the cart before the horse. Before you can think about network automation, you need to use software defined networking (SDN).
SDN is applicable in the network optimization discussion as it allows remote changes. Infrastructure as code is already an important function within DevOps, and SDN makes this easy. Through SDN, problem areas are identified through monitoring and changes can be made immediately.
Principle 3: Launch an SDN environment
Segment your production environment with virtual private clouds
In the world of Amazon Web Services (AWS), we use virtual private clouds (VPCs). Using VPCs is an essential DevOps framework. If you have migrated to DevOps, you should be using this setup. Some cloud early adopters are not running this environment because their adoption predates VPCs.
VPCs allow you to optimize your network by segmenting and isolating applications and content. The important part for content is differentiating between your static and dynamic content. Then you can use different CDNs and network optimizers.
A side note to this discussion is the ability to set up test environments with test VPCs. Running a test environment will allow you to tweak performance before running in production. You’re a DevOps pro, so I think I am repeating what you already know.
VPCs are a great way to optimize performance.
Principle 4: Use a VPC framework
Build out your content delivery network infrastructure
Since the 1980s content delivery networks (CDNs) have been helping content providers optimize content delivery. You should be using one or multiple.
When you launch with a CDN, you can use many different CDNs for different purposes. This can be global coverage or how the CDN designates cacheable content. You can specify different CDNs with different VPC setups to optimize your content delivery.
A CDN is not the only answer. If you have your VPC environment set up effectively, you can complement your CDN with network optimizers and web accelerators. The CDN piece of the equation is essential.
Principle 5: Use one a more global CDNs
Don’t let DNS cause you headaches
DNS resolution is the cart before the horse problem. You cannot request content from a server unless you have an IP address. The IP address needs to be communicated with the IP address you do not have yet.
Thus, there is a lengthy server communication process that occurs, which needs to be optimized. This is done through DNS caching or DNS optimization services.
The communication process ensures content is being served from the correct locations, which are closest to the user. That means correct communication is essential. Otherwise, you could be severing content from a location that is further away, rendering any optimization principles useless.
Principle 6: Optimize your DNS resolution process
Reduce your downtime with anycast BGP load balancing
If your website or application goes down, you have nothing to optimize. That is why using anycast to reduce failover is an important DevOps optimization principle.
Looking at your networking environment, if you do not have failover systems in place, you are susceptible to long periods of downtime.
The typical failover solution is an application of DNS. Unfortunately, this could leave you down for between 3 and 30 minutes. Yes, that is a large window of uncertainty. Using anycast BGP can decrease this to under 10 seconds.
Network downtime may occur. Minimizing its effects is absolutely a network optimization principle for DevOps.
Principle 7: Use anycast load balancing and failover
Join the NetDevOps sub-culture
Communication, collaboration, continuous delivery and automation. All things DevOps strives for. We want the same things for our networking teams. Networking, unfortunately, is facing different challenges.
Networking technology has forced manual processes and has made DevOps adoption difficult for networking. That is why NetDevOps is the bridge between DevOps and networking. As more tools allow for infrastructure as code, networking can begin adopting network automation and rapid networking changes.
Creating a NetDevOps culture will improve the communication between DevOps and networking. Collaboration is a foundational step to the optimization of any process. Everyone needs to be on board.
Principle 8: DevOps and networking collaboration through NetDevOps
Network optimization is a concern of DevOps and adopting these principles can help. From planning your network as you do application delivery, to the more cultural aspects of NetDevOps, principles do not change. Only after principles have been adopted can tactics play a prominent role.
To learn more about DevOps and networking, download the DevOps Networking eBook.