You might have heard the term "DevOps" and thought it was the second installment of the popular video game (Psi-Ops)! In fact, you are not completely shy of the truth: while the main character in the game has dual skills (combat and psychological), DevOps workers carry dual skills ... but of another kind.
What is it? This is what we will learn about through this post.
Meaning of the word "DevOps"
DevOps is a marriage between two competing departments since
time immemorial: Development and / Operations.
Two competing administrations? Yeah! Since management was known in its modern form, development and implementation teams have suffered from poor communication and cooperation. Why? Because each has a goal that conflicts with the other's goal: while operations management teams want to see the product completed with the highest quality and the fewest possible resources, development teams insist on making sure that the work is completed in full and with high quality, regardless of the resources needed to achieve success.
The paradox is that this conflict does not lead to the appropriate allocation of resources nor the completion of the work with the required quality! This is where DevOps comes in.
DevOps aims to create a development environment that supports continuous integration and continuous delivery. This is through four main principles that underpin DevOps:
CI: Continuous integration: A software engineering term describing a method of software development characterized by the continuous process of rebuilding an application accompanied by repeated testing.
CD: Continuous delivery: It is an approach adopted by software engineers in developing programs within short courses, and it aims to accelerate the construction, testing, and launch of programs.
We will briefly know each of them below:
In this step, the DevOps team shares the source code, so they each develop a part of it and test it, and if the process of running it succeeds without problems, the developer returns his part to the source.
An extension of the previous process, in which the team is constantly testing the software with each new feature added to it.
Does the final product/program meet the requirements? This is what the constant testers will be keen on.
It is the process responsible for monitoring the new program or feature for errors, security, and compatibility.
The importance of DevOps'
To understand the importance of DevOps, we must return to the old method of managing the development process, which is called the Waterfall model.
The waterfall model appeared for the first time in 1970, and it is based on dividing the development process into separate stages so that none of them begins before the completion of the previous one. The “outputs” of a stage represent the “inputs” of the next phase.
These stages are divided into:
1. Collecting and analyzing requirements, then documenting them within what is called (Requirements Specification Document).
2. Determine the structure of the general development environment, and then build it according to the previous requirements.
3. Dividing the program into small units, and developing and testing the functional dependencies for each unit (this stage is called: Unit Testing).
4. After testing the previous units, the development team integrates all units, then tests the program as a whole to make sure it is free from errors.
5. Launching the program on the market.
6. Maintenance and problem-solving - in case they exist, by using software designed for this purpose called (patches).
As is evident, the completion of the project according to the aforementioned waterfall model requires a long time, and this necessarily requires a high cost and additional effort to redesign and develop the product if there are deficiencies within it, so a different method was required.
This method bore the name "Agile".
Be Agile ... Use Agile!
The word agile comes from the word agility, which means agility and agility.
This is because it relies on focusing on a specific aspect within the product, which is executed in a short time and then presented to the customer. Thus, the customer will be able to see (advance / preliminary version) of the product, and if there are modifications, they can be easily made. Otherwise, the work team will move to another feature ... and so on until the project is completely built.
The advantage of this basic method is that the initial product - which will enter the next phase - is a product that can be used and developed, in addition to its matching the image drawn in the mind of the customer of the final product image.
Through continuous development and review processes, developers will be able to shorten development times, and often introduce new features to clients. This creates an environment where the product continues to satisfy customers every time. With many new possibilities for companies embracing DevOps, this trend is not expected to disappear shortly.
Job Roles and Responsibilities in DevOps
Here's a quick overview of the roles you can expect to see in DevOps:
• DevOps engineer or platform.
• Construction engineer.
• Interoperability engineer.
• Launch Manager.
• Data Analyst.
DevOps architect or platform
It is the person who understands the different coding languages to support the platform. The titles you may see are (DevOps engineer or station engineer), and he is the one who establishes the transition.
He is responsible for building the software from conceptualization to delivery. Some call it a Build Engineer / UX Designer / Configuration Manager. The person doing this work ensures the synchronization, development, and testing of all programs and features.
(Reliability Engineer) uses a combination of coding and automation synchronization to ensure the software product meets its specific requirements.