Here, we shall take an example of integrating a large framework with smaller frameworks.
This case can be applicable for a lot of enterprise applications today.
Eg: The .Net Framework, CRM Applications like MIS, Zoho CRM or even OLA, Netflix
Here, we will take the usecase of 2 systems
- The Core System / Framework: This can be a product that supports integration with other products offering some standard features of its own
- Eg: Common Infrastructure Layer of the .Net Framework is the core Layer with supports multiple versions of .Net framework and other device frameworks
- A sub-system: An independant product which needs to be integrated with the core framework.
- Eg: Integrating Node js with the .Net Framework.
- Integrating a new Language like Python with .Net Framework
The above diagram shows a core system, that allows integrating other sub-systems to it.
Here Core System could be equivalent to a product / solution.
Similarly Sub-system is not a module of the Core System, it is an independent system viz. a product / solution
While we analyse the solutions for such a case, we should already have the development architecture with the Deployment architecture ready. Here we will analyse the cases as shown in the diagram.CASE I:
The entire product consisting of the Core and its subsystem is deployed / installed as a monolithic deployment.
Eg: Visual Studio IDE installation is a standalone monolithic installation on a given user machine. This setup file with its integration to all the languages (C#, F#, VB,...) and technologies (EF, Asp.net, WPF, Web Api, UWP etc) is available as a single setup.
The important point to be considered here is C#, F#, VB, EF, Asp.net, WPF etc are independant solutions / subsystems which are getting integrated with .Net Framework which is acting as the Core System.
If you have a similar case in your architecture of the product, then it becomes important to understand what solutions can be used here.
Based on what has worked for me in several cases, the integration in this case can happen using
- Standard Architectural solution pattern like Micro-Kernel Architecture or Plugin Architecture
- Within this solution also, because this is a monolithic deployment, considering the detail of integration as
- Integration using Code Contracts
- Using Application Configurations / App-settings
- Using Database configurations
CASE II:
The deployment architecture is distributed / hybrid or microservice based.
As an example, we can take the Netflix app deployment architecture
Each sub-system is deployed separately. For example, a channel like STAR wishes to telecast its shows on NetFlix OTT platform. Here, STAR already has all of its content already deployed on its servers, using its own deployment architecture. Netflix also is deployed separately. Here, STAR needs to be integrated with Netflix.
It is possible that,
- Both these systems have different development architectures, frameworks and technology stacks for development.
- Common Types for communication would not exist.
- Dlls referencing would not be feasible and could violate some Intellectual Property policies in both corporations.
The possible architectural solutions could be
- Service Oriented Architecture (SOA), especially used if
- The Presentation layer becomes polyglotic or has several apps in the UI Layer
- The Business requirements needs the product to expose APIs for usage by customers / clients
- Eg: Google Maps Apis, Accuweather APIs, Github APIs
- Microservices Architecture, especially when the services layer of the development architecture becomes polyglotic
No comments:
Post a Comment