DevOps is a complete IT operation and maintenance workflow, based on IT automation and continuous integration (CI), continuous deployment (CD), 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, and emphasizes the importance of communication and cooperation between
software developers and operation and maintenance personnel. Through automated processes, software construction, testing, and release are made faster, more frequent, and more reliable.
DevOps is to fill the information gap between the development side and the operation and maintenance side, and improve the collaborative relationship between the teams. However, it needs to be clarified that from development to operation and maintenance, there is also a test link in the middle. DevOps actually contains three parts: development, testing and operation and maintenance.
In other words, what DevOps hopes to do is to open up the IT tool chain during the delivery of software products, so that each team can reduce time loss and work together more efficiently. Experts have summarized the following DevOps capability map. A good closed loop can greatly increase the overall output.
Historical change
From the above, I believe everyone has a certain understanding of DevOps. But in addition to touching the toolchain, as a culture and technology methodology,
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 begun to be valued and practiced by more and more companies in the past two years? Because the development of DevOps is one-of-a-kind, there is now more and more technical support. The concept of microservice architecture and container technology make the implementation of
DevOps easier, and the improvement of computing power and the development of the cloud environment make the rapidly developed products immediately available for wider use.
What are the benefits?
A huge benefit of DevOps is that it can be delivered efficiently, which is precisely its original intention. Puppet and DevOps Research and Assessment (DORA) hosted the 2016 DevOps survey report. According to the statistics submitted by 4,600 technical workers from various IT companies worldwide, it was concluded that efficient companies can complete an average of 1460 deployments per year.
Compared with inefficient organizations, efficient organizations are deployed 200 times more frequently, products are put into service 2555 times faster, and service recovery is 24 times faster. In terms of time allocation of work content, inefficient people spend 22% of their time on planning or repetitive work, while efficient people spend 29% of their time on new work. So efficiency here refers not only to the improvement of the efficiency of the company's output, but also to the improvement of the quality of employees' work.
Another benefit of
DevOps is that it improves the company's organizational culture and employees' sense of participation. Employees have become more efficient, and more satisfied and fulfilled; surveys have shown that employees with higher Net Promoter Scores (eNPS: employee Net Promoter Score) are higher, that is, they recognize the company more.
Rapid deployment while improving IT stability. Is this not contradictory?
Fast deployment can actually help to find problems faster, products are delivered to users faster, and teams can get feedback from users faster, so they can respond faster. Moreover, the changes brought by the DevOps small step run mode are relatively small, the deviation of the problem will not be too large every time, and it will be relatively easy to repair.
Therefore, it is a bias to think that speed means danger. In addition, the release of lagging software services does not necessarily completely avoid problems. In the increasingly competitive IT industry, this may miss the timing of software release.
Why did DevOps rise?
Why would the fire continue?
Conditions are ripe: supporting technology development
The development of technology makes DevOps have more cooperation. In the early days, although everyone was aware of this problem, they suffered from the lack of comprehensive and rich technical tools at the time. It was a situation of "ideal is full, but reality is very skinny". The implementation of DevOps can be based on the emerging container technology; it can also be extended after the automated operation and maintenance tools Puppet, SaltStack, Ansible; it can also be built on traditional Cloud Foundry, OpenShift and other PaaS vendors.
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 will have a support center and become a profit-driven center. In fact, this change has already begun, which is not only reflected in Google and Apple, but also in traditional industries, such as Uber in the taxi business, Airbnb in the hotel chain industry, Amazon, etc. . Whether or not the company's IT supporting solutions can keep up with the pace of market demand is crucial today.
The DevOps 2016 annual report gives a calculation formula for operation and maintenance costs:
Downtime cost = deployment frequency * probability of version iteration failure * average repair time * money loss due to power outage
Inner motivation from the team: engineers also need
For engineers, they are also the beneficiaries of DevOps. Scott Hanselman, a senior engineer at Microsoft, once said, "For developers, 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; as Amazon's VP and CTO Werner Vogels said impressively: "Who develops who runs". (You build it, you run it)
What is needed to achieve DevOps?
Hard requirements: tool preparation
As mentioned above, the tool chain is opened, so the tool naturally needs to be prepared. The types of tools and their corresponding incomplete lists are now organized as follows:
Code management (SCM): GitHub, GitLab, BitBucket, SubVersion
Build tools: Ant, Gradle, maven
Automatic deployment: Capistrano, CodeDeploy
Continuous Integration (CI): Bamboo, Hudson, Jenkins
Configuration management: Ansible, Chef, Puppet, SaltStack, ScriptRock GuardRail
Containers: Docker, LXC, third-party vendors such as AWS
Orchestration: Kubernetes, Core, Apache Mesos, DC / OS
Service registration and discovery: Zookeeper, etcd, Consul
Script languages: python, ruby, shell
Log management: ELK, Logentries
System monitoring: Datadog, Graphite, Icinga, Nagios
Performance monitoring: AppDynamics, New Relic, Splunk
Stress test: JMeter, Blaze Meter, loader.io
Early warning: PagerDuty, pingdom, and manufacturers own AWS SNS
HTTP accelerator: Varnish
Message bus: ActiveMQ, SQS
Application server: Tomcat, JBoss
Web server: Apache, Nginx, IIS
Database: Relational databases such as MySQL, Oracle, and PostgreSQL; NoSQL databases such as cassandra, mongoDB, and redis
Project Management (PM): Jira, Asana, Taiga, Trello, Basecamp, Pivotal Tracker
The choice of tools depends on the company's business needs and the technical team. (Note: For more detailed introduction on tools, please refer to this article: 51 Best DevOps Tools for #DevOps Engineers)
Soft needs: culture and people
The success of DevOps, whether the company's organization is conducive to collaboration is the key. Developers and operation and maintenance personnel can communicate with each other and learn from each other, thus having high productivity. And collaboration also exists between business people and developers.
The ITV company that attended the 2016 Enterprise DevOps Summit in London began landing DevOps in 2012. Clark, its general platform director, was interviewed by InfoQ. When talking about success, the business staff were very clear that they wanted to minimize viable products Engineers deliver what they need, without doing extra work.
In this way, engineers use a common platform (that is, a tool chain that is broken through) to get better consistency and higher quality. In addition, DevOps' requirements for engineers have also increased, and many experts also believe that recruiting excellent talents is also a challenge.
DevOps adoption status
Which companies are using?
DevOps is growing, especially in large enterprises: the survey found that the acceptance of DevOps has increased significantly. 74% of respondents have accepted DevOps, compared with 66% last year. Currently, 81% of large enterprises are beginning to accept DevOps, and SMEs' acceptance 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, 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 increased dramatically. Chef and Puppet are still the most commonly used DevOps tools, with a utilization rate of 32%. Docker is the tool with the fastest annual growth rate, and usage has more than doubled. The amount of Ansible has also increased significantly, doubling the usage rate from 10% to 20%.