DevOps intent
What exactly is DevOps? To answer this question, first of all, who must be involved in the
DevOps process? The development team and the IT operation and maintenance team! So, what is the intention of DevOps? That is, between the two teams, establish good communication and collaboration, and create high-quality software faster and more reliably!
In fact, it is not the collaboration between the two teams that helped deliver better software, but the unification between the "development" and "operation and maintenance" teams led to software improvements and faster delivery. Let ’s not forget the role that DevOps tools play in automating.
The feeling of "integration" of development and operation and maintenance is caused by the bridging of skill sets and practices between developers and operations engineers and the realization of
automation (DevOps) tools. Large Internet companies around the world have adopted DevOps methods to thoroughly improve their performance,
security and team dynamics.
In this article, let us see what DevOps is and why it is so important! We will first track the evolution of the software development methods that lead to DevOps, then explore what DevOps is and its life cycle, and by evaluating the world ’s top companies to see how DevOps can be used to gain benefits.
1 Evolution of software development
Over the years,
DevOps has evolved from existing software development strategies / methods in response to business needs. Let's take a brief look at how these models have evolved and what scenarios they are most suitable for.
The slow and tedious waterfall model evolved into agile, and the development team completed software development in a short period of time, which lasted no more than two weeks. Such a short release cycle helps the development team handle customer feedback and incorporate it with bug fixes into the next version.
Although this agile SCRUM method brings agility to development, it has lost the speed of agile practice in operation and maintenance. The lack of collaboration between developers and operations engineers will still slow down the development process and release.
The DevOps approach is based on the need for better collaboration and faster delivery. DevOps allows continuous software delivery with fewer complex problems to fix and solve problems faster.
Now that we have understood the development of DevOps, let's take a closer look at what DevOps is.
2 What is DevOps?
DevOps is a software development method that involves continuous development, continuous testing, continuous integration, continuous deployment, and continuous monitoring of software throughout the development lifecycle. These activities can only be achieved in DevOps, not agile or waterfall, which is why top Internet companies choose DevOps as the way forward for their business goals. DevOps is the preferred method for developing high-quality software in a short development cycle, which can improve customer satisfaction. A
Without understanding the life cycle of DevOps, the understanding of DevOps will be one-sided. Now let's look at the DevOps life cycle and explore how they relate to the software development stage shown in the figure below.
Continuous development:
This is the stage of continuous software development in the DevOps life cycle. Unlike the waterfall model, software deliverables are broken down into multiple task nodes with short development cycles, developed and delivered in a short period of time.
This stage includes coding and build phases, and uses tools such as Git and SVN to maintain different versions of the code, and tools such as Ant, Maven, Gradle to build / package code into executable files, which can be forwarded to the automated test system test.
Continuous testing:
At this stage, the developed software will be continuously tested for bugs. For continuous testing, use automated testing tools such as Selenium, TestNG, JUnit, etc. These tools allow the quality management system to test multiple code bases completely in parallel to ensure that there are no defects in functionality. At this stage, using a Docker container to simulate a "test environment" in real time is also preferred. Once the code test passes, it will continue to integrate with existing code.
Continuous integration:
This is the stage where the code supporting the new function is integrated with the existing code. As the software is constantly being developed, the updated code needs to be continuously integrated and smoothly integrated with the system to reflect changes to the needs of end users. The changed code should also ensure that there are no errors in the runtime environment, allowing us to test the change and check how it reacts to other changes.
Jenkins is a very popular tool for continuous integration. Using Jenkins, you can extract the latest code revisions from the git repository and generate a build that can eventually be deployed to a test or production server. It can be set to automatically trigger new builds when changes occur in the git repository, or it can be triggered manually when the button is clicked.
Continuous deployment:
It is the stage of deploying code to the production environment. Here, we ensure that the code is properly deployed on all servers. If you add any features or introduce new features, you should be ready for more website traffic. Therefore, the system operation and maintenance personnel also have the responsibility to expand the server to accommodate more users.
Because the new code is continuously deployed, configuration management tools can perform tasks quickly and frequently. Puppet, Chef, SaltStack and Ansible are some popular tools used at this stage.
Containerized tools also play an important role in the deployment phase. Docker and Vagrant are popular tools that help achieve consistency in development, testing, staging, and production environments. In addition to this, they also help to easily expand and shrink instances.
Continuous monitoring:
This is a very critical stage in the DevOps life cycle and aims to improve the quality of software by monitoring its performance. This approach involves the involvement of the operations team, who will monitor errors in user activities / any improper behavior of the system. This can also be achieved by using a dedicated monitoring tool that will continuously monitor application performance and highlight problems.
Some popular tools used are Splunk, ELK Stack, Nagios, NewRelic and Sensu. These tools can help closely monitor applications and servers to proactively check the health of the system. They can also increase productivity and increase system reliability, thereby reducing IT support costs. Any major problems found can be reported to the development team so that they can be fixed during the continuous development phase.
These DevOps phases are continuously cycled until the desired product quality is achieved. The chart below will show which tools are available at which stage of the DevOps life cycle.
Now that we have determined
the importance of DevOps and understood its different stages and the DevOps tools involved, let us now look at a case study of Facebook and understand why they switched from agile to DevOps. We will use the use cases for the new features Facebook has introduced that have led Facebook to reassess its product delivery and adopt the DevOps approach.