DevOps, solução ágil para empresas inovadoras

Neste mês de Julho, o artigo redigido por Lenildo Morais, gerente de projetos da Ustore, sobre DevOps foi publicado no Bloovi – um importante site de tecnologia e inovação da Bélgica. Com quase 81 mil seguidores. O assunto é inovador, por isto houve interesse do canal de TI e de quinta até então o conteúdo vem sendo lido e compartilhado por centenas de pessoas. Confira o artigo na íntegra em inglês:

—————————————————————————–

If today there is a big challenge for IT managers worldwide, it is the integration between development and operational teams to improve the delivery of a product or service to customers. This end-to-end process optimization is so important for the market that a methodology was devised for it: DevOps. In this article you will learn all about it.

What is DevOps?

DevOps – the abbreviation for Development (Dev) and Operations (Ops) – is defined as a software development method that focuses on communication, collaboration and integration between software developers and IT professionals’. Both parties need each other, which is why in a world where digital services in many sectors form the competitive advantage, the implementation of DevOps organizations can help to quickly develop new software. That is why DevOps is seen as one of the most relevant aspects in digital transformation processes. This methodology not only helps to reduce the tension between the teams responsible for changing the company (development) and those who take care of the operational implementation. But also to promote communication, integration and cooperation between IT professionals who are involved in the development of applications and those responsible for infrastructure and operational processes.

Where does Devops Come From?

The DevOps movement did not start at one specific location, but originated in several places. Around 2008, the term ‘agile infrastructure’ will be used in mailing lists aimed at agile development, and at the same time during the Agile2008 conference. This conference in Toronto aimed to start the discussion about the need to change processes and to homogenize the working methods of IT teams.

The term ‘DevOps’ was first put into the mouth at the Velocity Conference 2009 in San Jose, where John Allspaw (Etsy.com) and Paul Hammond (Typekit) gave a keynote speech aimed at uniting developers (Dev) and IT infrastructure managers (Ops), with the aim of promoting seamless integration through delivery. One of those attending this congress was the Belgian Patrick Debois, who came up with the great idea to organize the DevOpsDay after the presentation. This meeting, which lasted two days, was held for the first time in Ghent at the end of 2009. It is there, on Belgian soil, that the concept gained worldwide recognition.

How does DevOps Work?

Like all cultures, DevOps also has many variations. However, most agree that the following qualities are the same for all DevOps cultures:

1) Culture: Teams must work together and maintain a healthy relationship. Companies must change behavior, show sufficient flexibility, exchange ideas, avoid centralized responsibilities, and encourage the creation of multidisciplinary teams;

2) Automation: Tools are needed to automate most processes, such as: automation for release, automation of construction, delivery of environments for testing, monitoring or any other process, it is interesting to identify repetition processes or that take a long time and try to solve as quickly as possible, to prevent it from becoming a little more difficult to change in the future;

3) Measurement / Evaluation: Measure everything that is possible: performance, processes and interactions and even people. Without measurements, processes can not be improved or perfected; 

4) Sharing: Good communication between the teams is essential, encouraging people to communicate with each other and sharing ideas and problems is crucial for the success of a DevOps initiative. Success stories attract new talents for the movement. Also create an excellent feedback channel that is conducive to a continuous improvement process.

Continuous Integration and Delivery

Agile development methodologies enabled fast deliveries with small and frequent code changes, rather than versions with major changes that required much more time. This optimization quickly facilitated the parallel work of the members of the development team. Because deliveries take place in a short period of time, a programmer can respond to one part of the code and his colleagues to others, which makes the development much more flexible. Continuous integration is an essential process of these agile methodologies that accelerates the integration of the work of the members of a team with the implementation of automated code builds and tests.

Continuous integration promotes collaborative work and for this it is essential that a version management solution is used, such as Gitlab, Github, CVS or Subversion. These tools create a master repository for storing code and maintaining versions with each change that is made so that they can be restored and checked if necessary.

For parallel work, branches (or trunks) are created in these tools that contain a complete copy of the code, so that it can be changed by the team without disturbing the main code or branches of other programmers. After changing the code of a branch, it has to be integrated in the main code. To this end, the version control utility compares the branch and main repository code and maintains only the differences by consolidating the codes. But because the adjustments have to be made quickly and frequently, there will be several integrations, sometimes on the same day. It is important to ensure that they do not generate errors.

The test structure and the application process must then be carried out with each new change. In this way, the programmer validates his change as quickly as possible, so that he can respond as quickly as possible to a possible correction or follow-up for a new change. In addition, testing small parts of modified codes makes it easier to understand errors compared to cumulative deliveries with a large number of changes, thus minimizing the risk. There are various tools for automating the blinds, such as Ant and Maven for Java and Nant and MSBuild for .NET. It is imperative that the code contains a unit test to ensure that new implementations work as expected. 

DevOps Tools

Although the success of DevOps depends to a great extent on the underlying cultural shift, the tools are still important. Here is a short list of some of the tools that are often used in a DevOps environment:

  • Source Repository: Git, CloudForce, TFS, Subversion;
  • Build server: SonarQube, Jenkins, Artifactory;
  • Configuration management: Puppet, Ansible, Salt, Chef;
  • Test automation: selenium, water;
  • Virtual infrastructure: Amazon Web Services, Microsoft Azure, VMware
    vCloud.

Switching from traditional software development to DevOps methods is quite a challenge because it involves a significant change in the entire organization. The key to success is to assign the right people to the right processes, and to arm them with the right tools. If you follow the best practices in creating a supply pipeline with continuous integration, continuous testing, continuous delivery and continuous implementation, a switch to DevOps should provide significant benefits for your organization.

Sobre o Autor

Master in computer science at the Federal University of Pernambuco, Brazil. Project Manager at Ustore, which is the Brazilian market leader in private cloud storage and has its headquarters on the Porto Digital technology campus in Recife. Researcher for the ASSERT – Advanced System and Software Engineering RESEARCH Technologies Lab. Experience in Software Engineering, working on the following research themes: software quality, methodologies and processes of software development, requirements engineering, software testing and project management.