At Nebulas, we use Zadig to achieve parallel release in multiple environments, thousands of weekly deployments

Zadig on Github

Zadig on Gitee

Connect with Zadig

The core members of Nebula Technology are from Beibei Group. Beibei is also a technology-based enterprise. In the past few years, it has formed its own R&D system. In the early development of Zadig (the product was called KodeRover at that time), we There have been contacts, but because the opportunity was not ripe at that time, it was not introduced for the time being. But the Zadig team and its products have left a deep impression on us, so when we built our R&D system at Nebulas, the first thing we thought of was to combine Zadig to build our continuous delivery system.

Zhao Wenlu,  O & M Leader, Nebula Technology

 

 

Rapid business development and many challenges

In the early stage of the business, a single application + front-end and back-end separation was adopted, and the business was first run through Docker. For some businesses that cannot use Docker, the jar package is directly used to start the business. First, ensure the normal operation of the application to meet business demands. Later, Docker-Compose was added to initially realize the coding work of operation and maintenance.
 
With the gradual development and expansion of the business, the Docker-Compose + multi-VM approach is becoming more and more incapable and faces many challenges:
  1. The core module is gradually split into multiple services, each of which requires high availability deployment and the number of instances to be regulated
  2. It involves multiple links of front-end and back-end, load balancing, log collection, compilation and deployment, and multiple servers. It takes a lot of time and energy to maintain the environment and the compilation process.
  3. The management cost of multiple sets of testing and pre-release environments is high. Due to differences in configuration, more services, and higher complexity, the operation and maintenance workload is more than the production environment.
 

Continuous Delivery Pain Point Analysis

If there are pain points, we need to solve them. We carefully analyzed the pain points and key requirements of the next stages:
  1. Compilation and construction: From source code compilation to products and images, the traditional method is difficult to meet the heterogeneous and multi-version compilation and construction environment.
  2. Deployment release: Parallel release in multiple environments, with nearly a thousand releases and deployments per week.
  3. Test environment: The test environment needs to support the parallel development of multiple projects, and the configuration should be as unified as possible to reduce maintenance complexity, but it must also ensure independence and meet test verification in different situations.
  4. Pre-release environment: The pre-release environment and the production environment must be consistent with the production environment except for the traffic entry, so as to perform regression verification before going online.
  5. R&D efficiency: Support development engineers to self-publish, various debugging methods, so that development results can be timely feedback and improve R&D efficiency.
 

Technical solution selection thinking

We investigated most of the solutions on the market. As an open source distributed continuous delivery product, Zadig provides developers with a cloud-native operating environment, supports local joint debugging, parallel construction and deployment of microservices, integration testing, etc. Obvious product feature advantages
  1. Improve delivery efficiency: After simple configuration, high-concurrency workflows can be automatically generated, and tasks such as build and deployment can be efficiently executed
  2. Easily deal with unexpected project tasks: a set of service configuration, one-click quickly (about 10 minutes) to generate multiple sets of isolated test environments
  3. Releases deliver a full stream of information, keeping a record of every release
 
Compared with similar products, Zadig product advantages:
  1. It can integrate tools such as source code management, CI/CD, K8s (or cloud platform container service), image management, and unified account login (LDAP) into a unified platform to complete the entire process from code to online to maintenance.
  2. Have experience in large factories and experience in solving complex scenarios
  3. The version iterates quickly, collects and answers questions through various channels such as the community and live chat groups, and quickly iterates improvements to the next version
  4. Compared with other similar products, it is easier to use, simpler to configure, and low maintenance cost
 
It is worth mentioning that the Zadig team is also quite powerful:
  1. The product team directly understands user pain points through real users such as operation and maintenance, R&D, etc., and communicates and answers in real time through offline and online (WeChat groups, Slack groups), etc. It is also convenient for users to keep abreast of product trends and in-depth understanding of product design concepts. , which helps to make better use of Zadig.
  2. If you encounter problems during use, you can communicate directly with the product developers, and the problems are responded quickly and solved in a timely manner.
  3. The product team members have a very deep understanding of cloud native, microservices, DevOps, CI/CD and other concepts. They are very senior experts in the industry, and they can patiently help users on the front line, solve problems -> collect problems - > Form product functions to iterate into the next version, forming a virtuous circle.
  4. It truly solves user pain points and solves practical problems: continuous integration, continuous delivery, multi-version and multi-environment management, development, test, operation and maintenance collaboration issues in the cloud-native era.

How to land Zadig?

Nebula's current flagship product is the "Nebulas Youke. Private Domain Integrated Intelligent Marketing" solution. Based on enterprise WeChat, open up omni-channel data, accurately attract customers, and operate data circles to help enterprises build a closed loop of private domain membership marketing.
 
After preliminary technical research and many in-depth exchanges with Zadig staff, we found that both the product concept and team strength are deeply in line with our expectations. And our core product "Nebulas Youke" needs such a platform to support the fast-growing business, so the next question is how to implement it.
Since Zadig has taken into account the source code management, compilation and construction environment, running environment, and personalized configuration, we only need to put the original release configuration, release script, environment variables and other information reasonably into each Zadig. The function module can complete the complete process from source code to online.
 
The following is the code construction process of the SaaS system, using a single-branch model: trunk development, trunk release (seamless switching related to branch management)
 
Multi-language, multi-framework heterogeneous system: Our main back-end development framework is Java Spring Boot, but some early systems are other frameworks of PHP and Java, resulting in inconsistent build and running environments, which also puts forward more requirements for tool systems. high demands.
For this situation, Zadig provides flexible scripting tools that can adapt to a variety of personalized releases.
 
With Zadig's capabilities, we have realized the development of self-service publishing, multi-project parallel, multi-testing environment and other functions, quickly realized an efficient continuous delivery system, improved the efficiency of product function iteration, and optimized R&D efficiency.
 

Usage summary

At present, Nebulas' SaaS products have been fully connected to Zadig, and Zadig has managed two K8s clusters, a total of 5 environments (3 testing, 1 pre-release, 1 production), a total of 200+ applications, and tens of thousands of applications. Automated builds and deployments, with a success rate of over 94%.
 
 
 
In the past, it took more time to pay attention to the release process. After clicking release, once an error occurs, you need to SSH to the deployment machine multiple times to check the reason, but now you don't need to pay attention to the release details (the log can be traced back). Even if you find a problem, you can directly use the Zadig debugging tool to quickly diagnose it. Repair, convenient and efficient.
 
 
<Multi-environment management diagram based on Zadig>
 
Zadig's efficient and convenient multi-environment management mechanism is very suitable for the problem that we need to develop multiple projects in parallel and demand multiple environments.

future outlook

Zadig accurately solves many of our pain points, enabling R&D and O&M to focus on more valuable things.
Zadig provides a set of simple and efficient platform tools for the current cloud native and microservice technology background, and it is believed that it will be applied in more and more enterprises.
 
{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/koderover/blog/5530568
Recomendado
Clasificación