What is DevOps?
Devopsity on 17-06-2022
Devopsity on 17-06-2022
In simple words - DevOps is a set of practices, tools, frameworks etc. that combine development and operations teams in a process of creating software. It helps to shorten the whole process and give it the best possible quality. The term DevOps was presented during DevOps Days in 2009 in Belgium by Patrick Debois.
Debois worked for the Belgium government on a data center migration and observed there conflicts between developers and system administrators, which also affected his work. Inspired by O’Reilly Velocity 09 conference in 2009 (Debois took part in it remotely), he decided to organize his own Velocity - DevOps Days.
On the list of their main responsibilities are, among others:
Important DevOps practices are implementing continuous integration and deployment automation (CI/CD pipelines). In this process, developers make small changes in the code, using various tools that need to be later integrated. When the delivery process starts, all the changed elements are deployed to the infrastructure, ready to be put on a testing environment.
Considering these responsibilities, a DevOps engineer must acquire at least basic knowledge from various areas of IT, starting from hybrid cloud systems, DevOps tools and CI/CD pipelines. A misconception is that DevOps doesn’t have to possess programming skills. Nothing could be more wrong! At least basic programming skills are a must-have to understand the software development process.
Agile development is an approach of project management and software development created as an alternative for Waterfall methodology that wasn’t flexible enough to meet the expectations of developing technology. Waterfall divides the whole process of software development into phases, where one phase must be finished before starting another. It keeps the whole project in very rigid frames, which in fact might hinder work instead of helping. That’s why software developers met in Snowbird in Utah in 2001 and wrote down the so-called Agile Manifesto, with 4 main values:
Besides, Manifesto has also 12 rules strongly focused on cooperation, quality, and dynamics.
To be more specific, Agile software development emphasizes the role of automation improvement, collaboration between development teams, and understanding of all processes by team members. However, there are still more differences between DevOps and Agile teams. The most significant are:
In Agile - Delivering small improvements by developing and testing; focus on writing code
In DevOps - Connect development and operations teams to improve collaboration and productivity; focus on continuous deployment and operations
In Agile - Any department working on projects
In DevOps - Strictly created for engineering processes and IT operations
Way of working
In Agile - Adding mid-projects changes to improve software quality
In DevOps - Continuous integration, developing and testing
In Agile - Small team, members having similar skills
In DevOps - Large team, members with various skills
Time of delivery
In Agile - Usually weekly meetings called sprints and adding improvements after every sprint
In DevOps - Delivery daily or even every few hours
In Agile - Light and tiny, not to lose the flexibility of a project
In DevOps - Meticulous, to make sure the teams work together well, but putting communication over documentation
In Agile - From customer
In DevOps - Internal feedback
DevOps strategy was based strongly on Agile and, as a result, became an extension or completion of Agile in IT operations. Agile helps optimizing the software development lifecycle, whereas DevOps focuses on merging development and operations teams, which supports their members to understand each other’s work. As a result, operational efficiencies grow, the final product has high quality and can be delivered faster. Also, in case of customer’s negative feedback, bugs and unsatisfactory elements can be quickly fixed, due to procedures the team worked out.
To explain the DevOps process clearly, look at the graphic below:
As it was written before, DevOps processes are continuous, repeated. Everything visible on the right side of the infinity sign is shift-right, and the rest - shift-left. So why does DevOps recommend “shift-left” testing principles?
Left is the beginning, early software development processes, in which multiple actions, such as adding new elements, fixing bugs, modifications and automated testing, are easier than after release. Thus, the system gathers better efficiency as well as quality. Also, costs of changes are smaller than during the right-shift.
“Staff augmentation” has become a more and more popular phrase in the IT world. But what does it really mean? Staff Augmentation is a flexible DevOps model of outsourcing that enables you to hire specialists from every corner of the world and manage their work directly, while they support your internal team. You have an unlimited, global base of specialists that are more affordable than a traditional employee, not to mention the time saved on their recruitment process.
And how about the whole team?
This model works similarly as staff augmentation, but instead of one or two specialists, you hire an entire team. Of course, the solution needs to be chosen on the basis of project type, but usually, a team is more efficient than just one person. Why?
In contrast to augmenting just one DevOps, leasing the entire Team means acquiring various skills and abilities, so more areas can be supported and improved in a shorter period of time. Also, a ‘Team’ means that this is not a random group of people that you need to organize yourself, but a well-oiled machine with members who already had a chance to work together, know each other’s qualifications and could be assigned with specific roles from the first day of co-op. In simple words - DevOps teams are more efficient, and deliver software faster, which later improves the customer satisfaction.
The more advanced and complex your project is, the more you need professional end-to-end support and coordination between development and operations. Adopting DevOps leads the team through the process providing better communication, stability, safety and as a result, gives a better final product.
In DevOpsity we strongly believe that hiring a whole team will give you more efficiency than just one person. If you need professional help with your software project, book a free consultation with us and we can work out the best solution tailored to your needs.