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 goal
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.
Continuous testing.
Continuous Monitoring.
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.
Construction engineer
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.
Combinatorial engineer
(Reliability Engineer) uses a combination of coding and
automation synchronization to ensure the software product meets its specific
requirements.