Look for suggestions on how to approach this problem and see if the design is really the best design.
My client is in the process of reorganizing her nearly obsolete package of tools and services. Customer is a rapidly expanding electronic merchant. This is the main product - this is a great e-commerce website. Around this website, the client has many data channels that it provides to its partners. Many internal applications for marketing, sales, reporting, etc. Many custom support and partner support applications. A good number of different data synchronizations, ETL jobs, etc. You get an image.
Data warehouses and data providers are also numerous. NOSQL cloud mega-scalable storage provides most of the content on a public website. SQL servers with multiple databases provide data for internal applications. There are also special search engines that provide mega-scale search capabilities, as well as other channels that applications consume from different third-party providers. If DDD is accepted, the plan should be to ensure that different groups of repository objects inherit from the base classes of the data warehouse repository
An exercise was performed by the client, where they outlined most of their business objects at the "generic" level: entity names and relationships. Outside of this βgenericβ level, there is a decent amount of reuse of various specific objects in applications, and there is a decent amount of entities that will differ in their implementation, depending on the application.
For example: an order object on an e-commerce website might look like X, but for an application that handles support calls like Y, and also for those who do fraud analysis, like Z.
I am looking for suggestions on how to adapt DDD or another architectural template to manage this gigantic mess: have a solid corporate strategy that facilitates reuse and allows you to separate logic if necessary. In addition to the usual (scalable, flexible, adaptable, single, simple, etc.) Criteria.
Thanks to various data warehouses, the DTO structure is significantly different from the data structure in a data warehouse. Due to different business needs, different applications need different versions of certain objects, and as the company expands rapidly, the future is highly unstable, and flexibility is paramount.
I believe that my biggest problem is to find a way to split the business model into different domains and still keep it together when there is a lot of sharing or reuse, while at the same time being able to accept a high level of change.
Thank you for all your suggestions.
PS Store - Microsoft Store. VS2010 / .NET / SQL / Azure