The popularity of the continued delivery concept reflects the desire of the business unit for faster delivery and the importance that technical teams attach to the age-old problem of delivery. From continuous integration to continuous delivery, ThoughtWorks has been actively practicing, thinking and summarizing. In this article I will share with ThoughtWorks a development team in this area of the harvest and summary.
Background
Our customers are Australia's real estate search portal, the annual independent visitors nearly 3 million (Australia's population 20 million), annual revenue of nearly 300 million U.S. dollars, 61% of the property in Australia are displayed on this site. Our team works on the core systems of commercial real estate, housing, land acquisition, and the full product line, which is closely related to profitability.
Achievement
2 years ago, as with most "regular" projects, deployment and release was a time-consuming, laborious and overtime activity. As an internet company with a history of over 10 years, there are already a large number of complex business systems that support the normal operation of the online business, and the deployment and release of any one function is a far-reaching complex activity. It's not easy for our customers to get up quickly, but it has to be fast, because competitors in the frequent business activities, not fast change, novelty it will be difficult to maintain a leading market position. Continuous delivery and continuous delivery of sustained innovation is the core competency it must build.
For ThoughtWorks, continuous delivery is an important tool to increase the visibility of project progress and reduce the risk of "last mile" of the project. In this way, the sustained delivery capacity of investment construction has become a clicked decision of both sides. After two years of exploration and practice, the total next, the harvest mainly has the following four points:
One-click Deployment : The current deployment pipeline from the start, to automate the various validation, and then to the final installation, configuration software can do without personnel intervention, the final deployment process can be completed in a few minutes automatically. With rapid deployment, the ability to continuously deploy, many times a day deployment, a week to publish a lot of things become smooth.
deployment and release by an offshore team : Most of the members of the Chinese team are developers who are not aware of the product environment; The distributed environment has not had much opportunity for Chinese teams to learn how to deploy and publish from the Australian team, and Nei to "deploy and publish from an offshore team" The risk is too high "this conclusion seems to be natural, but as the continuous deployment process becomes more proficient and mature, we find that the above conclusions are closely related to the status quo of the original deployment method, once the means of release is brilliant, the risk of deployment and release by the offshore team is completely acceptable.
business people become more agile : As the deployment of muscle becomes more and more developed, business people are getting used to this kind of conversation, "Well, this is a good feature, let's go out and see what the user reflects?" "The decision making process for business people has become the same as the carefully planned and strictly enforced style of the past:
Try a feature
Through the analysis of response data, understand the function of the market response
Decide whether to continue to develop or change direction, cycle and iterate continuously
Through the function frequently on-line, the business person's mentality and the work style also becomes more agile.
The business team and the technical team understand that deployment and release software are two different concepts and two separate activities :
2 years ago, the point at which the project was deployed and released was always highly unified, and the deployment ended. The team has not been aware that the deployment and release of software are different concepts and activities. In fact, software deployment is a technical concept that includes:
Creating and managing the hardware software environment on which applications depend
Install the correct software into the above environment
Configure the product correctly so that it runs as expected
A software release is a business concept that includes decisions:
What business features should be made available to users?
At what time to let the user use?
Which users to use?
is the necessary marketing, customer, support team training ready?
Through technical transformation, it is clear that the deployment is a week, or even a day to do many technical activities, and the release is strictly aligned with the business objectives, usually a few weeks for the frequency.
Best practices
The team's achievements come from the exploration and application of methodologies, tools and processes, and we believe that three practices are essential for the implementation of sustained delivery:
Functional Switches (Feature Toggle): Continuous delivery means more than just using new tools and new methods. It also means that changes need to be made from the design and coding stages, and functional switches are one of the important design practices that are designed to easily turn on and off an attribute. Why do I need a function switch? Because in the ongoing delivery process, the team will encounter the following situation:
Feature is not ready to allow users to use
Functionality is in place, but related business activities (training, campaigns, etc.) are not ready for use by users
Business personnel require functionality to be open only to some users
Insufficient testing causes product defects to be turned off
The function switch can be used to solve the above problem. It's a variety of implementations that we've used in different scenarios:
Gray Line: Function Deployment Online But the user can see the operation of shielding
File configuration: Determines whether a feature is visible or closed to the user through a configuration file
State data: Determines whether a feature is visible or closed to a particular user through the state value in the database
Compile parameters: In the process of compiling, the compiler parameters are used to determine that some features are turned on or off
automation (Automation): In order to frequent deployment, release and every deployment can not be error, it is difficult to leave the automation process, our team's automated deployment pipeline is this design:
After the local test passes, the developer submits the code.