Skip to content

Simplifying Network Automation with NetOrca: A Declarative Approach

Introduction

In the modern networking landscape, automation has become a crucial component of managing increasingly complex infrastructures. Traditional network automation methods, often implemented in a non-declarative manner, have served as the backbone for automating repetitive tasks, reducing human error, and improving overall efficiency. However, these methods come with inherent challenges and limitations that can hinder scalability and flexibility.

The Challenges of Non-Declarative Network Automation

Non-declarative or imperative network automation involves writing scripts that detail every step required to achieve a desired network state. While this approach offers control over the automation process, it also brings several drawbacks:

  1. Complexity and Maintenance: As networks grow, so do the scripts needed to manage them. These scripts can become complex, difficult to maintain, and prone to errors, especially when changes are needed.

  2. Lack of Abstraction: Non-declarative automation tightly couples the "how" of the operation with the "what." This means that even minor network adjustments can require significant rewrites of automation scripts.

  3. Scalability Issues: Scaling non-declarative automation across a large network infrastructure can be cumbersome. The rigid structure of these scripts can struggle to adapt to the dynamic nature of modern networks.

  4. Inconsistency: Since non-declarative scripts are often written by different network engineers, there can be inconsistencies in how tasks are automated, leading to potential configuration drift and operational inefficiencies.

Given these challenges, the networking industry has been gradually shifting towards declarative automation approaches to improve flexibility and scalability.

The Declarative Approach to Network Automation

Declarative network automation shifts the focus from the step-by-step process of achieving a configuration to defining the desired end state of the network. In this model, the automation system itself determines the best way to achieve the specified state. This abstraction from the implementation details offers several key benefits:

  1. Simplified Automation: By describing the desired state rather than the steps to achieve it, network engineers can create more straightforward and understandable automation configurations.

  2. Increased Flexibility: Declarative automation allows for easier adjustments and scaling as network requirements change, without needing to rewrite large sections of code.

  3. Consistency and Reliability: Centralizing the desired network state in a declarative model ensures uniformity across the network, reducing the chances of configuration drift and errors.

  4. Focus on Outcomes: This approach allows network engineers to focus on what needs to be achieved, rather than how to achieve it, streamlining operations and improving efficiency.

My Experience in Network Automation

During my time working as a developer for an Internet Service Provider (ISP), I encountered firsthand the challenges of traditional, non-declarative network automation. The company had multiple large software systems with different APIs, each serving a critical function. There was a customer portal that handled product sales, and an Operation Support System (OSS) responsible for applying configurations across different parts of the network for each product sold.

We faced the daunting task of creating a middleware solution to translate these disparate APIs into a cohesive workflow. This project proved to be an endless cycle of development, riddled with errors and exceptions that constantly needed fixing. The OSS team, burdened with a heavy workload, had limited capacity to make necessary changes, leading to long waits for new features to be implemented. It was clear that the non-declarative approach we were using was not scalable and was holding back our ability to innovate and respond quickly to customer needs.

How a Declarative Approach and Microservices Could Have Solved These Problems

Reflecting on that experience, it’s clear that adopting a declarative approach could have significantly alleviated many of the challenges we faced. Instead of focusing on translating APIs manually and dealing with the intricacies of each system, we could have implemented a declarative framework where the desired end state of the network was clearly defined.

By centralizing network configurations in a platform like NetOrca, we would have been able to specify what we wanted the network to achieve without getting bogged down in the details of how to accomplish it. This would have allowed us to simplify the automation process and reduce the errors and exceptions that plagued our middleware solution.

Moreover, integrating multiple microservices to handle specific tasks within the network could have transformed our operational model. Instead of relying on a single, monolithic OSS system with limited flexibility, we could have broken down the automation tasks into smaller, specialized microservices. Each microservice could focus on a single job—such as configuring a particular type of device, applying security policies, or managing customer profiles—based on the declarative model set in NetOrca.

This approach would have offered several benefits:

  1. Modularity and Flexibility: By breaking down the automation tasks into microservices, we would have gained the ability to easily update or replace individual components without disrupting the entire system.

  2. Scalability: As the network grew, we could have scaled individual microservices to handle increased loads, ensuring that the automation system could grow alongside the network.

  3. Faster Feature Deployment: With a microservices architecture, the OSS team’s limited capacity would no longer be a bottleneck. New features could be developed and deployed independently, reducing the time customers had to wait for updates.

  4. Multiple Service Providers for a Single Task: By adopting a declarative approach, multiple service providers could offer solutions for the same task. This would foster competition, allowing clients to choose the service that best fits their needs, thereby enhancing service quality and choice.

  5. Ease of Introducing New Devices or Services: When adding new devices, services, or parts of the network, we could introduce a new microservice to handle this specific function. This modular approach eliminates the need to update legacy systems or code, enabling faster implementation and reducing the risk of introducing errors into the existing system.

  6. Seamless Migration: Customers could be gradually migrated from an old service to a new one without disrupting their experience. The declarative model ensures that both the old and new services conform to the same desired state, minimizing the risk of failures during the transition.

  7. Track Customer Requests and Implement Charging: With a declarative approach, it becomes easier to track customer requests and manage them centrally. This opens up the possibility of introducing a charging mechanism based on the specific services requested by customers, adding a new revenue stream and improving service management.

  8. Decentralized Service Provisioning: In a declarative environment, every department or employee could provide a service without needing to be a part of the core software engineering team. This decentralization empowers more teams within the organization to contribute to the network's functionality, increasing agility and innovation.

  9. Security and Isolation: Microservices can operate behind a NAT (Network Address Translation) and within a private network, fetching their requests from NetOrca. This reduces the need for them to be exposed to the internet, minimizing security risks while ensuring that the network automation process remains efficient and secure.

In hindsight, a declarative approach, combined with a microservices architecture, would have enabled us to create a more robust, scalable, and efficient network automation solution, allowing the company to better meet the needs of its customers and adapt to the rapidly changing networking environment.

Conclusion

NetOrca represents a significant step forward in network automation, addressing the limitations of traditional non-declarative approaches. By centralizing network management and embracing a declarative model, NetOrca enables scalable, flexible, and efficient network automation. As networks continue to grow in complexity, platforms like NetOrca will be essential tools for network engineers looking to streamline operations and focus on strategic initiatives rather than getting bogged down in the minutiae of automation scripts.