Connecting Products to Domains and Platforms: A Framework for Building Complex Software
Seshu Guddanti
Engineering Leader - Platforms, Distributed Computing, Microservices, and AI/ML
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:
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.?
领英推荐
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.?
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!
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.