The author | in the rain

Dubbogo v1.5.1 Project management map clear big picture!

quotation

The Dubbogo project is now in its fifth year.

In the first two years of project development, we set up hessian2 protocol library, network library and the overall basic framework. Since the project was officially accepted by Dubbo in 2018, relying on Ali platform, the community began to form and develop rapidly. Dubbo- Go V1.5.1 is now fully compatible with Dubbo V2.7.x.

project

A project as a whole must extract its core purpose and indicate its meaning and value. With an original mind, when there is confusion during the development of the project, you can clearly answer the question “Who am I? From where? Where to?

1. dubbogo

The Dubbogo project has its own milestone requirements, which roughly plan the key milestones of each stage. At the initial stage of the project, it only realizes a certain function of Dubbo, but during the development process, it will constantly revise its future development direction based on the current technological development trend.

The release plan is to define the development content of the current version and the direction of the next version through the pattern of “develop the current version, plan the new version, and revise the new version based on feedback”. The goals for the next generation will be revised after each release based on community usage feedback.

From a melon eater’s point of view, you might say, “Dubbogo is the Go version of Dubbo, just copy it.” Those of you who have followed the dubbogo project along with the community know that Dubbogo is not simply a Go language version of Dubbo.

Dubbogo’s initial intention remains unchanged, and its positioning is upgraded at different times. I think the current dubbogo positioning is:

  • Fully compatible with Dubbo;
  • A Go language application communication framework, make full use of the advantages of Go language as the first language in the cloud native era, expand the capabilities of Dubbo.

2. dubbo-go-proxy

Dubbogo’s initial goal was to “bridge the gap between Java and Go” with Dubbo. At present, Dubbogo and Dubbo are going hand in hand and have already achieved the goal of project approval. A communication framework with a long life, about 5 years of growth and 5 years of steady maturity. Dubbogo is currently in a transition period between growth and stable maturity, which means that the community must begin to diversify and develop its own ecology if it is to maintain its momentum.

The DubboGo community is currently focusing on incubating a new project to implement an HTTP gateway based on DubboGo. The purpose of the project is to: Dubbogo itself is a flow control middleware, and the natural direction to expand the project on it is to become a proxy/ Sidecar or gateway, and the community has always been in need of gateway in this aspect.

The project aims are as follows:

  • Make a gateway with meaning of production use;
  • Dubbo-go-proxy verifies the ability of Dubbogo, points out a new direction for the future evolution of Dubbogo, and coevolution;
  • Optimize dubboGo stability and performance.

team

After the completion of the project, it entered the recruitment stage.

Source of 1.

In the early days of the Dubbogo community, its key members were attracted by students who submitted issues or PR. Students who flirt in this way have a high probability of coming down with the community because they have the same interests. That’s how dubbogo’s core members came about.

The second is partnerships with other companies. Dubbogo itself is a project with a high demand for production environment. In the development process, it successively cooperated with Ctrip, Doodle, Douyu, Huya, Ant Financial and Ali Group, during which the cooperation with Ctrip is critical to the formation of Dubbogo.

Another way is to work with other communities. During the development of dubbogo project, we have worked with the following communities:

  • Work with the MOSN community to implement Dubbo Mesh;
  • Working with the Sentinel community to fully access Sentinel’s downgrading and limiting scheme at Dubbo/ Dubbo-Go;
  • Working with the Apollo community to implement remote configuration delivery in Dubo-Go;
  • Work with the Nacos community to implement NACOS-based service discovery.

The benefits of working with other communities are mutual benefits for both projects: expanding capabilities and usage scenarios for both sides, and secondly, the movement of people between communities. Dubbogo has benefited enormously from this collaboration and currently has four community committers from other communities. Cooperation does not mean that after the completion of the end, but rather the beginning of a new win-win situation: a community project and development, when a project has new features can be quickly at the same time being used by another project, technical ability and contacts for extension developers is extremely advantageous, dubbogo community at present several students active in multiple communities at the same time.

Dubbogo project has passed the rough stage and formed a community group of more than 800 people. Therefore, many project enthusiasts were found in the community group soon after dubboGO-Proxy project was established.

2. Member qualification

In the early stage of the project, many students learned how to Dubbo Java and didn’t know how to Go. At last, they improved their abilities through participating in the project. Of course some people have concerns about the quality of the project Code, but as long as the “Apache Way” of “Community Over Code” is adhered to, these issues should not be a problem during development.

In 2019, some students who participated in the Dubbogo project were engaged in business development, adhering to the “Who am I? Where am I from? The original intention of “Going there” participated in the development of Dubbogo, which had a positive impact on both Dubbogo and the improvement of its own technical level.

The Dubbogo community has certain deadlines for the release of Dubbogo, so there are also certain requirements for time investment of participants. The owner of the core functionality of each release shall ensure that the development task is completed by the deadline.

Each version of Dubbogo has a developer who is responsible for task splitting, development tracking, code Review and final test acceptance of the corresponding version, which requires the developer’s own technical level and high time investment. At present, the developer of each major version of Dubbogo is not the same person. Every time dubbogo is issued, it means that each developer pays a great deal of physical strength and energy. In this tribute to the previous version of the people!

management

After the project is approved, it is necessary to clarify the general direction of development, development milestones, version planning, and specific development planning within a period of time. In the early stage of project development, the Roadmap can be unclear. We should first cross the river by feeling for stones and gradually clarify its contents during the development process.

1. Requirements collection

At the beginning of the Dubbogo project, the goal was to implement only one version of Dubbo, so the requirements gathering didn’t take long. With the release of V1.0 in August 2019, DuBbogo has been put into production and use by more and more manufacturers. Its demand sources are as follows:

  • Implement a version of Dubbo functionality;
  • Production demand of the actual user;
  • A technical rehearsal designed to keep abreast of recent technological developments.

Dubbogo’s current K8s registry technology proposal is a great example of how to keep up with the latest developments in technology and the timeline is as follows:

  • In July 2019, as Ali Group and Ant Financial promoted the development of cloud native direction, Ali Dubbo development team did not provide reliable technical direction, and core members of Dubbogo community did not have the technical accumulation and corresponding talents of cloud native direction. It was decided to develop a registry based on Kube-Apiserver for technology storage.

  • In August 2019, after investigating Dubbo’s K8s registry solution, the Dubbogo community decided to implement one independently, striving to migrate dubbo applications to the K8s environment at the lowest cost. At the same time, the future direction of development is dubbogo operator.

  • In November 2019, Wang Xiang from the community gave a preliminary implementation, which was released with Dubbogo V1.2 in January 2020.

  • In April 2020, some users requested that consumers in the K8s environment can access the provider across namespaces. The corresponding implementation was released with dubbogo V1.5 in July 2020.

  • Dubbogo and MOSN collaborated to implement Dubbo Mesh in May 2020.

  • In June 2020, the community realized that KuBE-Apiserver is a core component of the IaaS layer of the system’s operations and should not be exposed directly to the application layer across the PaaS layer, Otherwise, improper use of the application layer or the framework’s own traffic bugs will lead to the collapse of kube-Apiserver system P0 failure, Dubbogo V1.6 should give the specific implementation of Dubbogo operator;

  • After the release of Dubbogo V1.5 in July 2020, the community already knew that it was possible to separate the current implementation of the Kube-Apiserver registry into a Dubbogo operator, The future direction is to combine Istio to expand its grayscale publishing, current limiting, fault injection and configuration dynamic delivery capabilities.

As for Dubbo-Go-Proxy, the Dubbogo community does not plan to learn from other projects. It completely relies on students in the community to contribute their own ideas and collect project requirements. At present, the Dubbogo community has collected the opinions of the demander of the Dubbo-Go-Proxy project. Five students from the community have participated in the development of the first phase of the project, and the initial version is expected to be released in October.

2. Project management

After collecting requirements and defining the development goals for a short period of time, it enters the project task dismantling and project development management stage. Late-comer projects like Dubbogo and Dubbo-Go-Proxy are in the catch-up stage. As FAR as I am concerned, they do not have the so-called late-comer advantage, let alone specific technical advantage. What they can do is to quickly iterate and shorten the gap with rival products.

Dubbogo requires that each feature owner receiving the development task must complete the corresponding development task before a certain deadline. Of course, features are of different levels, and non-core features [such as technical preview features] allow delay, as well as delayed release.

In the demand collection stage of each version of the project, we will uniformly pull lovers into a small group for communication. At the beginning of the development phase, due to two requirements of the project deadline and technical match, it was natural for each release to select people who could stay on to work on the project. Ultimately, try not to have more than seven people working on each version, otherwise communication costs can skyrocket.

Dubbogo v1.5.1 project management figure **

It has task breakdown, technical risk and risk plan.

The tool is productivity, currently using Github Projects as a dubbogo project development progress tracking tool. As shown in the figure above, the tool will display the progress of each sub-task in time, and the corresponding task owner can adjust the development plan according to the progress and deadline of the task in time. The further advantage is that no one will have opinions on the tool, and the communication mode of “traffic basically depends on walking, communication basically depends on Shouting” can be got rid of, and the anger between the version developer and the feature owner can be reduced.

3. Code quality

The development of open source projects is not just about developing code, nor does it mean that the quality of the code is reduced just because the owners work on open source projects in their spare time.

Tools are productivity, and the right tools can reduce manual effort and improve code quality. Dubbogo uses the following tools at various stages of project development:

  • Auto-comment: After submitting an issue or PR, it is convenient to send pre-customized comments;

  • Hound: a Go language project static code detection tool, automatic Review code;

  • Travis: a Github project test automation tool that automatically executes code single and user-defined integration tests and sends out pin notifications;

  • Manual Review: The Dubbogo community requires at least three committer level reviews for each PR;

  • Goreportcard: a great tool for checking static code for Github projects;

  • Gitee: As a relatively powerful code hosting website in China, it provides some code security and static code quality testing tools for the project for free. Dubbogo is also used frequently and benefited a lot.

  • Code specification. There is a simple code specification within the community and it is improved as the project grows.

Looking forward to

Every time dubbogo project is released, the developer will first send out a “What’s New”, in addition to summarizing the features of the latest version, it will also summarize its recent progress and future development plan, to help project enthusiasts and users understand the implementation ideas and use methods.

Dubbogo itself has many disadvantages, such as:

  • Website construction and document quality need to be improved;
  • The API is not user-friendly enough;
  • Too many configuration files and no proper documentation cause a high threshold for entry.
  • Overall performance improvements, many places can be added to call chain caching to reduce lock contention;
  • Prometheus index was added to improve the observability;
  • Support other microservice frameworks at the protocol level to achieve native communication to continue to improve their connectivity;
  • Dubo-samples use cases are not rich enough, so continue adding test cases to reduce the barrier to entry;

We hope to digest and solve these problems in the development process of Dubbogo with the help of the community. Dubbogo community [Dingding Group No. 23331795] is with Dubbogo.

Author’s brief introduction

Yu Yu, a programmer with more than 10 years of experience in server-side infrastructure development, is currently working in the trusted native Department of Ant Financial in container Choreography and Service Mesh. I am passionate about open source. Since 2015, I have contributed code to Redis, and have successively improved well-known projects such as Muduo/Pika/Dubbo/ Dubbo-Go.

“Alibaba Cloud originator focuses on micro-service, Serverless, container, Service Mesh and other technical fields, focuses on the trend of cloud native popular technology, large-scale implementation of cloud native practice, and becomes the public account that most understands cloud native developers.”