×
Community Blog Feature-Centered Continuous Delivery - Alibaba DevOps Practice Guide Part 8

Feature-Centered Continuous Delivery - Alibaba DevOps Practice Guide Part 8

Part 8 of this 27-part series discusses feature-centered continuous delivery engineering practices and effective implementation.

This article is from Alibaba DevOps Practice Guide written by Alibaba Cloud Yunxiao Team

The concept of continuous delivery has become famous because of the development of microservice architectures and cloud-native technologies. Continuous delivery requires the Development Team to deliver software to the production system continuously and frequently. However, the increasing number of services has brought challenges to the delivery process management for enterprises. The release permissions in the production environment are provided gradually to developers during the DevOps implementation process. This loose control conflicts with enterprises' production security, and collaboration issues among multiple application versions are progressively prominent. If you want to obtain the efficiency benefits from technological change, it is necessary to solve the pain points of enterprises in the new technology transformation and DevOps implementation. Every enterprise, including Alibaba, must face and solve those challenges.

Software Delivery Challenges

After Alibaba split Taobao’s mega service in 2008, it has gradually formed a set of middleware systems suitable for service-oriented and distributed architectures. The systems solved the bottlenecks of complex system performance and stability in the rapid expansion of business. Problems, such as high application quantity, complex architecture dependencies, high-speed expansion in the number of personnel, and uneven skills followed. The summary is listed below:

High Application Quantity

The microservice architecture is widely used, and it faces the rapid expansion of the number of applications. The original R&D process also transforms from a batch release mode to a continuous delivery mode. Otherwise, the risk of software release and the complexity of rollback would be uncontrollable. The workload of tests and O&M is multiplied because of the expansion of applications. This is the efficiency bottleneck of the entire R&D Team. The way to solve the bottleneck is to implement DevOps in all aspects and leave the software delivery process to developers, thus eliminating the bottleneck and improving efficiency.

Complex Architecture Dependencies

The microservices architecture changes intra-application dependencies to inter-application dependencies, and the change process cannot be atomized. Therefore, good module splitting and interface design are required. On the one hand, the number of applications covered by a single feature is reduced for the controllable change order and rollback risk. On the other hand, the scenarios that can be covered by unit testing need to be covered by integrated testing. As a result, the development process increases the usage frequency and dependency of the test environment. A stable and reliable environment is needed to ensure that all developers can work in parallel.

High Test Resource Costs

The test environment is subject to dual limits of resource costs and O&M costs. In the early business development, you can fully deploy in the comprehensive process and equip with multiple environments to meet the requirements of the R&D Team. However, the rapid development of the business and the rapid expansion of the R&D team make the increasing costs of environments unaffordable. Therefore, a test environment solution with highly automated O&M, highly elastic availability, and local isolation is required to realize multi-version deployments.

Difficult R&D Collaboration

The R&D process includes collaboration among developers/testers and developers/O&M personnel. The former mainly solves the problems of parallel development and on-demand release. The latter performs their duties and restricts each other in a delivery process to ensure high-quality, safe software delivery. In DevOps scenarios, developers are in charge of software delivery, and testers and O&M personnel are responsible for process safeguard, control, and automation tool supply. A platform that can meet the requirements above is needed to improve collaboration efficiency and solidify the team's responsibility distribution, ensuring that each role in the team can complete the work efficiently.

High Online Risks

Online risks come from two factors. On the one hand, increasingly high-frequency online iteration brings more potential errors. On the other hand, as the system becomes larger, traditional manual defense and governance can no longer meet the requirements of risk control. Therefore, problems must be systematically resolved in terms of the fallibility and error impacts. The former focuses on whether risks can be intercepted before errors occur, while the latter focuses on the number of users and frequency affected by system changes. The combination of these two active and passive defense measures can solve the input-output ratio problem of risk control, thus achieving a better state.

Solution

Alibaba has been constantly exploring and trying methods to solve the pain points above in enterprise scale development and new technology application. After a step-by-step exploration, a delivery method and practice suitable for this scenario was invented, with rapid business development, fast software iteration, and complex architecture dependencies. We call it feature-centered continuous delivery. It has three features:

Feature-Centered

A feature is the smallest unit of product capabilities that users can experience. Its code may involve multiple applications. Therefore, a feature is also the smallest unit of a capability that guides the collaboration of multiple development teams. Feature-centered delivery process management can connect and advance developers and testers in isolating test environments, running automated tests, writing test cases, and performing acceptance tests.

Applications as Carriers

An application is mapped to a service. An application is the smallest unit that provides the business capabilities of software delivery and O&M. Applications can link code, pipelines, environments, tests, resources, and peripheral toolchains, such as monitoring, databases, O&M, and middleware. Developers can define their applications and the delivery O&M process on the tool platform, such as pipeline configuration, environment planning, resource creation, and deployment policy setting. The delivery process with independent applications as the carrier can atomize software delivery and force the development to reduce the coupling between applications while avoiding the inertia of the system-level centralized delivery mode.

Loose Management and Strong Control

You must take quality and efficiency into account during rapid software iteration. The DevOps mode needs to give developers enough freedom to complete online software changes. In practice, Alibaba adopts the combination of loose management and strong control in combination with its business characteristics. Loose management provides multiple pipelines for development. An application director can fully define the rules of the application, such as how to deploy, test, and configure the resource environment. Online testing can be performed on the premise of technical control, such as the comprehensive-process stress testing and the comprehensive-process phased release. The concept is simple release and valued recovery. In each application dimension, developers can use the pipeline to deliver code at any time without excessive artificial restrictions. The important thing to consider is how to control the impact if a problem occurs and how to fix the problem quickly. Strong control emphasizes the bottom line of software quality, such as code review and quality red line, protocol check, release window, security check, and online grayscale control. The control ensures that all the developers in the group can deliver qualified products at the same pace.

The core of continuous delivery is rapid and high-quality delivery. This gives developers maximum flexibility and allows them to take charge of the entire development and O&M process. they can achieve a balance between the user experience and rapid delivery with monitoring, fault prevention tool, and function switch.

Conclusion

Today, cloud-based development has become mainstream, which is a huge opportunity to improve efficiency. At the same time, it puts forward unprecedented requirements for engineering practices. For example, cloud-native infrastructure, cloud-native middleware, and the next-generation cloud software programming methods require the appropriate practices and tools. While adapting to the new technology trends, Alibaba has developed feature-centered continuous delivery engineering practices, which have been built into the DevOps tool system to ensure accurate practicing and effective implementation.

Part 9 of this 27-part series will describe the software development and delivery processes, including development, debugging, testing, integration, and delivery.

0 0 0
Share on

Alibaba Cloud Community

1,076 posts | 263 followers

You may also like

Comments