My Understanding of DevOps

Source: Internet
Author: User
Keywords devops devops definition devops meaning
1, the intent of DevOps
       What exactly is DevOps? To answer this question, we must first clarify who is involved in the DevOps process? Namely development team and IT operation and maintenance team! So, what is the intent 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 these two teams that helped deliver better software, but the unification between the "development" and "operations and maintenance" teams led to the improvement of the software and its delivery at a faster rate. Let us not forget the role that DevOps tools play in achieving automation.

       The feeling of "one body" in development and operation and maintenance is caused by the bridging of skills and practice between developers and operations engineers, and the realization of automation (DevOps) tools. Large Internet companies around the world have adopted DevOps methods to radically 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 leading to DevOps, then explore what DevOps is and its life cycle, and evaluate the world's top companies to see how to use DevOps to gain benefits.

2. The evolution of software development
       Over the years, DevOps has evolved from existing software development strategies/methods to respond to business needs. Let's briefly look at how these models have evolved and the scenarios in which they are best suited.



       The slow and cumbersome waterfall model evolves into agile, and the development team completes software development in a short period of time, even less than two weeks. Such a short release cycle helps the development team process customer feedback and merge 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 terms of 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 less complex problems to fix and solve problems faster.

       Now that we have understood the development of DevOps, let us take a closer look at what DevOps is.

3. 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 life cycle. These activities can only be achieved in DevOps, not agile or waterfall, which is why top Internet companies choose DevOps as their business goals. DevOps is the preferred method for developing high-quality software in a short development cycle, which can improve customer satisfaction.

       Without understanding the DevOps life cycle, the understanding of DevOps will be one-sided.



3.1, continuous development
       This is the stage of continuous software development in the DevOps life cycle. Unlike the waterfall model, the software deliverables are broken down into multiple task nodes in a short development cycle, which are developed and delivered in a short time.

       This phase includes the coding and construction phase, 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 the code into executable files, and these files can be forwarded to the automated test system for test.

3.2, 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 Docker containers to simulate the "test environment" in real time is also the first choice. Once the code is tested and passed, it will continue to integrate with existing code.

3.3, 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 in 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 changes 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, which can finally be deployed to a test or production server. It can be set to automatically trigger a new build when a change occurs in the git repository, or it can be triggered manually when a button is clicked.

3.4, continuous deployment
       It is the stage of deploying the code to the production environment. Here, we make sure to deploy the code correctly on all servers. If any features are added or new features are introduced, then you should be ready for more website traffic. Therefore, system operation and maintenance personnel are also responsible for expanding the server to accommodate more users.

       Because new code is deployed continuously, configuration management tools can perform tasks quickly and frequently. Puppet, Chef, SaltStack and Ansible are some of the 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, they also help to easily expand and shrink instances.

3.5, continuous monitoring
       This is a very critical stage in the DevOps life cycle, which aims to improve the quality of the software by monitoring its performance. This approach involves the participation of the operations team, who will monitor user activities for errors/any improper behavior of the system. This can also be achieved through the use of dedicated monitoring tools 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 improve 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 continue to cycle until the desired product quality is achieved.


       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 from Facebook and understand why they switched from agile to DevOps. We will use the use cases of the new features that Facebook has introduced that have caused Facebook to re-evaluate its product delivery and adopt DevOps methods.

4, DevOps case study
       Once, Facebook introduced a series of new features-timeline, recommendations and music features to hundreds of millions of users all over the world. The huge traffic generated on Facebook after the release caused the server to crash. The introduced features have received a large-scale and extraordinary response from users, which has led to uncontrollable results of the new features, which they did not expect.



       This led to Facebook's re-evaluation and strategic adjustments, which led to Facebook's dark start technology. Using DevOps principles, Facebook created the following method for the release of its new version.



Facebook dark start technology

       Dark start is the process of gradually extending the new feature to a selected group of users before the new feature is fully released to all users. This allows the development team to get user feedback early, test errors, and also test infrastructure performance. This release method is a direct result of continuous delivery, which helps to achieve a faster and more iterative version, ensuring that application performance will not be affected and users can update the version well.



       In dark start technology, new features are released to small user groups through a dedicated deployment pipeline. You can see that only one deployment pipeline is opened to deploy new features to a selected set of users. At this time, the remaining hundreds of pipelines are all closed.

       Continuously monitor the specific user base of the deployed feature to collect feedback and identify errors. These bugs and feedback will be incorporated into development, testing and deployment in the same user group until the functionality becomes stable. Once stability is achieved, these functions will be gradually deployed on other user groups by enabling other deployment pipelines.

       Facebook achieves this by wrapping the code in a feature tag or feature switch, which is used to control who can see the new feature and when. At the same time, it simulates the full effect of launching the code to users. Before opening all functions to users, the pain points and areas of the application infrastructure can be exposed early. After the functions are stable, they will be deployed to other users through multiple versions.

       In this way, Facebook has a controlled or stable mechanism that can develop new features for its large user base. On the contrary, if the function is not well responsive, they can choose to roll back the deployment completely. This also helps them prepare the server for deployment because they can predict user activity on the website and scale the server accordingly.

5, summary
  
       The purpose of DevOps is to create better quality software faster and more reliably, while at the same time more communication and collaboration between development and operation and maintenance teams. It is an automated process that allows fast, safe and high-quality software development and release, while keeping all stakeholders in a loop. This is the real reason why DevOps is favored by more and more large Internet companies.
Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.