From the course: NetOps (DevOps for Network Engineers): Automating Networks
DevOps principles
From the course: NetOps (DevOps for Network Engineers): Automating Networks
DevOps principles
- [Instructor] In this session, let us explore the principles behind DevOps. First of all, what is DevOps? As one could guess from the terms, it is a combination of software development, dev, and IT operations, ops. Traditionally, we would have separate semi-isolated teams, with one team handling the development of software features. Once that is done, hand it over to the operations team for deployment and operation. Over time, the two teams grow apart, because if they have different priorities, use different tools, and therefore, created some frictions between them. For the majority of my career, I belonged squarely in the operations camp. As an network engineer, I could recount many war stories of trying to provision VLANs at the last minute, scrambling to configure firewall rules, and making various last minute changes to the network in the operations and deployment phase, all the while, trying to make sure all the changes conform to the security standards. On the other hand, DevOps is meant to bring the two teams together by leveraging the same technologies, share the same vocabularies, build better collaboration, and deliver faster results. In this course, we will speak from the point of view of network operators, learning about the DevOps principles, tools, terminologies, and operations. Another way to think about DevOps is with the three interrelated categories of people, process, and tools. Everything we will talk about in this course falls into one of these three categories. For example, in DevOps, we have a group of engineers who share the same principles, collaboratively define a set of processes conforming to these principles, and use a set of tools that enforce this process. In turn, the tools will provide feedback to the engineers to further validate or tweak the principles and practices. Keep these three interlocking components in mind as we move through the course. As we have mentioned, the primary goal of DevOps is to shorten the software cycle from development to deployment. In network engineering, we can also draw many parallels to the same design, develop, deploy, and feedback loop, as software development. For example, we could put together a new data center design, develop an action plan to validate the design, then move forward with the deployment and monitoring. A DevOps principle, such as version control, could be applied to all these three steps. We could also benefit from another DevOps principles of making small incremental changes that could quickly respond to the changing environment. The DevOps principles are highly related to the Agile and Lean software development, so let's take a look at the Lean principles and Agile development process before we move on to the DevOps principles. What are some of the Lean principles? The number one principle is to eliminate waste. What are waste? Waste are defined in everything not adding value to the customer. Here are some of the waste defined in Lean, partially done work, extra features, relearning, task switching, waiting, handoffs, defects, and my personal favorite, management activities. Lean thinks that the software development process is a continuous learning process based on iterations. We're trying to solve problems for writing code, test with customer, learn the feedback, and rewrite the code if needed. So the second principle is to speed up and amplify the learning process. The third principle is to decide as late as possible. Think about how much uncertainties there are in today's fast changing environment, such as new customer requirements might pop up, new competitors might enter the market, not to mention technology changes really, really fast, so by delaying big decisions as late as possible, we have some flexibilities built in. The fourth principle is to deliver as fast as possible. We all know technology changes rapidly. The sooner we could get our products into the customer's hands, the faster we could receive the crucial feedback that we need to make the product better. Other principles of Lean include empower the team for decision making, build integrity in the process, and optimize as whole. Let's dive into Agile software development principles. In customer focus, the highest priority is always customer satisfaction, and we should also embrace changes and adapt accordingly. Always welcome the changing requirements. We should aim to frequently deliver working software. In a cross-functional team sense, collaboration means close daily co-operations between operators and developers. We should aim for motivated teams, because projects that build around motivated people who should be trusted. Also, face-to-face conversation is the best form of communication. In Agile, continuous improvement means the team regularly reflects on how to be more effective. Again, DevOps originated in software development, however, all of the principles we have seen in Lean and Agile are still applicable in network engineering. Besides taking part as the operations team in an organization, let's look at how we could draw a parallel and adapt the DevOps principles within network engineering itself. If we think about the network life cycle, initially, we'll receive some requirements from network. It could be a corporate campus, a data center, or retail store, that we would design the network accordingly. We would then develop the typology, necessary equipment, software licensing, port counts, and so on. Then we would deploy the equipment per our design. This could be the actual rack and stack, configuring the equipment, and all the necessary supporting infrastructure, such as IP management, DNS, DHCP, firewall policies, and so on. Once it is deployed, we will continue to operate and monitor the network. Maybe we are adding new users, VLANs, servers, security policies, and we will continue to monitor the health of the network to make sure they are operating in an optimal state. Inevitably, even the best designed and operated network will need to be updated with new features, new business requirements, and we will repeat the cycles again. Since the network engineering cycle is very similar to software development, in my opinion, the existing DevOps best practices can and should be adopted into network engineering as well. In summary, the DevOps principles are having a collaboratively environment with joint responsibilities between development and operations teams. Have a continuous development cycle. Always try to speed our time to market with small teams. And this is a big one, try to automate as many steps as possible. We should embrace failure and learn from them, and always, always be customer focused.
Practice while you learn with exercise files
Download the files the instructor uses to teach the course. Follow along and learn by watching, listening and practicing.
Contents
-
-
-
DevOps principles7m 6s
-
DevOps practices3m 37s
-
(Locked)
Unique network engineering challenges in DevOps7m 24s
-
(Locked)
Prerequisites for this course5m 21s
-
(Locked)
Setting up a network DevOps lab8m 24s
-
(Locked)
Network automation examples with Python libraries12m 43s
-
(Locked)
Network configuration backup example with Ansible9m
-
-
-
-
-