Get the newsletter

There's an increasing global demand for DevOps professionals, IT pros who are skilled in software development and operations. In fact, the Linux Foundation's Open Source Jobs Report ranked DevOps as the most in-demand skill, and DevOps career opportunities are thriving worldwide.

The main focus of DevOps is bridging the gap between development and operations teams by reducing painful handoffs and increasing collaboration. This is not accomplished by making developers work on operations tasks nor by making system administrators work on development tasks. Instead, both of these roles are replaced by a single role, DevOps, that works on tasks within a cooperative team. As Dave Zwieback wrote in DevOps Hiring, "organizations that have embraced DevOps need people who would naturally resist organization silos."

If you want to know more about DevOps, here are a few articles to prime your interests:

1. Lean and agile

A DevOps engineer understands that the operational aspects of software development should be given the same priority as every other project-related task or feature. The best way to succeed in this environment is to foster a strong culture of collaboration between the development and operations teams. Learning more about lean, systems thinking, and agile development can be helpful with this collaboration. The concepts of the DevOps team and the System team are an integral part of the Scaled Agile Framework (SAFe). Giving joint responsibilities to the System and DevOps teams also helps to build high-performance teams.

2. Continuous integration and continuous delivery

CI/CD software engineering practices are a fundamental tool to enable agility. They enable software changes to reach production more frequently, which considerably increases the opportunities for customers to experience and provide feedback on incremental changes. This feedback is vital for fast-paced agile software delivery.

Continuous integration: CI refers to the "build and test" process workflow with the goal of ensuring that broken changes don't affect other developers or users. This is achieved by assembling a software change into a production-like system, then test-driving it like a user/customer (integration), and (continuously) repeating this process for every single change. CI enables teams to rapidly build software toward a moving target. Depending on the project, there may be several CI efforts. You might end up with different frameworks, implementations, or tests. It's good practice to come up with a basic set of rules for your team.

Continuous delivery: CD defines the release process and the packaging and deployment workflow, where the key aspect is to prevent any broken changes from being delivered or released.

The best case is when every successful integration can reach production with minimum human intervention, in which case the full lifecycle is automated:

Builds and infrastructure should be deterministic and repeatable

Release steps should be automated

Changes should be tested in their own environment

These versions are usually called release candidates; at this point, the release has already been packaged, tested, and deployed in a test environment and only requires human intervention to decide if a particular release candidate will be pushed to final production.

3. DevSecOps

In the past, security was isolated to a specific team in a final stage of the development process. The cost to fix a vulnerability in post-production is far more expensive than fixing it during the design, requirement identification, and architecture stages.

Automated security testing is a key to DevSecOps, since running manual security checks in the pipeline can be time-consuming. DevSecOps ensures the principle of "security by design" by automating security testing in code review, automated application testing, educating, and usage of secure design patterns.

The secure delivery pipeline, on the other hand, integrates six important components into the DevOps approach:

Code analysis

Change management

Compliance monitoring

Thread investigation

Vulnerability assessment

Security training

This will produce significant benefits if done properly; chiefly agility for security teams, early identification of vulnerabilities in the source code, cost reduction, and recovery speed.

4. Infrastructure as code

In a nutshell, infrastructure as code (IaC) makes DevOps possible. It is an essential part of DevOps practices and plays an important role in conjunction with CD. One of its main benefits is the ability to reproduce an environment automatically based on a particular version of the source code, eliminating infrastructure administration and maintenance usually carried out by manual processes, which are potentially prone to errors and difficult to track.

The latter is the main reason IaC is often wrapped into the topic of automation (involving the automation of manual processes), but it goes beyond that. Experts often cite the following as best practices in IaC:

The infrastructure is managed using the same versioning control as DevOps engineers use for source code, which helps considerably to keep track of changes. Hence, the IaC model generates the same infrastructure environment every time it's deployed, similar to how the same source code of an application generates the same binary.

All infrastructure changes can be tested in the form of unit, functional, and integration testing.

The source code describes the infrastructure state, so it avoids creating unnecessary documentation. This, in particular, enables collaboration between devs and ops.

5. Monitoring and observability

Monitoring answers questions like "is the health of systems in good shape?" while observability digs deeper into the system's behavior for debugging purposes, especially when something doesn't work. The combination also plays an important role in DevOps, making it easier to detect and resolve problems and maintain continuous improvement. It is the evolution of logging and metrics, where monitoring aims to collect logs and observability allows the information to be collected.

The special nature of DevOps practices, with continuous integration and delivery of new versions of infrastructure and application code, makes monitoring and observability a fundamental aspect of making systems more reliable, easier to manage, and troubleshoot.

DevOps is a culture

While there are many DevOps tools on the market and they can help you streamline the process of development and deployment, the baseline to becoming good DevOps engineer is to focus on the foundations. DevOps requires a change of mindset from older practices; this can be tricky as DevOps isn't a specific framework or workflow—DevOps is a culture.

This change of mindset drives the digital revolution. Industry leaders combine agile and lean methodologies in DevOps to shorten cycle times to better address market needs for deploying software more quickly and efficiently.

Topics

About the author

Dominika Bula - is an full time Agile Practitioner and enthusiastic participant of Agile and DevOps Community of Practice at Red Hat.
Dominika has become active in Open Source, helping organize Fedora's conference, Flock 2016 in Krakow, Poland and Flock 2018 in Dresden, Germany. A graduate in Cultural Studies, she is excited to see how open communities collaborate and share.
Prior to joining Red Hat, Dominika worked as Project Manager for internalization and localization projects helping adapt applications to...

Footer

The opinions expressed on this website are those of each author, not of the author's employer or of Red Hat.

Opensource.com aspires to publish all content under a Creative Commons license but may not be able to do so in all cases. You are responsible for ensuring that you have the necessary permission to reuse any work on this site. Red Hat and the Shadowman logo are trademarks of Red Hat, Inc., registered in the United States and other countries.