Connecting Products to Domains and Platforms: A Framework for Building Complex Software
Pigeon Point Light House, Santa Cruz - Photograph by Seshu Guddanti

Connecting Products to Domains and Platforms: A Framework for Building Complex Software

In a?previous article, I discussed how splitting complex software into modules or microservices helps companies to remain competitive. Companies go to market with a mix of vertical solutions, product bundles, and individual products. These different approaches allow companies to meet the customers' unique needs and provide them with various options for their specific use cases. On the other hand, technologists think in domains, platforms, and infrastructure when building complex software. This article offers a conceptual framework for connecting products to domains and platforms. I will also extend the conceptual framework for product bundles and vertical industry solutions.?


Volkswagen sells various products, including passenger cars, commercial vehicles, and motorcycles. Volkswagen has used the commonality principle in developing its products. It involves designing and developing products with common components and systems that are shared across multiple models and brands. This approach has helped Volkswagen to reduce costs, improve quality and reliability, and increase production efficiency.??


The commonality principle, which involves designing and developing products with common components and systems, can also be applied to the software world. In this context, these shared components are known as domains or microservices. Developers can create more complex and robust products that incorporate various microservices by orchestrating multiple domains.


Let's consider the case of shared components between Uber and Uber Eats. Both products require similar functionalities like real-time location tracking, payment processing, and driver/restaurant partner management. By using microservices, developers can create shared components that can be used across both products, making it easier to maintain and update the domains.

Here are some examples of shared microservices that Uber and Uber Eats might use:

  1. Location tracking: This microservice would handle real-time location tracking for both Uber and Uber Eats, allowing drivers and delivery partners to find and navigate to their destinations efficiently.
  2. Payment processing: The payment processing microservice would handle all payment transactions for both platforms, ensuring a seamless and secure payment experience for users.

By using shared microservices, Uber and Uber Eats can reduce development costs and improve the overall user experience for their customers. In addition, the shared components can be easily maintained and updated, allowing the products to adapt to changing customer needs and market trends.


In addition to creating a seamless experience, splitting products into domains gives companies the strategic option to focus on critical domains that provide differentiating value compared to the table stakes domains. By doing so, companies can prioritize their efforts and resources, ensuring that they invest in areas that offer the most significant value to their customers.


The commonality principle can be further extended to the next level to include common sub-components and systems within domains in a company. These standard sub-components can then be developed as internal platforms with API abstraction. Consequently, all domains can leverage internal platforms to increase efficiency and speed up the development of domains.


Using the e-commerce example, domains such as customer management, order processing, and payment processing can take advantage of internal platforms such as OLTP database service, streaming service, and authorization service. Therefore, it is crucial that internal platform services are generic and can meet the needs of all domains without any modifications. Consequently, using internal platform services will rapidly accelerate the development of domain services and eventually speed up the development of products.?


No alt text provided for this image

The commonality framework can be taken further below internal platforms by developing common sub-components as infrastructure modules, which can be abstracted through API. Infrastructure modules refer to the underlying systems and resources necessary to support the application, such as servers, networks, and storage. They are crucial for ensuring the platforms, domains, and products are available and responsive to users.


Now moving to the go-to-market approach for a software product, each product should have API abstraction along with UX.?The bundled product can be constructed quickly by orchestrating multiple product API.?Similarly, the vertical solutions should be built leveraging the product API or bundle API


Organizational structure is a critical element in the success of the product, domain, and platform.?Therefore, my next article will extensively discuss the guiding principles in designing the necessary organizational structure.??


In summary, aligning products, domains, and platforms with commonality principles can help companies to remain competitive by enabling them to quickly produce new products and offerings while maintaining a high degree of customization and specialization.

#future #platformstrategy #platforms #platformengineering #microservices #leadership #api #organization


Notes:?

Inspiration for the article is from my experience building two internal platforms and increasing the productivity of domain teams. In addition, the theoretical framework is from research in?Platform-based product development for manufacturing industries.


The word platform typically refers to industry/marketplace platforms - such as social media platforms, Airbnb, Uber, etc. Internal platforms are similar but are internal to companies.?

Venkata Jagannath

Principal Engineer at US Bank.

1 年

Great article Seshu. Here is a repo I had used - it is very good to study and see some practical end to end examples. https://github.com/ddd-by-examples/library#about

回复

Nice article Seshu! Thanks for sharing!

回复
Ruchi Batra

SVP, Software Engineering, U.S. Bank??Tech and Strategy??Speaker ??Azure 3X certified ??Author

1 年

As always on point! Would love your take on how do we do this in a mature org.

回复

要查看或添加评论,请登录

Seshu Guddanti的更多文章

社区洞察

其他会员也浏览了