October 22, 2014 | Written by: John Tracey
Share this post:
Many people have heard the term “software-defined networking,” or SDN. Fewer people understand, in practical terms, what SDN can do for them. In this post, I provide a brief introduction to SDN and describe what it can do for you in the cloud.
Perhaps the key advantage of the cloud is that is allows you to provision infrastructure and services quickly. Rather than having to order, install and configure a bunch of servers, you just spin up a bunch of virtual machines (VMs). Some cloud environments, such as IBM SoftLayer, allow bare metal servers to be provisioned as easily as VMs.
Of course, deploying an application requires not only servers, storage and networks (in other words, infrastructure), but also higher-level services. Example services include load balancers, web servers, application servers, databases and monitoring facilities. Automatic provisioning of server, storage and network infrastructure is known as infrastructure as a service (IaaS). Simplified deployment of higher level services is referred to as software as a service (SaaS).
It is common for applications to rely heavily on the network. From a cloud perspective, applications tend to rely heavily on network IaaS and SaaS. In traditional data center environments, provisioning network infrastructure and services is one of the most challenging parts both for deploying a new application and enhancing an established one. Network aspects often account for a lot of the time required to deploy or modify an application. This makes the network a “target rich environment” for improvement. It also maximizes opportunities to simplify deployment by utilizing the cloud.
Typical network infrastructure and services on which applications rely include:
• Ethernet switches
• IP routers
• Virtual private network (VPN) gateways
• Load balancers
• Network address translation
• Intrusion detection and prevention
Traditionally, network infrastructure and services are provided by hardware devices. This is one reason the network has historically been one of the most time-consuming aspects of application deployment.
With software-defined networking, the network infrastructure and services are provisioned and configured entirely through an application programming interface (API). For example, a network can be provisioned using a REST interface which is typically accessible by both a command-line interface (CLI) and graphical user interface (GUI). Similarly, higher level services including all those listed previously and more can be provisioned by an API. This allows entire application environments to be delivered largely as code. It minimizes reliance on tribal knowledge and extensive manual intervention.
Of course, the view just presented is the ideal SDN vision and your experience may vary in practice. Today, typical cloud environments provide only a subset of network infrastructure and services in a software-defined way. Networks and routers are commonly provided, but software-defined firewalls and intrusion prevention are not yet as prevalent.
The trend is unmistakable, though. More and more network infrastructure and services in the cloud are becoming software-defined. As this trend progresses, the time required to deploy even network-intensive applications in the cloud will decrease, at least for those who know how to utilize SDN.
If you have any questions regarding SDN or simply have a different take on it than what I presented here, please let me and others know by continuing the discussion below and reaching out to me on Twitter @jmtracey.