In the past year, untraditional system administrators and software developers coming from western countries were all the time talking about a new concept: DevOps. DevOps is the combination of development and operations. (DevOps also includes product management, QA and sales)
Why do we have to combine the two fields? The first reason is that our working process is broken, totally broken. Development department and operation department in many companies are in conflict, because of the “broken”.
Let me take the example of distributing software products. The development department is going to develop a new product, which will use the latest and the most dazzling technology to meet all the fancy needs of the customers, so that they can bring millions dollars profit to the company. This product is required to use the newest technology and platform and is due in a short time. As a result, the development department work day and night, and cuts code like crazy and finally complete the task in time. Then they dumped all their work to the operation department, but the latter has not been ready for task, while the former cannot wait to celebrate the accomplishment of their task.
Receiving the product, everyone in the operation department is afraid.
Here are the reasons why they are afraid:
1) This excellent product cannot perform on the current platform, because the platform is too old (or lacks space, does not support some versions).
2) The product’s architecture is not suitable for our storage (or network, distribution, security) models.
3) We cannot figure out the report (or security, supervision, backup, service provision), so we cannot make it real and useful.
Complaining and cursing all the time, the operation department installs the product finally. Unfortunately, due to some poor adjustments and unreasonable compulsive operations, and the performance of the product is finally described as “Epic Fail”.
The disappointed operation department starts to record all the problems and talk about the issues with the development department. But most responses of the development department are like this:
1) It is not our fault. Out codes are perfect. The distribution is too bad.
2) The operation department sucks. They don’t know the new technology.
3) It is OK when performing on my machine.
The communication between two departments soon becomes a conflict. The clients (and share holders, the investor and the manage level) suffer the loss. At last, the company loses a lot of money, and all lose their jobs. It is an epic fail.
How different is DevOps? What are the advantages of it?
DevOps is not only a method for software deployment. It enables the creator of the software (development department) and the operator (operation department) to collaborate in a new way. The two departments will interact better with the DevOps model, and the relationship between them will be improved, so that they will benefit a lot in many aspects, such as automation, supervision, capacity planning and performance, backup and recovery, security, network and service provisioning and so on.
Four things about DevOps are very important.
The KISS (Keep it simple and stupid) principle is very important. The simplicity saves time for writing texts, training and providing support. Simplicity speeds up the communication, avoids the confusion, and reduces the risks of mistakes of development and operation. Simplicity enables us to release products as soon as possible.
Relationship between departments
Developers should let operators participate in the process of development, and share the project plan, new technologies and opinions with operators. Operators should also let the developers get involved when coming across problems and invite them to attend the meetings, share roadmaps and make plans together.
Here are some ways to communicate. The effectiveness declines from the top to the bottom.
1) Face to face
2) Video meetings
4) Instant communication software
All the process of different fields should be connected. The fields include: deployment, supervision, capacity planning and so on. In logic, “deployment” is the last link in the software development circle, so it belongs to the development process, not the operation process.
As far as I am concerned, DevOps is about who to work with and how to work together. The most attractive part of it is it calls different people in different department and solve the problems together. Such work environment is what I am always dreaming of.