For some time I am thinking about application architecture. Consider pros and cons and tried to redesign the concepts of how to develop an application that the architecture uses. However, after gathering more and more information I came to one simple conclusion: I try to invent a circle again, which I don’t really want to. Many web systems work in multi-layered architecture. What does that really mean? What is it and what is it? Regardless of whether we are building an internet portal, booking system, document circulation system in the company, electronic banking is a part of the elements remains very similar but never identical.
Why do we really need the architecture of the IT system? It is often the case that when the complexity of IT system increase, an appearance of additional components caused a need for their separation, a possibility of easy change to another component. This solution forced the use of specific protocols, declarations of abstract classes, or direct reference to fields and class methods.
Usually, it is a single application that does not require any external communication to perform tasks.
Double layer architecture
Client – Server or Master – Slave. These are usually two programs located on one machine or scattered geographically. The service provider is a superior program and one or more programs use these services, for example, a web server, an email server, an application server.
This model consists of more than two layers. Separation of the user interface, storage of data into several separate layers that can be separately developed and scaled. Such a division facilitates their maintenance and mutual development does not affect the other layers.
Description of specific elements in the layer:
- Unser Interface – implements the logic of handling the presentation layer for the user
- Gateway – induces and provides services to external systems
- Admin Interface – implements logic for handling the presentation layer for the administrator
- Message-service(Commons) – it supports common logic
- Scheduler – responsible for periodically running processes
- Security Management – permissions and authentication management
- Process Managment – allows to running long-term processes with the need to maintain and interact with the user
- Domain Specific Components – responsible for fixing and accessing objects
- Database – relational database
Advantages and disadvantages of layered architecture:
- I don’t need a specific technology or vendor platform to create multi-layer architecture
- Testability – Is very easy to create tests in automated testing environment as JUnit for example, for each layer
- Separation of layers permits to easily map functional requirement with system modules
- Enhanced Security
- Layered architecture enables to update only the application servers, not all clients in case that we want to modify only business logic
- Hidden database structure
- Communication that can be complex
- Performance and it’s required to use additional tools for measure and reporting this information
- Difficult to implement and maintain
That’s why I decided that Energy Billing System will be based on a multi-layered architecture. There is one more aspect, I will be creating applications for the first time based on this architecture, so I will make a lot of mistakes, which is very good. Why? Because I will be able to solve them later.
- ANSI/IEEE 1471-2000 Recommended Practice for Architectural Description for Software-Intensive Systems
- ISO/IEC/IEEE 42010:2011, Systems and software engineering — Architecture description
- [Quora] What does a web application architecture include
- Architectural Styles and the Design of Network-based Software Architectures