Introduction:“Software development needs to face essential and ancillary difficulties. Cloud native and Devops significantly reduce ancillary difficulties, enabling architects to focus on business complexity, and DDD is an effective method to manage business complexity.”
Author: Zhang Gang, senior technical expert of Alibaba cloud efficiency, core member of ALPD methodology.
The essential difficulty of software development
In 1986, Frederick Brooks, a software engineering giant, wrote a famous paper “no silver bullet”. He wrote at the beginning of the article:
In the next 10 years, there is no single method and technology that can improve the productivity of software development more than 10 times.
This thesis caused great controversy at that time. So far, “no silver bullet” is still a topic often discussed. However, the real value of this paper is far from limited to this. If you continue to read it, you will find that,. It is not enough to dwell on whether there is more than 10 times productivity. What really matters is Brooks’s judgment on the cause. I summarize the important points as follows:
There are two kinds of difficulties in software development, one is essential and the other is incidental.
Essential difficulties are closely related to the essence of software, so such difficulties cannot be solved by tools or languages. For example, the problem solved by software is the problem of the real world. If the problem of the real world is complex, it is impossible for any tool to eliminate this complexity.
The difficulty of attaching attributes is related to the tools or methods we adopt. For example, software needs to be implemented in a certain language, software needs to be compiled and deployed, and software may be implemented as defects, which are related to the specific implementation method. Such difficulties can be improved through the improvement of tools, methods and technologies.
The essential difficulties include the complexity, invisibility, changeability and compliance of the software (it means that the software development also needs to comply with factors that are not determined by subjective will, such as laws and regulations and external systems)
As an architect who has worked in the software development industry for 20 years, “no silver bullet” gives me great inspiration from the discussion on essential difficulties and attribute difficulties.
For many years, I have always regarded “managing essential difficulties and eliminating ancillary difficulties” as the motto of software development activities. What is particularly interesting is that recently, I found that as an architect mainly working on business systems, the responsibilities of architects have changed when cloud computing is becoming a trend. This change is closely related to the “difficulties in the nature of management and the elimination of ancillary difficulties”.
Business architecture is certainly an important responsibility of architects. Business and technology have been deeply integrated, and business has higher and higher requirements for response speed and development quality. At the same time, in the era of cloud origin, service has almost become an inevitable choice. Business response ability, development quality and service are closely related to business planning ability. This is the most important aspect of “the nature of management is difficult”!
Domain Driven Design, although Eric Evans’s book of the same name was written in 2004, has also had a great impact on the technology community for many years. But why has the heat suddenly increased sharply in recent years and become particularly concerned? This is because our business has finally become more and more complex, to the point where it cannot be well managed without appropriate methods – which coincides with the subtitle of DDD book “how to deal with software core complexity”. The division of micro services and cloud native services is also a key driving factor.
Become an architect in the cloud native Era
In today’s business environment, it is an important skill for architects in the cloud native era to make better use of cloud native infrastructure, better conduct business planning, efficient and high-quality analysis and management of domain models, and use domain models to guide architecture design and development practice.
this timeCloud effectJointly launched with Alibaba cloud developer College《ALPD cloud Architect Series – Domain Driven Design》The course also revolves around this theme.
The full name of ALPD is advanced lean product development. It is a new R & D paradigm in the cloud native era proposed by Alibaba cloud’s cloud efficiency team. It integrates four kinds of practices: technology, engineering, collaboration and innovation, and provides efficient solutions.
The above two figures are respectively the ALPD method and support system diagram. We hope that ALPD and its solutions can help enterprises and developers achieve 10x efficiency improvement – 10x response speed, 10x process quality and 10x effective value delivery.
In this course, we will bring you the content of Domain Driven Architecture and practice in ALPD methodology.
It is also a great pleasure to share knowledge and experience with community developers through this external sorting.
ALPD cloud Architect Series Courses – Advanced DDD experts
In the course arrangement, we divided the course into the following chapters:
01 | the essence of domain model is business cognition
02 | case study: high quality domain model improves business flexibility
03 | high quality domain model originates from continuous evolution
04 | case analysis: sort out business concepts and discover domain models
05 | from model to code: building blocks of Domain Driven Design
06 | aggregation: a unit to ensure business integrity
07 | hierarchical model and code organization of Domain Driven Design
08 | core domain, general domain and support domain
09 | split sub domains based on business capabilities and business scenarios
10. Guard the boundaries of the field and build autonomous services
11 | mode of bounded context mapping
12 | building domain assets using micro services
Each lecture is about 15 minutes long to focus on a relatively cohesive topic.
In lecture 1-4, discuss a basic concept of domain model, including what is domain model? Why care about domain models? How to do basic domain modeling?
In 5-7, we mainly focus on the software implementation centered on the domain model, which specifically corresponds to the tactical mode of domain driven design, such as entity object, value object, domain service, domain event building block and aggregation, resource library and factory, which are closely related to business integrity.
8-12 talk about architecture design centered on domain model, which specifically corresponds to the strategic mode of domain driven design, such as sub domain, bound context, bound context mapping, etc. In the last 12 lectures, we also discussed the relationship between micro services and domain assets. Micro services is an important topic at present. If we pay insufficient attention to domain driven design, it will also affect the implementation of micro services and cloud services.
In the whole course, there are no obscure concepts. I hope that through concise cases, students can easily understand the core ideas and key practices of domain driven design. I hope you can also learn this course to better understand DDD and put it into practical project implementation from the essence.
Click the picture below or the link at the end of the text to join《Cloud Architect Series Courses – DDD architecture practice》Learn your way!
Of course, domain modeling and domain driven design are still skills that need long-term deliberate practice, and the contents of the course are just throwing bricks to attract jade. In the follow-up practical work, I hope you can continue to apply and improve, constantly improve and become an excellent architect in the cloud era!
Copyright notice:The content of this article is spontaneously contributed by Alibaba cloud real name registered users, and the copyright belongs to the original author. Alibaba cloud developer community does not own its copyright or bear corresponding legal liabilities. Please refer to Alibaba cloud developer community user service agreement and Alibaba cloud developer community intellectual property protection guidelines for specific rules. If you find any content suspected of plagiarism in the community, fill in the infringement complaint form to report. Once verified, the community will immediately delete the content suspected of infringement.