[DDD] business domain definition

foreword

A business area is the definition of a company's main area of ​​activity. Usually this is a service each company provides to its customers. For example:

  • FedEx provides courier service.
  • Starbucks is famous for its coffee.
  • Walmart is one of the most recognized retail businesses.

A company can operate in more than one line of business. Amazon, for example, offers both retail and cloud computing services. Uber is not only a ride-sharing company, but also offers food delivery and shared bikes.

It is worth noting that companies may change their business areas frequently. A prime example is Nokia, which has been involved in wood processing, rubber manufacturing, telecommunications and mobile communications for many years.

1. What is a business sub-area?

In order to achieve the desired goals in the development of its business field, a company has to operate in several sub-fields. A subdomain is a fine-grained area of ​​business activity. All subdomains of a company make up its business domain: the main services that the company provides to its customers. Achieving a single subdomain business is not enough for a company to be successful. A single sub-business area is only one component in the overall system. Subdomains must interact with each other to achieve the company's goals in its domain of business. Starbucks, for example, may be best known for its coffee, but building a successful cafe chain requires more than just knowing how to make great coffee. Must also be in an efficient location to buy or rent real estate, hire people, manage finances, and other areas of activity. None of these subdomains can become a profitable business by themselves. All of these subfields are necessary for a company to be able to compete in its field of business.

2. What are the types of subfields?

Just as a software system is composed of various architectural components such as databases, front-end applications, back-end services, and others, subdomains have different standards/business values. Domain-Driven Design distinguishes three types of subdomains: core domains, general domains, and support domains. Let's see how they differ from a corporate strategy perspective.

2.1. Core subfields

A core subfield is where a company is most competitive and differentiated. This may involve inventing new products or services, or reducing costs by optimizing existing processes.

Take Uber, for example. Initially, the company offered a novel way to hail rides: carpooling. As rivals caught up, Uber found ways to optimize and grow its core business: cutting costs, for example, by matching riders traveling in the same direction. Uber's core subsectors affect its bottom line. This is what separates the company from its competitors. This is the company's strategy to better serve its customers and maximize its profitability. To maintain a competitive advantage, core sub-areas include inventions, intelligent optimization, business know-how or other intellectual property.

Another example: Google Search's ranking algorithm. As of this writing, Google's ad platform revenue accounts for the majority of Google's overall profits. That is, Google Ads is not a subdomain, but a separate business domain. It consists of and supports the operation of the following subdomains, Google Cloud Computing Services (Google Cloud Platform), Google Collaboration Platform (Google Workspace), etc. But what about Google Search and its ranking algorithm? While the search engine is not a paid service, it is the largest platform that Google ads rely on, its ability to deliver great search results is what drives traffic, and subsequently, it is an important part of the advertising platform format. Google's search results will hurt advertising revenue if its algorithm makes a mistake or if a competitor offers a better search service. So, for Google, ranking algorithms are a core subdomain.

Complexity, a simple implementation of the core subdomain can only provide a short-lived competitive advantage. Therefore, core subdomains are often complex. Continuing with Uber as an example, the company has created a new car-sharing market through creative technology and changed the taxi industry model decades ago. By gaining a deep understanding of the taxi business, Uber designed a more reliable and transparent form of transportation. A company's core business should have high barriers to entry, and it should be difficult for competitors to copy or imitate the company's solutions.

A source of competitive advantage, it is important to note that core subdomains are not necessarily technical. Not all business problems can be solved by algorithms or technology. A firm's competitive advantage comes from many sources.

For example, there is a jewelry manufacturer that sells online. Online store is important, but it's not a core subdomain, jewelry design is. The company can open an online store on an off-the-shelf platform in the market, or use off-the-shelf technical solutions to build its own online store, but its jewelry design cannot be outsourced. Customers love the jewelry maker's products and remember the brand because of the jeweler's designs.

To give a more complex example, say there is a company that specializes in artificial risk fraud detection. The company trains its analysts to examine suspicious information and flag cases of potential fraud. You want to design this risk control detection system for analysts to use. Is this the core subdomain of this company? No, the work that risk analysts do is the core.

Relationship between core subdomains and core domains: Core subdomains are also called core domains. For example, in the book Domain Driven Design, Eric Evans uses "core subdomain" and "core domain" interchangeably. But in this article, I prefer to use the concept of core subdomain to avoid confusion with the concept of business core domain.

2.2. General subfields

Common subdomains are business activities that all companies perform in the same way. Like core subdomains, common subdomains are often complex and difficult to implement. However, generic subdomains are not a competitive advantage for companies. The generic subfield doesn't need more innovation or optimization: it's market-proven and all companies use them.

For example, most systems require authentication and authorization of their users. It makes more sense to use an off-the-shelf solution rather than invent a proprietary authentication mechanism. This solution is probably more reliable and secure as it has been proven by many other companies with the same needs.

Going back to the example of a jewelry manufacturer running an online store, jewelry design is a core subdomain, but online store is a generic subdomain. Using the same online retail platform as competitors, the same common solutions, will not affect the competitive advantage of jewelry manufacturers.

2.3. Support subfields

As the name implies, the supporting sub-areas mainly support the company's business. However, in contrast to core subdomains, support subdomains do not help the company's core competition.

For example, for an online advertising company, its core subdomains include matching advertisements to viewers, optimizing the effective reach of advertisements, and minimizing the cost of advertisement delivery. However, in order to succeed in these areas, the company needed to categorize its creative material. The way the company stores and retrieves its physical creative materials, such as banners and rendered pages, doesn't affect its bottom line. In this field, nothing can be innovated and optimized. On the other hand, creative programming management is essential to implement the company's advertising management and serving system. This makes content orchestration solutions one of the company's supported subdomains.

The unique feature of supporting subdomains is to solve the complexity of business logic. The backing subdomain logic is simple. Their business logic mainly consists of data entry and ETL (Extract, Transform, Load) operations; the so-called CRUD (Create, Read, Update, and Delete) interface. Activities in these areas do not provide companies with any competitive advantage and therefore do not require high barriers to entry.

3. Comparison of subfield differences

Now that we have a better understanding of these three types of business subdomains, let's explore their differences from other angles and see how they affect strategic software design decisions.

3.1. Comparison of competitive advantages

Only the core subdomain can provide a company with a competitive advantage. Core subdomains are the company's core strategy that differentiates it from its competitors.

Generic subdomains, by definition, cannot be the source of any competing domains. These are generic solutions – the same ones used by the company's competitors.

Backing subdomains have low barriers to entry and offer little competitive advantage to the company. Usually, a company does not mind competitors copying its supporting sub-domain technology or business capabilities, which will not affect its competitiveness in the industry. On the contrary, from a strategic point of view, the company prefers that its supporting subdomain is a general-purpose, off-the-shelf solution, so as to avoid the loss caused by repeated wheel creation.

The more complex problems a company can solve, the greater the business value it can provide. Complexity is not limited to the provision of services to customers. For example, solving a complex problem could be making the business more flexible and efficient. For example, providing the same level of service as competitors at lower operating costs is also a competitive advantage.

3.2. Complexity comparison

From a technical practitioner's perspective, it is important to identify and combine subdomains because different types of subdomains have different levels of complexity.

When designing software, we must choose tools and technologies to suit the complexity of business needs. Therefore, identifying subdomains is crucial for designing a robust software solution.

The business logic behind the subdomain is simple. These are basic ETL operations and CRUD interfaces, and their business logic is obvious. Typically, its complexity does not go beyond input parameter validation or transforming data structures.

Generic subdomains are much more complex than supporting subdomains. Some companies or individuals have already invested time and energy to solve these problems, which can also explain some problems. This complexity is also worth spending time. These solutions are neither simple nor trivial. For example, encryption algorithms or authentication mechanisms. Generic subdomains are "known unknowns" from a knowledge availability perspective. These are things that you may know about a certain technology or a certain solution, but you don't know its specific implementation, but it is easy to use it directly. You can use a proven solution that is recognized by the industry, or you can hire a consultant who specializes in this field to help design a customized solution.

Core subdomains are complex. It is difficult for competitors to copy a company's core domain business, because the company's profitability mainly depends on the core subdomain. This is why, strategically, some companies are looking to solve complex problems as their core subfield.

Sometimes it can be challenging to distinguish core subdomains from supporting subdomains. It is a more useful way to distinguish according to the complexity of the business. Ask if the relevant subdomain can be turned into an ancillary business, and is anyone willing to pay for a subdomain solution? If there is one, that subdomain is the core subdomain. Similar reasoning applies to the distinction between supporting subdomains and general subdomains: Is it easier and cheaper to implement the business in this domain yourself than to integrate external existing solutions? If yes, this is a supporting subdomain.

From a technical point of view, identifying business complexity is very important for the software design of the core sub-domain. As we discussed earlier, core subfields are not necessarily related to software. Before Coding, it is necessary to model and implement the design of the business. Identifying the complexity of the core sub-domain business is crucial to the solution design. Is the business logic only similar to the data input checksum and CRUD interface, or must complex algorithm rules be implemented or business processes connected by complex business rules and variables? The former is a sign of a supporting subdomain, while the latter is a typical core subdomain.

The following figure can visually compare the business logic complexity and business difference (business value) of the general subdomain, supporting subdomain, and core subdomain.
insert image description here

3.3 Variability comparison

As mentioned earlier, the core subdomain business logic may change frequently. If a problem can be solved on the first try, then it may not be a core competitive advantage of a company, because competitors will soon be able to achieve and catch up. Therefore, solutions to core subdomain problems are urgent. Different implementations must be constantly tried, improved and optimized. But core subdomains don't stop there. Companies need to continuously innovate and develop core subfields. These changes take the form of adding new features or optimizing existing functionality. In any case, the continuous development of its core sub-sectors is crucial for a company to maintain its leading position in the industry.

In contrast to core subdomains, support subdomains do not change very often. It doesn't provide the company with any competitive advantage, so investing in the supporting subdomain adds little to the value of the core business compared to investing the same effort in the core subdomain.

Despite being an existing solution, generic subdomains can still change over time. These changes can come in the form of security patches, bugfixes, or entirely new solutions to common problems.

3.4. Comparison of real-time strategies

The core subdomain provides the company with key capabilities to compete with its peers. This is a business-critical responsibility, but does that mean the backing and generic subdomains don't matter? of course not. All subdomains are required by the company to work within its business domain. Subdomains are like basic building blocks: take one away, and the whole structure could collapse. That is, we can utilize different types of subdomain characteristics to select implementation strategies to implement each type of subdomain in the most efficient way. Core subdomains must be implemented within the company and cannot be purchased or adopted, which would be destructive to the company's core competitive advantage as the company's competitors can do the same.

It is also unwise to outsource the implementation of a core subdomain. This is a strategic investment. Cutting corners on core sub-areas is not only risky in the short term, but can have deadly consequences in the long term: for example, an unmaintainable codebase that fails to support the company's strategic goals. The most high-end talents in the company should be assigned to work in its core sub-areas. Implementing core subdomains in-house allows companies to make changes and develop solutions faster, thereby building a competitive advantage in less time.

Since the requirements of the core subdomain need to change frequently and continuously, the solution must be maintainable and easy to evolve. Therefore, the core subdomain needs to be implemented with state-of-the-art engineering techniques.

While common subdomains are difficult, the problem is solved, so buying an off-the-shelf product or adopting an open source solution is more efficient than investing time and effort into implementing an in-house common subdomain to solve the problem.

Unlike general subdomains, support subdomains also lack a competitive advantage, but no off-the-shelf solution is available, and it is reasonable to implement support subdomains internally. Therefore, companies have no choice but to implement support for subdomains themselves. That said, the simplicity of the business logic and infrequent changes make it easy to cut corners.

Supporting subdomains does not require complex design patterns or other advanced technology stacks. A rapid application development framework is sufficient to implement the business logic without additional complexity.

From the perspective of personnel allocation, the support subfield does not require high-end technical talents, and junior and intermediate personnel with potential should be arranged to realize the logic of the support subfield and exercise. This saves engineers in the team who have experience in dealing with complex challenges in the core subdomain. Finally, due to the relatively simple business logic, the outsourcing method can be preferred to implement the supporting subdomain.

Summarize

Use the following table to summarize the differences between different types of subfields:

subfield type Competitive Advantage Complexity variability Implementation Strategy Attention
core subdomain yes high high Self-study high
universal range no high Low Purchase/Outsourcing solved
supporting subdomain no Low Low Self-developed/outsourced generally

Guess you like

Origin blog.csdn.net/u011397981/article/details/131924526