How DevOps and modern DNS work together

The DevOps model continues to gain traction because it’s an efficient and cost-effective development approach. It yields fewer errors, shorter development cycles and reduced need for expensive code fixes after deployment. One goal of DevOps is continuous development and deployment, which necessitates the automatic creation or removal of networks, as well as automated deployment to production. 

Automation is important because the fewer the number of manual steps involved, the less likely that human error will disrupt the process. Intelligent DNS improves DevOps project lifecycles by integrating with your software development and automation tools. Let’s take a look at intelligent DNS and the advantages and upgrades it offers to the DevOps project lifecycle.

Times have changed for DNS

The Advanced Research Projects Agency Network (ARPANET) of the 1960s and ‘70s has grown into the internet, an entity that is mission-critical for the world’s commerce. This system is now tested and taxed in ways that were not even conceived of when it was originally designed. One of these early elements, DNS, is now a potential bottleneck for network performance in general and DevOps teams in particular. 

When cloud computing came on the scene, it allowed DevOps teams to automatically create and remove servers as needed for development and testing. Infrastructure as Code (IaC) enables cloud computing to automatically build infrastructure using robust APIs that build servers and add applications as needed. Traditional DNS, with its mostly manual management, becomes a bottleneck for this automated rapid configuration of infrastructure.

Because servers and applications can be created or removed in near-real time, organisations need an intelligent DNS solution that provides high performance standards with low-propagation turn-around times, a robust API for integration and automation with IaC, and service discovery.

Take agile up a notch with DevOps

Sixteen years’ worth of lessons learned have gone into the agile programming model, which delivers applications and services at a high velocity. Rather than producing the code and tossing it over the wall to the QA team for testing, agile brings the QA tester into the development team. This creates a more cohesive workflow and improves the quality of the product overall. 

With DevOps, the concepts undergirding agile programming are extended. Rather than producing and testing the code, then tossing it over the wall to the Network Operations team to deploy, DevOps merges the development, testing and operations responsibilities. In short, DevOps should have the ability to break the silos within your IT environment and among the development, QA and operations teams.

An organisation’s ability to deliver applications and services at high velocity increases with DevOps’ combination of cultural philosophies, practices and tools. DevOps allows organisations to evolve and improve products at a faster pace than organisations using traditional software development and infrastructure management processes. This speed enables organisations to better serve their customers and compete more effectively in the market.  

How smooth is your round-trip?

One goal of DevOps continuous release, along with rapid delivery of applications and services, is removing bottlenecks to the development, testing and deployment cycles. This is aimed at creating an environment where the work isn’t hampered with computer delays and frustrations.

By using Infrastructure as Code, one click of a mouse can generate (or remove) 100 virtual servers. Intelligent DNS with rapid change propagation is essential. Waiting for 30 minutes to see DNS changes appear at the edge servers delays your project. 

Your DNS needs to move as fast as your IaC software and service discovery processes. An essential piece in choosing DNS vendors to support your DevOps environment should include testing for the network’s propagation of changes. 

Infrastructure as code: The DevOps connection

The DevOps team’s goal is to build and maintain its server environments to closely resemble the way that software developers build and maintain application source code.

There are three primary components of IaC:

●       Infrastructure Blueprints – Enables the consistent, reusable and rapid deployment part of Infrastructure as Code.
●       Version Control – Enables the method track and rollback changes to your infrastructure as needed.
●       Unit/Integration Testing – Enables validation of your infrastructure code within various phases of the DevOps pipeline and lets you feel confident about what you are pushing to production.

One method of creating infrastructure blueprints is Configuration as Code (CaC). Tools like Terraform, Ansible and Chef enable CaC. These configuration management tools, or platforms, enable a declarative way of handling infrastructure configuration. Infrastructure blueprints should always go hand in hand with unit/integration testing. Having a robust, API-driven, DNS network to couple the full automation of DNS changes alongside the infrastructure and configuration changes ensures a smoother process.

For DevOps environments, IaC is cutting-edge technology. When it is combined with CaC products, it changes the way software is built and delivered. Continuous integration and continuous deployment are a large part of the DevOps world that all still depends on DNS technology to connect everything on the network.

Service discovery and DevOps

Service discovery involves allowing your apps or servers to identify which services are available on the network and which IP addresses and ports are associated with them. Previous methods of tracking this information no longer work in the DevOps age. 

Keeping track of service information inside a periodically updated database doesn’t work anymore because modern infrastructure is so scalable and changes so quickly. Instead, you have to be able to discover services in real time and update your service information continually. Three common service discovery tools are: Consul, Apache Zookeeper and Etcd (with Registrator and confd).

A benefit of being tightly integrated with your managed DNS provider as part of your overall strategy is that service discovery can work hand in hand with the DNS configuration so both systems remain in sync.

Best practices

The same kind of robust features you would have for internet traffic are those that DevOps requires: end user-facing DNS. You should align with a vendor who can provide the flexibility, agility and reliability you require to deliver your applications. 

A provider should offer the following features:

● An anycast DNS network.
● Zone Transfers allowed and easily facilitated.
● An SLA that meets your needs for reliability and performance.
● A robust API to support automation, IaC, service discovery and other architecture and tool needs.
● Native integration with common DevOps tools such as Terraform, Ansible and Chef.

In addition to these features, it is critical to think about adding redundancy at all layers of the stack, including DNS. You should set up this redundancy with a minimum of two authoritative DNS providers, as no single vendor is infallible. These best-practice requirements will enable intelligent DNS that enhances the DevOps lifecycle.

Kimberly Lacerte, Content Marketing Manager, NS1
Image Credit: Profit_Image / Shutterstock