-1

Our company wants to standardize apps across the enterprise on the .net stack. We're building an enterprise style guide. We have a solutions architect helping us with the design of our enterprise architecture. His recommendations include an enterprise services layer and also an enterprise UI layer with reusable components.

I completely agree on having an enterprise services layer that will be used by most if not all web apps for data. However I'm not convinced about the enterprise UI layer.

Many of our existing applications display the same information eg order details. His argument is that our company has spent money to build the order details UI multiple times for each application when it shows have been built once and reused in other applications. He wants to build reusable UI components on angular and bootstrap that can be dropped into future applications built or rewritten on the same stack.

I like the idea of having reusable components but I think it should be limited to the structure and styles and not include the UI framework. Adding the UI framework adds complexity to each control and also costs more and we'd be essentially building a cms. Besides that I feel we'd be locked in with angular which is not necessarily bad but what if another framework like react was better suited for a future application?

My questions are -
1. Has anybody built or worked in an environment that had a similar architecture? What was your experience?
2. What do you see as the pros and cons of this architecture?

Thanks in advance for your help.

Rubén
  • 34,714
  • 9
  • 70
  • 166
maddog
  • 184
  • 2
  • 13

2 Answers2

0

Regarding the provided recommendations:-

  1. Enterprise Service Layer: of course this is necessary where you can unify and standardize the way you interface with backend systems, data layer and 3rd party systems. This is what we call it usually Enterprise Service Bus "ESB"
  2. UI Integration is different that UI re-usability. You can use UI integration in several ways

    2.1 Some framework can provide you tools and APIs to bring several UI components "screens" from running apps into one screen. Microsoft has a framework and a commercial product for that purpose.

    2.2 Some technologies like Java Portals allow you to include portlets "reusable UI components with it's business logic" into any other portal page and provide API to communicate between Portlets.

  3. Reusable UI components is of course obvious but this is development practice not really impacting the architecture. It has its own overhead and governance, depends on your projects size. If you have one UI team to serve all project this might be effective to ensure there is high re-usability.

Using ESB is definitely the best way forward but it will change the way you are used to. There are some areas to consider

  1. Application Mapping to processes, re-engineer applications based on the findings
  2. Securing the Enterprise Service Layer and develop Role Base Access Control.
  3. Review your operations workbook to make sure after having a Enterprise Service Layer, you can identify problems, isolate it and reduce the impact on other systems which use the service layer.
  4. One error or failure in the service layer will impact all systems, so you have to increase the quality and use "if you are not already" some methodologies to increase quality like Continuous Integration (CI) with full test automation.
  5. You need to review the hardware and do a capacity planning to make sure that the Enterprise Service Layer will perform well and can scale enough to support all applications. A performance test here will be very useful. One of the main tasks for the enterprise architect is to make sizing for all apps and recommend the specification for the Enterprise Service Layer environment.
Praveen Kumar K S
  • 3,024
  • 1
  • 24
  • 31
Ahmed Hashim
  • 264
  • 3
  • 10
0

Though a bit late, I wish to provide some guidance so that who reads this will get the latest from the enterprise IT eco system.

Recommendations / Suggestions,

  1. Find out the Enterprise Architecture Principles of your organization
  2. If it says reuse and recycle for example go for Reusability in your architecture designs.
  3. In case if it promotes innovation, get out of the UI Frameworks standardization, because these days every application/service consumed by multi modal apps like web, desktop, mobile, tablet and devices.
  4. So focus on building services layer, to re-phrase this layer, you call it as an SOA/API Layer, have services developed using both RPC, REST patterns, get your portfolios/business development teams to publish the API/Services. Catalog it.
  5. So whoever wants to develop in any UI frameworks, let them experiment and finally settle in one or two UI Frameworks.
  6. As pointed by Ahmed Hashim, do invest on a ESB, if you need pub/sub of events and orchestration, and lot of Line of Business Applications in your eco systems which exchange data.