Over the last few years, DevOps adoption has been on the rise. In fact, Forrester dubbed 2018 as the year of enterprise DevOps.
What is DevOps? What is its impact? What are the key features that network infrastructure must support to achieve successful DevOps outcomes? This blog answers these questions and more
What is DevOps?
DevOps was coined by combining “development” and “operations”. It’s a set of tools, processes, and above all, a cultural mindset that fosters close collaboration between development and operations teams.
Before DevOps, development, and operations, teams operated in silos. They would execute on every aspect of the product lifecycle - from requirements gathering through design and development to product operation in an isolated manner. Once code was written and tested by developers, it was simply “thrown over the wall” to operations teams who have to deploy and manage it in production. Development teams were unaware of the constraints and requirements of running their software in production environments. It led to failures in production that consumed a significant amount of time to fix. Because there was less cooperation between these teams, software release cycles were longer resulting in slower innovation as new features were not introduced in a rapid fashion.
DevOps solves these challenges by requiring development and operations teams to be engaged and involved at every stage of product development and deployment. It attempts to minimize friction between these teams by providing autonomy to development teams so that they don’t have to rely on IT to provide the necessary infrastructure needed for development and testing. It drives agility and speed by encouraging teams to automate mundane tasks thereby eliminating human errors. By measuring and monitoring software in production, constant feedback is provided to development teams. All these results in shortened delivery time, higher quality and improved communication and collaboration.
Tangible benefits of DevOps
Embracing DevOps results in significant advantages. These include
Faster time to market because of higher deployment and release frequency
Stable operating environments due to both lower failure rates in production as well as faster recovery times from failures
More productive teams due to improved collaboration and cooperation
According to Accelerate 2019 State of DevOps report, high-performing DevOps organizations achieve over 200x more frequent deployments and over 2600x faster recovery times. These outcomes have been realized by both forward leaning organizations such as Amazon which deploys code every 11.7 seconds as well as more traditional enterprises that have been in existence for a long time - release frequency for Nordstrom’s mobile app, a well known American retailer, went from twice per year to monthly.
5 traits network infrastructure must have to support DevOps
To achieve DevOps success, new thinking and approach to network infrastructure are required. Network infrastructure must have the following attributes:
Automating repetitive tasks such as configuring DNS or a firewall saves a lot of time and effort. Automation eliminates manual errors by standardizing deployment and configuration of network infrastructure.
Infrastructure as code (IaC) is a means to achieve automation. It entails using code/API to create, modify and shut down infrastructure. By managing infrastructure using code, a repeatable, consistent configuration can be created. This code can be version controlled which serves as a form of documentation - it’s easy to detect what changes were made by whom in case there’s an issue. And if there is an issue, rollback to a stable state is quick and easy. Standardization puts an end to ‘it worked on my environment’ or ‘it worked on my machine’ - any issues are easily reproducible resulting in faster resolution times.
Support for IaC tools such as Terraform is essential for network infrastructure to advance DevOps practices.
Continuous Integration (CI)/Continuous Delivery (CD) Integration
Continuous Integration is a coding best practice wherein code is checked into version control repositories frequently. CI provides a consistent and automated way to build, package, and test applications.
Continuous delivery picks up where continuous integration ends and deploys applications in an automated fashion in a variety of environments - production, development, test, and sandbox.
There are a variety of tools such as Jenkins and Ansible that DevOps teams use for CI/CD integration. It is imperative for network infrastructure to integrate with these tools to accelerate deployment velocity.
DevOps teams spin up and spin down test/dev/sandbox environments routinely. Infrastructure may also be needed for short periods to account for seasonality or for handling sudden surges in traffic and demand. DevOps friendly network infrastructure must be elastic to support these activities. Appliance based vendors who provide network services are not scalable as they impose artificial limits on their usage (such as queries per second or leases per second) and require organizations to anticipate their needs in advance. When there is a need, organizations have to spend time procuring these appliances, waiting to receive them, and finally deploying and managing them - a very inefficient way to manage demand.
Support for containers
Containers are the foundation for developing cloud-native applications. Containers allow developers to package up application code and all its dependencies including libraries and other binaries, as well as configuration files needed for running the application. This enables applications to be executed quickly and reliably across a variety of environments. Containers provide flexibility and portability of applications across public, private, hybrid cloud, and even bare-metal environments. They are lightweight as all containers share the underlying machine’s OS system kernel. They also lend themselves to greater modularity - an application can be split into smaller components that perform one and only a single function. Applications built in this way are easier to develop, manage, and scale.
In order to support containerized applications, network infrastructure must first be compatible with containers - many legacy appliance based network services vendors are not. Network infrastructure must be able to configure DNS, allocate IP addresses for containerized applications, route traffic intelligently between containers and load balance for optimal performance. Network infrastructure must also support Kubernetes - the most widely deployed orchestration platform which again, many legacy appliance based network services vendors do not.
Development teams may need to configure network infrastructure for test/dev/sandbox environments. A siloed approach that requires development teams to submit tickets to network operations teams who use legacy appliances for delivering network services significantly slows down application development and deployment. Providing self service access to network infrastructure such as firewalls, load balancers, DNS for DevOps, and DHCP for development teams eliminates the reliance of these teams on network operations teams. It also frees up network operations teams from constantly servicing development teams. Self service with robust roles based access controls reduces the deployment time and increases efficiency.
NS1 accelerates DevOps adoption
NS1 has modernized the familiar and universal foundations of all network and internet services: DNS, DHCP, and IP Address Management. Our customers have witnessed dramatic improvements by seamlessly incorporating NS1 with their DevOps toolkits. A leading gaming customer reduced its code deployment time by over 95% by integrating NS1 into their CI/CD pipeline. NS1 provides a robust and comprehensive set of APIs to automate the delivery of network services resulting in an 85% reduction in DNS maintenance by our customers. As a containerized solution, network services can be easily scaled in seconds.