Achieving Network Automation through Infrastructure as Code

Share
  • March 5, 2020

In today’s experience economy, organizations must rapidly modernize and innovate, or be overtaken by the competition. Customer demand for superior digital experiences continues to increase, and this is driving a wave of application modernization. Enterprise teams are tasked with delivering applications via a complex mix of networks and infrastructure that has become increasingly distributed and difficult to manage. They are spending an inordinate amount of time deploying, configuring, and managing network services and infrastructure, as nearly 80% of these activities are manually driven, according to Gartner. Time spent on mundane, repetitive tasks prevents engineers—and consequently, the entire enterprise organization—from being agile and responding quickly to changing business needs. There is an unprecedented need for scale and automation in network management.

Development and operations teams use their own tools to achieve high feature velocity and automated load balancing without appropriate input from their networking teams. As a result, enterprises end up with disconnected collections of cloud-specific network services and rats’ nests of dynamic services, IP addresses, scaling mechanisms, and routing updates. This slows down digital transformation efforts. To keep up in this age of modernization, network teams need to embrace automation, or be left behind.

SEE ALSO: Infrastructure as Code – Lessons learned from Dev to Ops

Automation and efficiency via infrastructure as code

The device-by-device approach that uses appliance-specific command line interfaces (CLIs) doesn’t adequately scale for today’s massively distributed, dynamic environments. To remain successful, enterprise teams must embrace network automation through infrastructure as code (IaC). Instead of configuring each device separately each time by running a script, network engineers create software files that define consistent ways of provisioning, configuring, and deploying infrastructure. For example:

  • An entire environment can be templatized for rapid provisioning, using a declarative approach to describe what is needed (e.g., to move this workload to a cloud infrastructure, it needs a virtual network with two public subnets, one having a compute instance, and the other, a compute instance with an attached block volume).
  • Network engineers can define and automate step-by-step deployment procedures as code with tools such as Chef and Ansible.
  • Configuration drift across multiple devices can be prevented by using provisioning tools like Terraform to treat every configuration change as a new deployment.

By treating infrastructure like software, the IaC approach provides several benefits:

Streamlined infrastructure management allows time for optimization

Rapid provisioning and deployment through automation with IaC improves operational efficiency and streamlines infrastructure management processes. Scripts can include spinning down resources not in use, potentially cutting costs and preventing orphan infrastructure components. By automating tasks with IaC, network engineers are able to focus on value-generating activities, such as optimizing for better performance or developing new architectures for modern apps.

Configuration consistency reduces risk

IaC helps to standardize infrastructure deployment, reducing the potential for errors and deviations. Changes to automation artifacts (e.g., configuration templates, policies, deployment scripts, etc.) can be tracked. This means no more accidentally overwritten configuration files or forgetting to update file names with new dates and times.

Version control becomes easier

Every change in infrastructure configuration can be tracked using software version control tools. The actual state of network configurations can be logged, tracked, and audited. This simplifies verification that changes were implemented as planned. With IaC, it is easier to review changes made by multiple people before the automation is triggered to run on production networks. If there is an issue, reverting to an earlier version of the code is also much easier.

APIs power IaC

IaC is made possible through application programming interfaces (APIs). APIs are simply how software on one system communicates with software on another system. In other words, the capabilities made available through the infrastructure’s API give us the ability to configure and manage the infrastructure as code.

The shift to using APIs to automate deployment, manage changes, and improve application performance means that API performance becomes an increasingly important criterion for success. APIs exposed to large numbers of requests will have the same requirements for scalability and performance as any web application. Enterprises should consider this not only within their own IaC strategies, but also when engaging with technology vendors that use APIs to integrate systems.

For example, in the case of DNS, DHCP, and IP address management (DDI), API performance can make or break the automation process. Simply bolting on a set of RESTful APIs to legacy DDI appliances—or their virtualized equivalents—does not guarantee a positive automation experience. Consider an enterprise scaling up DevOps from an initial 10 teams to hundreds of projects. The frequency at which they will need to allocate IP addresses, create subnets, and provision DNS servers to deploy their test and production environments will increase exponentially—from as little as 10 times to hundreds of times per month. Manually, this process would be all-consuming for a network team, but automating all of those activities via IaC requires API calls. The DDI solution’s API must be able to support this volume of calls and remain performant to keep DevOps projects moving forward and maximizing their investments in automation.

SEE ALSO: Tutorial: Infrastructure as code with AWS and Terraform

Additional considerations

When building a strategy for modernizing your network to support automation via IaC, it is important to consider infrastructure vendors, SaaS providers, and development tools that offer the following:

  1. Robust and comprehensive APIs that cover the functions that application and operations teams will need to automate a variety of deployment tasks, reliability operations, and performance optimization.
  2. Integrations with your DevOps, IaC, and process management tools of choice—makes it easier to snap into the rest of your environment.
  3. High-performance APIs that will minimize automation hiccups as more and more teams automate more and more tasks.
  4. Flexible and portable deployment characteristics that ensure that network services can be deployed anywhere your teams need them to be bare metal devices, VMs, public cloud, private cloud, containers.
  5. Scalability to grow as your usage/network/applications grow—beware of virtual appliances that perpetuate the limitations of physical network applications with artificial licensing limits, such as compute capacity or number of data queries resolved per second.

Conclusion

Enterprises must develop, deploy, and update applications faster and more efficiently than ever, which is driving the increasing demand for automation and efficiency in network management. IaC is a beneficial step toward achieving these goals, but APIs and integrations should be designed to be performant and scalable to meet enterprise automation needs. As a result, large teams of developers and network engineers will be able to successfully collaborate to deliver business value—usually in the form of new innovative applications and services for prospective customers.

The post Achieving Network Automation through Infrastructure as Code appeared first on JAXenter.

Source : JAXenter