Introduction to Network Infrastructure Programmability Concepts
Introduction
This article addresses some essential fundamentals regarding computer networking infrastructure management, particularly the configuration management discipline. It aims to pave your journey, dear reader, to the network infrastructure programmability universe while focusing on ISP environments. Consider it as a guiding perspective for the foundation of software-defined networks (SDN). I hope you enjoy reading this article as much as I did when producing it!
To begin with, we need to emerge: why should we continue setting up and operating complex network environments the same way we've been doing for decades?
Have you ever thought about the several precautions and manual checklists that we need to consider whenever we are requested to activate services in our network? Service demands that require strictly manual efforts in such static and cumbersome environments, including projecting the change, producing the configuration roadmap and scripts, and classifying the impact. Moreover, we have to follow through with customer communications, reviewing capabilities, reserving the proper resources, and effectively and ultimately applying entire blocks of configurations to one or more networking devices, one device at a time. Also, archiving those change procedures, results and documentations afterward, monitoring its outcomes, and, eventually, supporting whatever happens next if things go wrong or don't work as expected.?As I said, cumbersome!
You probably realize that there are many risks and complications throughout the execution of these manual processes, but that, somehow, you are more than used to it. It's in our cultural behavior, something that has been with us for many, many years. We kind of "love" doing things in such a manual way! But, wait, as far as effectiveness, time management, and risk management go, this is something we must avoid at all costs in modern infrastructures! As for this proposed evolution, I will provide you some good reasons to understand better my visions and the direction the industry is taking regarding this redefinition of our operational practices: we must treat our computer networking infrastructure as a code!
How networking programmability can help overcome various challenges of traditional operations models
Attenuation of the overall operational complexity:
While this is not exactly the reality for every company, perhaps not even yours, in this case, the fact is that there are many genuinely complex computing environments full of many different types of hardware and software components. "Crammed" with equipment such as routers, switches, firewalls, load balancers, content filters, security appliances, servers, storage, as well as databases, applications, desktops, video conferencing units, various multimedia communication systems, WiFi controllers, hotspots; the list is "endless"!
Each of these devices, either physical or virtual appliances, requires its startup and running configurations! And all these components and devices need to communicate with each other through a wide variety of technologies, including protocols, infrastructure and transport services, computing, storage, applications, and the like. In most companies, such configuration maneuvers are conducted entirely through manual processes, even if it happens, in some or many cases, in an organized and guided way, such as following procedures, good operational practices, functional models, documentation; you name it!
However, as our networks grow, whether in numbers of desktops/users or servers, or, especially, the diversity of technological solutions present, the whole environment starts to get much more complicated to maintain, manage, and troubleshoot. All this operational complexity can be brutally attenuated with the proper selection of infrastructure programmability technologies and strategies.
Massive reduction in service provisioning time:
Service provisioning or activation (long) times is quite a reality for virtually any company of any size, but certainly one of the leading business performance indicators for Internet service providers and content providers. The lower, the better. Generally, an entire workflow needs to be fulfilled so that the demand can be adequately understood. Secondly, the proper change approval chain can be established so that specific teams can identify the associated risks and resources needed. These resources include developing the necessary configuration scripts, risk management, customer communications, contingency, rollback plans, and the actual workload execution. This tends to be performed at particular scheduled times, but it typically takes a long time from service request initiation to its proper execution/completion. Boring, but necessary!
On the other hand, agile infrastructures, which make use of extensive orchestration and automation capabilities, can provision services much faster than these traditional and static environments and can even be immediate sometimes, depending on the processes that the organization establishes. And almost risk-free regarding outcomes.
Drastic reduction in operational efforts and costs associated with configuration and provisioning tasks:
It is not simply a matter of "configuring something on the network," but rather understanding what needs to be configured and activated in the first place. What features or functionalities, elements, devices, and systems need to be modified for the viability of a particular service activation; syntax interpretation, syntax characteristics, and semantics, compatibilities, systems integrations; whether or not there is an approved standard or model to fulfill these provisioning tasks.
It undoubtedly requires more than just effort, time, or a deadline: it involves knowledge, knowing what to do exactly (and what not to do!), mastering the technologies involved in the process, and understanding the relationships and interdependencies of each case, which further stresses the need for more expertise and mastery of the required technologies. And all the work performed in these stratagems requires some effort, little or a lot, I won't dare to measure it here, as there are cases and cases. Undoubtedly, programmable networks along the lines suggested by this article can reduce by at least 90% the operational efforts typically required or employed in traditional network environments.
领英推荐
Drastic reduction of business risks associated with possible and frequent downtimes:
As if the complexity, operational efforts, and time/deadlines were not enough, we still have to worry about possible impacts often due to failures caused by human mistakes during the configuration and provisioning of services. Many of these risks can be considerably reduced with the help of consistent change management processes and practices (such as COBIT/ITIL recommendations). Regardless, the fact is that nothing exceeds the reliability of provisioning cycles performed by orchestration and automation technologies and tools, which is one of the biggest attractions of this whole infrastructure programmability universe.
Greater agility and elasticity toward the availability of more complex infrastructure solutions:
The time a company spends "rowing against the tide" conducting extensive and monotonous manual setups can be used or reverted instead to unlock many other opportunities to develop more attractive and high-value-added solutions to its customers and make its teams work more efficiently. Combining multiple customer-centric product and service offerings requires integrating sophisticated and complex pieces of hardware and software, which tends to drive further the cases mentioned above in this article. It adds up considerably to greater complexity, more significant and undesirable efforts, higher operating costs, much longer go-to-market deliveries, and more significant risks of outages due to unforeseen failures. It is all about being error-prone in the first place.
When we think about highly programmable infrastructures, we can extend the orchestration and automation capabilities to contemplate the network infrastructure like many organizations do with their computing band, including desktops, servers, databases, storage, and applications. As a consequence, promoting tremendous technological leaps for the company's competitiveness and attractiveness.
Get ready to become a NetDevOps!
There is a noticeable difference between the dynamism present in computing environments involving virtual servers, containers, applications, and things that happen in network infrastructures. The networks we are used to seeing around, in general, have much more static operational characteristics than this field of servers, software development, and applications, but not in all cases, of course. To provide an example, for years, we have been able to make entire workloads available in virtualized environments in a matter of minutes and with just a few clicks away. In the meantime, the necessary drills on the network infrastructure to accommodate these workloads are usually done following static configuration models, full of manual procedures, box by box, CLI by CLI. There are exceptions to the rule. But you can easily theorize it this way.
Whenever new applications or services are made available to internal or external users, which is not very complicated for us due to the versatility of today's tools, the network needs to follow the book and "accommodate, reconcile and enable" that service. In other words, undergo the necessary configurations, including VLAN, VLAN trunking, IP routing, ACL, QoS, policies, and anything else that needs to be fulfilled. The difference is that things are usually way more dynamic in the computing layer. In contrast, in most companies, the network still needs to be handled in a very static, tedious, and manual mode.
You've probably heard of DevOps, but in case you don't know what it is, DevOps can be treated as an IT application development culture, a revolution in the software development processes, making development teams (Dev) and operations sections (Ops) work together and in close collaboration. Consequently, agile adoption through continuous implementation and development infrastructure improvements promotes a much faster delivery of IT services.
In this DevOps concept, we've noticed many things related to Agile, automation through CI/CD (Continuous Integration/Continuous Delivery) and CI/CD/CD (Continuous Integration/Continuous Delivery/Continuous Deployment) pipelines, and things that you probably heard of. Well, then, note that there is usually a very significant deviation between these agility practices of the software development teams and the procedures adopted by the engineering and network operation teams. For example, any inappropriate changes that may be made to the network equipment configurations can result in many unnecessary problems, negatively affecting applications and development teams and making the situation more complex for these teams to handle. And that's where the pipelines mentioned above, Agile, DevOps, CI/CD, and automated unit tests, blend in, helping overcome these challenges. What until now was exclusive to the software development teams has now been adapted to serve the groups responsible for network planning, engineering, and operations. And then, a new paradigm called NetDevOps was born!
In short, NetDevOps can be defined as an intersection of Network and DevOps, through open communication and managed through automation, and using Infrastructure as Code (IaC) principles.
This approach aims to treat the network as an actual code or many pieces of code tied together! If you still have no idea what I'm saying here, maybe a visual representation of these concepts will clarify better?
Discover the relationships and differences between programmability, automation, and orchestration, and practically understand what "Software Defined Networks" (SDN) means.
The full version of this article, originally written in Brazilian Portuguese, is available on the Brasil Peering Forum (BPF) wiki page: "Introduction to Network Infrastructure Programmability Concepts" (Introdu??o aos Conceitos de Programabilidade de Infraestruturas de Redes). In this full version, I first try to clarify the fundamentals of network infrastructure programmability as a guiding principle for constructing software-defined networks or "Software-Defined Networking" (SDN). And then, I provide examples and use cases and cite quite a few technologies and tools commonly employed in highly programmable network environments.
I hope you found this article helpful, and I look forward to receiving your comments.
Sincerily,
Leonardo Furtado
Especialista em redes de dados | Instrutor Cisco Netacademy
3 年HAHAH e figurinha para orquestra??o ficou top!