An enterprise may decide to use software-defined networking (SDN), but that does not mean it has agreed on the best way to design it. This can cause problems, unless the focus is on the applications running on that network. By providing flexible and self-serving networking capabilities, IT departments are empowering application owners to be more productive by simplifying deployment, accelerating the application development lifecycle, and reducing their dependency on IT.
Every single day, Microsoft Azure supports thousands of new customers, each deploying diverse applications, along with tens of thousands of associated network changes. As I explained in my earlier blogs, this is made possible through SDN, because it enables users to design their networks to meet the needs of each specific app, rather than trying to make the application fit network requirements. I'd like to share some of the best practices we've developed to help you optimize your SDN implementation.
During the design process, you have to acknowledge that your customers are the most important consumers of your applications. After all, they pay the bills and enable your business to grow. Most end users do not know or care about the backend infrastructure. All that matters to them is the experience they get when using your app.
Some of the newly proposed SDN protocols are designed to be application centric. It is important to not hinder your developers from providing the best possible user experience due to infrastructure restrictions. Rather, you should build the network around the app. This can be achieved with the flexibility that SDN provides.
You want to be like a spider building a web, where the web is your network, and your distributed application is like the twigs on a tree to which you are connecting. Spiders do not build the same web for every tree they occupy, and you should not use the same network for every application. Instead, spiders adapt their web to their surroundings, just as you need to adapt your network to the application. You must become the "application spider."
Nowadays enterprise apps are rarely self-contained within a single server or virtual machine. Apps usually have multiple tiers (such as web, business, and database) and multiple servers within each tier for high availability or redundancy. This distributed service must support a variety of network connections within and between each tier, from servers to storage, and to connect the customers.
Furthermore, each network may have different requirements, such as the protocols and APIs they use, the firewall and security settings, and the bandwidth and high-availability requirements. To optimize an application, the network should follow a few best practices:
- Use virtual machines and virtual networks to remove dependencies on physical hardware, simplify deployment and configuration, and provide application mobility throughout the datacenter.
- Use a centralized SDN management solution, so that networking changes can be controlled and monitored from a single location.
- Use templates or profiles for each of your virtualized networking components, such as NICs, switches, and ports, so that they can be configured correctly once and then redeployed consistently each time as the application needs to scale or move.
- If possible, follow these best practices across all the datacenters or clouds you manage, enabling your app to behave the same regardless of where it is running -- your primary datacenter, your disaster recovery site, a service provider's cloud, or even a public cloud.
To summarize today's lesson, Symon says to be the "application spider" and build your network around your app. This will provide the best experience to your most important consumer -- your customer. Next time, I will discuss the benefits of planning for a hybrid cloud infrastructure when deploying SDN.