What is DevOps?

In software development, it’s important to have a team dedicated to ensuring all systems and applications maintain maximum performance and uptime. Establishing processes that limit system and application slowdowns and outages while expediting the product release process is often done through a developer operations team, also known as dev ops or DevOps .

DevOps teams are responsible for improving communication and collaboration across engineering teams to increase an organization’s ability to efficiently deliver products and services that serve the end-user. In this post, we’ll describe the different elements of DevOps, including what DevOps is, how it works, and how Netdata helps DevOps teams succeed.

What is DevOps

While there are many varying beliefs and definitions around DevOps, we best describe it as a combination of cultural methodologies, practices, and tools. Gartner’s define DevOps as:

“… Represent[ing] a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture), and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology— especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective.”

Notably, DevOps is a term used during the software development cycle to provide an automated feedback loop on deploying new features, fixing bug issues, releasing updates quickly, and effectively eliminate silos amongst teams.

How DevOps works

The DevOps model involves multiple components, all of which are explained in detail below. Although there are variations of these components, all of these concepts work together to improve the speed of product delivery, reliability, scalability, communication, and security.

Collaboration for continuous improvement

Collaboration amongst all stakeholders during the software development process plays a large role in shaping it. When development and IT operations work together smoothly, removing all disconnects in communication, teams can more rapidly and efficiently deliver software. When there’s a strong, continual feedback loop, teams can release new software more reliably, resulting in a much-improved release process, enabling teams to proactively eliminate any disruptions.

Automation

Most DevOps teams rely on a toolchain that automates the end-to-end development process. These may include internally built or proprietary tools, enterprise solutions that organizations purchase, or open-source software, like Netdata’s monitoring Agent. As development and IT operations teams are tasked with both moving faster and deploying more reliably, they are increasingly deploying automation tools across the entire development cycle, from automated code quality checks to blue-green deployments to production.

The Netdata Agent helps organizations add more automation into their environment, and the Netdata team also leverages automation in its own DevOps procesess. We’ll touch on both points later in the post.

Continuous integration, continuous delivery (CI/CD)

The “CI” in CI/CD refers to continuous integration, which is the practice of automating how developers merge pull requests of code in a central repository.

For example, in Netdata’s case, CI happens in our GitHub repository. After a pull request is submitted, automated tests run to find any potential bugs, insufficient quality, and other issues that might occur during software updates. Furthermore, CI helps the Netdata team ensure that code quality is standardized to work on all our support.

In software development, CD stands for continuous delivery or continuous deployment, a concept that automates development further into the stages of the product pipeline. For example, when a developer changes code in an application, CD processes run unit tests, integration tests, and deploy the changes to a staging environment for further testing.

Netdata uses multiple environments (testing, staging, production) and a standardized release process to minimize frontend bugs and ensure backend services are configured correctly in production.

Monitoring

Monitoring in DevOps is the practice of getting continuous feedback from code that has been pushed into a production environment. The significance of this is that teams can identify any bugs that may be blocking end-user functionality. A common goal of monitoring is achieving “high availability by minimizing time to detect and time to mitigate (TTD, TTM).” When issues occur with the health or performance of systems and applications, development teams are able to more quickly diagnose and resolve the issues with automated monitoring, minimizing mean time to resolution (MTTR).

Different roles on a DevOps team

DevOps teams range in role and responsibility depending on the size of a company and the complexity of its infrastructure. Most commonly, DevOps are comprised of the following:

System administrator , also known as a sysadmin: A sysadmin is responsible for keeping computer operations systems running. Their main responsibility is to maintain uptime, performance, optimal health resources, security, and more for systems within a company.

Site reliability engineer , also known as an SRE: Similar to Sysadmins’ role, a SRE’s responsibility is to bridge any communication gaps between developers and operations. Their main goal is to get companies’ infrastructure more reliable, efficient, and scalable through the processes mentioned above. SREs automate processes through code to create more of an infrastructure-as-code (IaC) approach which is the management of infrastructure facets like networks, virtual machines (VMs), and load balancers, in a model that standardizes environments for DevOps teams with source code.

Some companies might have additional roles on a team like a release manager, who’s responsible for coordinating projects through testing and deployment, or a quality assurance tester (QA) whose main job is to test and document bugs. However, the majority of teams will be made of one or more sysadmins and multiple SREs.

How Netdata implements DevOps solutions

Netdata has a dedicated team of Site Reliability Engineers. Our DevOps process has evolved over time with many contributions, both from our internal team of developers and external users who run Netdata on their own systems. Because of this, there’s an efficient feedback loop; the developers using the software are more invested because they want it to successfully work on their systems as well.

The release process is continually refined with developers to make it as streamlined as possible for the SRE team and for users to know what the status is of new product releases. This is particularly important as an open-source project where many users depend on the software to maintain health and performance of their system and applications.

The full Netdata Agent release process includes multiple stages. First, there’s a pre-release stage dedicated to ensuring quality. Once the release code has been stable and issue-free for three to five days, the team stars up the build and release stage. The Netdata Agent then enters a code freeze to ensure other code isn’t concurrently pushed. Once the team deploys the new release on GitHub for the open-source community, they then also update Netdata’s demo sites and Kubernetes Helm chart, as well as other internal deployments. The SRE team uses many tools used for automation throughout the process, including GitHub Actions, TravisCI, plus others.

How Netdata works for DevOps teams

DevOps comprises many components, and at the center of this is the need for continuous improvement. Continuous improvement involves collaboration between team members, access to real-time data and insights, and understanding of how software release may impact end-users.

With the Netdata Agent and Netdata Cloud, organizations can monitor an unlimited amount of metrics, in real-time and at a per-second granularity, across their entire infrastructure. This information gives DevOps teams everything they need for collaboration, automation, and customization. They optimize troubleshooting workflows and work in tandem, automate remediation with preconfigured alarms, customize the monitoring experience with new dashboards, and much more.

Organizations make more proactive, data-driven decisions about their infrastructure, reduce failure rates, and streamline processes behind getting services back online. Check out more on how Netdata can help enable DevOps success.

This is a companion discussion topic for the original entry at What is DevOps? | Netdata Blog

Great guide about outsource devops, thanks!

Software Development = Dev

Operations = Ops

DevOps is not a job title, nor a methodology, but can be thought of more as a culture of work.

The key idea is that instead of separating the responsibilities of a software development team into the people that write the code and the people that run the systems that run the code (servers, databases, build tools etc.), a team is made up of a diverse set of people, each capable of thinking about the way that these two topics intertwine. A DevOps culture ensures that developers take into consideration how the application is run on the hardware as much as the Operations people understand how the software is created (which language, framework, etc.)

Why? This results in fewer silos, communication problems, reduces costs, and increases companies chances of succeeding.

Think of it this way…do you give only specific people in a restaurant the responsibility to deal with overall sanitation of the kitchen, or do you expect the entire team to share the responsibility?

Manager: “Why didn’t you replace the dirty towels?”
Cook: “Oh, that’s not my job, I just have to make sure the fries are cooked. If my work area is not properly supplied, it’s not my fault!”

Caution: I am not an expert, I did my best to answer this question. If you’ve got a better answer please post it. :slight_smile: