Introduction to the DevOps Life Cycle

Team Kranio

October 26, 2020

DevOps is a set of procedures that require a cultural change in companies. It is a movement, it is the desire to do things in a way that focuses on communication, collaboration and integration between those who develop and those who operate, to build more agile and efficient teams.

Lately the word "DevOps" has taken on a lot of relevance. If it were about costumes, it would be the latest fashion, but we must clarify something: to say "We are DevOps", you need knowledge in different areas and also have previous experience.

DevOps is a fundamental culture of modern software practice for successful analytics and big data projects.

What is DevOps?

DevOps is a set of methodologies and best practices, it is a working approach that seeks to improve the delivery of software in a shared and responsible way. Its name comes from the union of two words "Development" and "Operations"that is, Development and Operations. 

In a technology project we found two big groups. On the one hand there are the developers who are in charge of developing the pillars and guaranteeing the efficiency of the programs and their purpose is to produce software. On the other hand there are the operators and their purpose is to maintain the stable operation of the product. Both sectors prioritize their objectives, and many times there is no good communication between them. This is the 'traditional' working model, where everyone works independently. Companies today need to launch products quickly. With this traditional model, it is impossible.

This is where the concept of "DevOps" is born, where communication, collaboration, integration and automation are the main focus. When the wall falls, the first thing you enable is a communication flow between developers and operations. 

Finally a learning culture must be created, it is very important that the team is constantly learning. Some companies, like Netflix, 'sabotage' their products themselves to find out what is wrong, to identify flaws in the system, and to learn from mistakes in order to improve.

The term DevOps. has been mutating over time. First it was the union of developers and operations, but today it represents another type of union, since the idea of this term is to unify and connect. Some examples:

DevSecOps - this is a way of linking developers, security and operation, 

QAOps - is the union of QA and operations, 

NoOps - it's a case where you don't want the operations team to exist anymore. Here teams must be able to self-organize to deploy,  

DataOps - is the union of Data Scientist and the operations team.  

The important thing to note is that the term DevOps breaks down the barrier between teams, to improve communication, collaboration, and integration in all areas. This article addresses the discipline of DevOps.

Stay tuned for our blog and future posts from other disciplines. 

Continuous integration (CI), continuous deployment (CD) and continuous delivery

One of the first practices in the area of development involving DevOps is continuous integration. 

Continuous integration is a software development practice where developers make changes to the code in a repository on a regular basis.   

The proposal is not to create large pieces, but to create parts of a piece and every time these pieces are considered large enough to make an integration test that development is released to a continuous integration tool.  

The tool periodically validates that the different equipment is integrated. Jenkins is one of the most popular tools for automating tests. 

On the Operations side we have two applications: continuous delivery and continuous deployment. 

Continuous delivery is a software development practice to automatically prepare changes in the code and deliver to the production phase.

Continuous deployment is a development practice to carry out the deployment of our software in production WITHOUT human intervention at the time of deployment. 

The difference between continuous delivery and continuous deployment is that the former requires manual approval prior to implementation while the latter performs the approval automatically. 

DevOps Life Cycle

The DevOps life cycle corresponds to the steps that the source code of a software goes through to become deployed in an environment. In other words, it is the set of steps that a piece of code takes to reach its destination and become an application.

The DevOps Life Cycle

We start with the planning phase - deciding what and how to do. Then comes the coding phase where the specialists start coding, the next one is the construction phase: take all the code from all the specialists and compile it, then comes the testing phase where we apply automatic tests to each device that has just been built Then comes the release phase where we take what has been built in previous phases and store it in an accessible place so that the process continues. 

Then comes the deployment phase this takes what was created previously and tries to deliver it to the user, the next is the operation phase this deals with the configuration of the environments and the structure as such, finally there is the monitoring phase is where they check the metrics and ensure that everything is fine. Next we will give a more detailed explanation of each one. 

Phase 1 - Planning 

Photo by Halacious on Unsplash

All projects independent of the area or theme need a vision that indicates to all participants the reason and purpose of the work to be done. At this stage you define a minimum set of functionalities that bring value in each iteration and the acceptance criteria to be met. Communication between the business and the development team is key. 

It starts by drawing up a plan to achieve the objective set. All the people involved work during the iteration to achieve a clear objective, then define the tasks of the team and expose the requirements to be implemented in the platform or product. 

Phase 2 - Coding 

Photo by Clément H on Unsplash

After defining the plan we go on to code the application according to the requirements agreed with the client. Here you start developing the project software. These developments advance in small processes in the development cycle.

At the same time, you begin to define the tests you will need to perform on your part to ensure that it meets the functional specification. On the operations side, you start building the necessary automations for and the software. The project manager ensures that the development team is familiar with the use of security tools and possible attacks that this new piece of software may face. 

Phase 3 - Construction 

The objective of this phase is to build the application with the integration of several codes that made the in the coding phase. Once the application is built, it is time to create the new artifacts that make up the software, including the new functionalities. This process is critical since an error in the code union can cause the project to stop working. 

In this phase of the DevOps life cycle, software development is continuous and iterative, each part moving forward in the process. This is beneficial for the team as it speeds up the process and ensures delivery.

Phase 4 - Testing 

In this phase you execute the tests to verify the correct functioning of all the characteristics of the project. You must consider not only the new tests but also those that ensure the fulfilment of the specification of already existing functionalities. 

The QA team uses tools to identify and correct errors in the new code on a continuous basis, in case any test is not satisfactory you can make the correction by returning to the previous phase (Construction) 

In the planning stage you have already defined the unitary and integration plan you will carry out. 

Phase 5 - Launch 

Photo by SpaceX on Unsplash

Once the application has passed all functional and integration tests, you can create a version of the software. The objective is to indicate that it has passed all previous validations, these validations can be used by users in the future. This phase is integrated with the existing code, tests are performed and it should be noted that continuous development is only possible due to the integration and continuous testing.  

Phase 6 - Operation 

This is the phase where the operation team takes control of the application in production. You must make sure that there are no strange or inappropriate behaviors, errors that they may find in production. You must alert other team members to the problems that have occurred, make immediate decisions (suspend, rollback, etc.) and plan the necessary improvements before returning to production.  

Phase 7 - Monitoring

In the last phase, you establish which are the parameters to be monitored of the application. We will gather all the information collected over a period of time to make any necessary adjustments in the next planning phase. It is also in this phase that the operation team defines the measures to monitor and control the health status of the applications and their infrastructure. 

Conclusion 

When teams work independently, errors can occur in the project. This leads the teams to blame others, losing the focus of the situation, which is to solve the problem, both areas together must first identify what the problem is and then solve it

This is why this new culture was born, to solve these kinds of problems and break down the wall that divides them. DevOps was born with the aim of bringing together the different teams or people involved in a project. The idea is that all teams have a common goal, to enable and facilitate innovation, increase productivity and delivery of equipment, manage defects earlier, reduce unavailability and improve resilience. 

If you want to adopt these DevOps practices, you must start by evaluating a cultural change in your team, adding new technologies, high communication between teams, greater collaboration and development, injecting agility into projects, among many others. Any organization can adopt the "DevOps" methodology and adapt it to its processes and will have more chances of success at the time of creation, development and delivery of the software. 

You want to adopt DevOps but you don't know how to leave? Let's talk


Team Kranio

October 26, 2020

Previous entries