https://www.cnblogs.com/liufei1983/p/7152013.html
DevOps is a complete IT operation and maintenance-oriented workflow, with IT automation and continuous integration ( CI) and continuous deployment (CD) are used as the basis to optimize all aspects of program development, testing, system operation and maintenance.
The concept of DevOps
The term DevOps comes from the combination of Development and Operations. Emphasize the communication and cooperation between software developers and operation and maintenance personnel, and make software construction, testing, and release faster, more frequent and reliable through automated processes.
< p>DevOps is to fill the information gap between the development side and the operation and maintenance side, and to improve the collaborative relationship between teams. But one thing that needs to be clarified is that from development to operation and maintenance, there is also a test link. DevOps actually consists of three parts: development, testing, and operation and maintenance.
< /p>
In other words, what DevOps hopes to achieve is to open up the IT tool chain in the software product delivery process, so that each team can reduce time consumption and work together more efficiently. Experts have summarized the following DevOps capability map, a good closed loop can greatly increase the overall output.
Historical changes
From the above, I believe everyone has a certain understanding of DevOps. But in addition to touching the tool chain, as a methodology of culture and technology, DevOps also requires changes in the company’s organizational culture. Looking back at the R&D model of the software industry, we can find that there are roughly three stages: waterfall development, agile development, and DevOps.
DevOps was proposed as early as nine years ago, but why has it been paid attention and practiced by more and more companies in the past two years? Because the development of DevOps is nothing but a forest, there is now more and more technical support. The concept of microservice architecture and container technology make the implementation of DevOps easier. The improvement of computing power and the development of the cloud environment make rapidly developed products immediately available for wider use.
What are the benefits?
One of the great benefits of DevOps is that it can be delivered efficiently, which is exactly its original intention. Puppet and DevOps Research and Assessment (DORA) hosted the 2016 DevOps survey report. According to statistics submitted by 4,600 technical workers from various IT companies around the world, it is concluded that efficient companies can complete 1,460 deployments on average each year.
Compared with low-efficiency organizations, high-efficiency organizations are deployed 200 times more frequently, products are put into use 2555 times faster, and service recovery is 24 times faster. In the time allocation of work content, inefficient people spend 22% more time on planning or repetitive work, while efficient people can spend 29% more time on new work. Therefore, the efficiency here not only refers to the improvement of the efficiency of the company’s output, but also the improvement of the quality of the work of the employees.
Another benefit of DevOps is that it will improve the company’s organizational culture and increase employee participation. Employees become more efficient, more fulfilled and fulfilled; the survey shows that highly effective employees have higher employee Net Promoter Score (eNPS: employee Net Promoter Score), that is, they agree with the company more.
Rapid deployment while improving IT stability. Isn’t this contradictory?
Rapid deployment can actually help find problems faster, products are delivered to users faster, and the team can get user feedback faster and respond faster. Moreover, the changes brought about by the form of DevOps small steps are relatively small, the deviation of the problem will not be too big every time, and it will be relatively easy to repair.
Therefore, I think the speed is Means that danger is a prejudice. In addition, the delayed release of software services does not necessarily completely avoid the problem. In the increasingly competitive IT industry, this may miss the timing of software release
Why is DevOps emerging?
Why will the fire continue?
The conditions are ripe: the development of supporting technologies
The development of technology makes DevOps more compatible. In the early days, although everyone was aware of this problem, they suffered from the lack of complete and abundant technical tools at that time. It was a situation where “ideals are full, but reality is very skinny”. The implementation of DevOps can be based on emerging container technology; it can also be an extension of automated operation and maintenance tools Puppet, SaltStack, and Ansible; it can also be built on traditional PaaS vendors such as Cloud Foundry and OpenShift.
External demand from the market: The world is changing too fast
The IT industry has become more and more closely linked to the economic development of the market. Experts believe that IT There will be support centers that become profit-driven centers. In fact, this change has already begun. This is not only reflected in large companies such as Google and Apple, but also in traditional industries, such as Uber in the taxi business, Airbnb in the hotel chain industry, Amazon, etc. . Whether the company’s IT supporting programs can keep up with the market demand in a timely manner is very important today.
DevOps 2016 annual report gives a calculation formula for operation and maintenance costs:
Downtime cost = deployment frequency * version iteration failure probability * average repair time * money loss from power outage
Internal motivation from the team: engineers also need it
For engineers, they are also the beneficiaries of DevOps. Microsoft senior engineer Scott Hanselman said that “For developers, the most powerful tool is automation tool” (The most powerful tool we have as developers is automation).
The opening of the tool chain allows developers to complete the construction, testing and operation of the production environment when delivering software; just as Amazon’s VP and CTO Werner Vogels said impressively: “Who develops who run”. (You build it, you run it)
What is needed to achieve DevOps?
Hard requirements: tool preparation
As mentioned above, the tool chain must be opened, so the tool naturally needs to be prepared. The tool types and corresponding incomplete list are now organized as follows:
-
Code Management (SCM): GitHub, GitLab, BitBucket, SubVersion
-
Build tools: Ant, Gradle, maven
-
Continuous Integration (CI): Bamboo, Hudson, Jenkins
-
Configuration management: Ansible, Chef, Puppet, SaltStack, ScriptRock GuardRail
-
Containers: Docker, LXC, third-party vendors such as AWS
< /li>
-
Orchestration: Kubernetes, Core, Apache Mesos, DC/OS
-
Service registration and discovery: Zookeeper, etcd , Consul
-
Script language: python, ruby, shell
-
Log management: ELK, Logentries
li>
-
System monitoring: Datadog, Graphite, Icinga, Nagios
-
Performance monitoring: AppDynamics, New Relic, Splunk
-
Alert: PagerDuty, pingdom, vendor-owned AWS SNS
-
HTTP accelerator: Varnish
-
Message bus: ActiveMQ, SQS
-
Application server: Tomcat, JBoss
-
Web server: Apache, Nginx , IIS
-
Database: MySQL, Oracle, PostgreSQL and other relational databases; cassandra, mongoDB, redis and other NoSQL databases
-
Project Management (PM): Jira, Asana, Taiga, Trello, Basecamp, Pivotal Tracker
< li>
Automatic deployment: Capistrano, CodeDeploy
< li>
Stress test: JMeter, Blaze Meter, loader.io
The choice of tools needs to be determined based on the company’s business needs and technical team conditions . (Note: For more details about the tools, please refer to this article: 51 Best DevOps Tools for #DevOps Engineers)
Soft requirements: culture and people
< p>The success of DevOps depends on whether the company’s organization is conducive to collaboration. Developers and operation and maintenance personnel can communicate and learn from each other well, thus having high productivity. And collaboration also exists between business people and developers.
ITV, which attended the 2016 London Enterprise DevOps Summit, began to implement DevOps in 2012. Clark, its general platform director, was interviewed by InfoQ. When talking about success, he said that the business people are very clear What they hope to achieve in minimizing viable products, engineers deliver on-demand, without doing redundant work.
In this way, engineers use a common platform (that is, a well-connected tool chain) to get better consistency and higher quality. In addition, DevOps has higher requirements for individual engineers, and many experts also believe that recruiting outstanding talents is also a challenge.
The status of DevOps adoption
Which companies are using it?
DevOps is growing, especially in large companies: The survey found that the acceptance of DevOps has increased significantly. 74% of respondents have accepted DevOps, compared with 66% last year. At present, 81% of large enterprises have begun to accept DevOps, and the acceptance of small and medium-sized enterprises is only 70%.
So specifically, are some companies adopting DevOps? Adobe, Amazon, Apple, Airbnb, Ebay, Etsy, Facebook, LinkedIn, Netflix, NASA, Starbucks, Target (pan-European real-time full automatic settlement system), Walmart, Sony, etc.
How did they implement it?
First of all, large companies are accepting DevOps from the bottom up, where business units or departments (31%) and projects and teams (29%) have implemented DevOps. However, only 21% of large companies have adopted DevOps across the company.
Secondly, at the tool level, the usage of DevOps tools has surged. Chef and Puppet are still the most commonly used DevOps tools, both with a usage rate of 32%. Docker is the tool with the fastest annual growth rate, and its usage has more than doubled. The amount of Ansible has also increased significantly, with the usage rate doubling from 10% to 20%.
< /p>