Backend Development 7 min read

Design and Implementation of a Gray Release System with Spring Cloud Alibaba

This article explains the concept, architecture, components, and strategy of a gray release system for microservices using Spring Cloud Alibaba, covering simple designs, Nginx and gateway implementations, and complex scenarios involving multiple services and database synchronization.

Code Ape Tech Column
Code Ape Tech Column
Code Ape Tech Column
Design and Implementation of a Gray Release System with Spring Cloud Alibaba

The author introduces a gray release system, essential for fast iteration of internet products while ensuring quality and quick rollback of issues, essentially functioning as an A/B testing platform.

Simple architecture includes three key components: a strategy configuration platform, an execution program for gray release, and a service registry that records ip/Port/name/version for each service.

Gray release strategies can be based on request headers, cookies, or request parameters, such as using a user UID modulo to direct a small percentage of traffic to the new version.

Strategies are categorized into single strategies (e.g., based on UID, token, IP) and composite strategies that involve multiple services with a shared tag for coordinated rollout.

Execution control varies by upstream service:

Nginx

When using Nginx, Lua extensions are required to apply gray strategies, and a locally deployed agent receives configuration updates to modify Nginx settings and perform graceful restarts.

Gateway/Business Logic/Data Access Layers

These layers integrate a client SDK from the configuration platform to receive and execute gray strategies directly.

Complex scenarios are illustrated:

Scenario 1 – Simultaneous Gray Release Across Multiple Services

Requests passing through the new gateway are tagged with tag T , and downstream services forward requests based on this tag, directing tagged traffic to new versions and untagged traffic to old versions.

Scenario 2 – Gray Release Involving Data Changes

When new versions introduce additional database fields, data must be duplicated and written to both old and new databases (dual write), with offline full data copy and MQ used to ensure consistency and avoid data loss.

The article concludes with a call to support the author’s work and provides links to PDF collections of related Spring Cloud and Spring Boot advanced tutorials.

backendMicroservicesDeploymentgray releaseSpring Cloud Alibabastrategy
Code Ape Tech Column
Written by

Code Ape Tech Column

Former Ant Group P8 engineer, pure technologist, sharing full‑stack Java, job interview and career advice through a column. Site: java-family.cn

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.