Well-designed software for enterprise-class applications is the key to its success. After all, it aims to help solve the business problem. In order for such software to meet the goals set for it, it is worth creating them with the best practices, and to invest in a few key aspects. These elements will be analyzed from the point of view of business and the design process. However, before we go deeper into further analysis, it is worth getting acquainted with the general criteria, when analyzing the application.
A commonly used approach with regard to enterprise applications is its specification in relation to:
- layers it consists of,
- properties that characterize it.
The layered division points to practical issues related to the operation of the designed solution. On the other hand, the division with the indication of properties is important for the architect in the design process. It is worth mentioning that currently, most applications are multi-layered – most often based on 3 layers. However, there are also applications: 1-layered (example may be desktop applications), 2-layered (example may be a client-server architecture) or other projects with more of them.
The three-layer application mentioned above consists of:
- presentation layer;
- business layer;
- data layer.
The presentation layer is responsible for interaction with the end-user. Here, client applications work, e.g. a banking application on the user’s phone. The business layer is responsible for implementing all kinds of business functions. The same layer is also responsible for communication with the data layer. At this level, customer data (requests) are processed and data prepared for sending to the presentation layer. It is a kind of connection between two extreme layers. The last layer – the data layer is responsible for storing them. The databases are located here. The division aims to determine the functionality of the designed software, from a business point of view.
Let’s now turn to the issues related to the properties of such architecture. Aspects that are important from the point of view of an architect or programmer are:
- safety – it is worth clearly defining the priorities and criteria which the designed architecture should meet.
- scalability – the system/application should be ready to receive increased traffic. Creating a software in a thoughtful and art-compatible way should always guarantee decent scalability.
- modular construction – it is about the possibility of delivering modules by different suppliers.
- short time and low costs of future expansion – creating architecture based on the best practices used in various frameworks, should not require us to rewrite a significant part of the code, which saves time and budget.
- distributed structure – the application should be appropriately adapted to the infrastructure in which it is to operate. An important aspect is the ability to launch it, among others with multiple servers, using a load balancer or readiness to perform emergency operations in case of unexpected events.
- monitoring and support – it is very important that software after implementation often requires support, maintenance, and then it would be further developed.
- integrity – it is important to prepare appropriate mechanisms, within the framework of the application being developed, to enable the exchange of data between partners or external data providers. It’s all about different websites and APIs.
- supporting systems – it is worth focusing on applications related to the analysis of the state of architecture, reporting on threats and security status etc. The point depends on the requirements that were set at the beginning of the application design.
- documentation – it is crucial that the solution has full documentation: service, technical descriptions as well as that one for the user. Each process within the software should be well described, defined and (if necessary) visualized. Thanks to this, if you change the provider supporting or maintaining the environment, the process of taking over the duties will be much easier.