DevOps Networking Solutions
When building and delivering software, DevOps practices, such as automated testing, continuous integration, and continuous delivery, allow organizations to move more quickly by speeding the delivery of quality software features, that increase business value. Infrastructure automation tools, such as Chef, Puppet, and Ansible, allow the application of these practices to compute nodes through server provisioning using software scripts. These scripts are first-class software artifacts that benefit from source code version control, automated testing, continuous integration, and continuous delivery.
When using software to define networking, the same DevOps practices that help provision and configure compute nodes can be extended to cover provisioning and configuring the network. As Brent Salisbury points out in his blog post titled The Network Iceberg, compute nodes in today's data centers have evolved with the help of operating system (OS) virtualization, as bare metal servers were condensed into many virtual machines running on a single physical host. Virtual network endpoints now outnumber physical network ports.
The next phase of this evolution is virtualizing the application with the help of containers. A single OS instance running a container platform such as Docker can host many application containers. Each container is a separate endpoint on the software defined network (SDN), increasing the network density. In the quest for independently testable and deployable program units, applications will be architected into a series of micro services. Application function calls that previously occurred within the same process in the OS will be called amongst separate services on separate containers, requiring network connectivity to support these interactions.
More than a decade ago at a medium-sized enterprise I consulted for, the network admins were using Excel spreadsheets to keep track of their network configuration. Today many organizations are still doing the same thing. With the ongoing explosion of network density and complexity within the virtual world, we can no longer rely on Excel spreadsheets or manual testing to manage network changes.
It is important to point out that there is not yet any single canonical technology to configure both the physical and virtual network. SocketPlane, Flannel, and Pipework are early pioneers in managing container virtual networks. SDNs will enable the network space to gain the efficiencies that the compute space gained through source control, automated testing, continuous integration, and continuous delivery.
Every two weeks, the SEI will publish a new blog post offering guidelines and practical advice to organizations seeking to adopt DevOps in practice. We welcome your feedback on this series, as well as suggestions for future content. Please leave feedback in the comments section below.
To listen to the podcast, DevOps--Transform Development and Operations for Fast, Secure Deployments, featuring Gene Kim and Julia Allen, please visit http://url.sei.cmu.edu/js.