Making the DevOps DNS Connection
|Kimberly Lacerte in DevOps Friday, August 25, 2017|
How DevOps and DNS technology are helping DevOps teams improve their continuous delivery lifecycle.
DevOps wants to be both fast and accurate. Automation is a necessity here 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.
DNS Then and Now
The internet is tested and taxed in ways that were not even conceived of when it was originally designed. Yet it has become a mission-critical entity for the world's commerce. One of these early elements, DNS, is now a potential bottleneck for network performance in general and DevOps teams in particular.
One of the benefits of cloud computing is that it enabled 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.
Organizations today need an intelligent DNS solution to avoid such bottlenecks. Because servers and applications can be created or removed in near-real time, the solution must provide high performance standards with low-propagation turn-around times, a robust API for integration and automation with IaC, and service discovery.
The rapid delivery of applications and services is one goal of DevOps continuous release. As previously mentioned, another is removing bottlenecks to the development, testing and deployment cycles. The intent is to create an environment where the work isn't hampered with computer delays and frustrations.
Today, developers can simply click a mouse and can generate (or remove) 100 virtual servers by using Infrastructure as Code. Intelligent DNS with rapid change propagation is essential. Waiting for 30 minutes to see DNS changes appear at the edge servers delays your project.
IaC software and service discovery processes move quickly; so must your DNS. An essential piece in choosing DNS vendors to support your DevOps environment should include speed testing for the network's propagation of changes.
How DevOps and Infrastructure as Code Are Connected
To achieve the goals of DevOps, teams need 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:
- Version Control: Allows the method track and rollback changes to your infrastructure as needed.
- Unit/Integration Testing: Allows validation of your infrastructure code within various phases of the DevOps pipeline and gives you confidence about what you are pushing to production.
- Infrastructure Blueprints: Empowers the reusable, consistent, and rapid deployment part of Infrastructure as Code.
Another recent element, Configuration as Code (CaC), provides a method of creating infrastructure blueprints. Tools like Terraform and Ansible 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.
IaC is a next-generation capability for DevOps environments. 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 in the Age of DevOps
DevOps requires support for service discovery. This 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.
The high scalability and rate of change of modern infrastructure mean that keeping track of service information inside a periodically updated database doesn't work anymore. 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).
If you are closely knit together with your managed DNS provider as part of your overall strategy, the advantage is that service discovery can work hand in hand with the DNS configuration so both systems remain in sync.
Continuous Delivery Requirements
DevOps demands the same types of robust features you would have for internet traffic: end user-facing DNS. You should align with a vendor who can provide the flexibility, agility and reliability you require to deliver your applications.
These features should be part of a provider's offerings:
- Zone Transfers allowed and easily facilitated.
- An anycast DNS network.
- Native integration with common DevOps tools such as Terraform and Ansible.
- 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.
In light of several recent high-profile outages, an additional best practice is to add redundancy to DNS. Because no single provider is invincible, use at least two authoritative DNS providers. Using the above recommendations will help DNS do the job it needs to in support of the DevOps model.
Learn the best ways to organize your app development projects, and keep code straight, clients happy, and breathe a easier through launches.
Write and run code every step of the way, using Android Studio to create apps that integrate with other apps, download and display pictures from the web, play sounds, and more. Each chapter and app has been designed and tested to provide the knowledge and experience you need to get started in Android development.
How to create a profitable, sustainable business developing and marketing mobile apps.
This content is made possible by a guest author, or sponsor; it is not written by and does not necessarily reflect the views of App Developer Magazine's editorial staff.