Key layers of distributed applications

Every application that is going to be used by end users should be designed appropriately as users are expecting to process information from various data sources that might be geographically distributed. They are also expecting this information to be up-to-date and capable of being inflected very fast. Designing such applications is not an easy task and involves integration among different groups of components. Let's review the layers that form a typical distributed application.

The responsibilities in a distributed system can be divided into four layers:

  • The data layer
  • The business logic layer
  • The server layer
  • The user interface layer

The data layer

The data layer is responsible for storing and accessing data and for querying, updating, or deleting this data. This layer includes the logic of data access and store performance that can be a complicated task, especially dealing with a large volume of data distributed among different data sources.

The business logic layer

The business logic layer is responsible for the crucial part of the application: logic that is executed between the client and data layers. Basically, the business logic layer contains the logic of the application. It is the "brain" that coordinates the integration between the data layer that is used for reading and storing the data and the user interface layer that interacts with the client.

The server layer

The server layer is sometimes called a services layer, and that is an accurate term as well. The server layer is responsible for exposing some of the capabilities of the application that can be consumed by other services and used as a data source, for example. This layer works as the interface between our application and the world of other services, which is different from that of the end users.

The server layer is an extremely important part of every distributed application; its proper design can impact the overall performance of the system as it is responsible for the defining of the collaboration principles between parts of applications and the distribution of load and data. It contains security mechanisms that validate requests as well.

The user interface layer

The user interface layer is the layer that is used by clients interacting with the application. This layer must contain only that part of the system that is responsible for rendering the interface consisting of the data, user interface components, and other things important in the process of interacting between the user and the application.

This layer also has the logic that can be used in the process of adapting the application user interface layer for different form factors, people, cultures, interfaces (such as touchscreens), screen sizes, and resolutions. At the same time, it must be simple and effective and must provide a smooth user experience.

Properly designed user interface design is important; if the user interface is not friendly and experience is not smooth or if the user does not understand how the system works and how it should be used, the application will not be used.

What is Agile?

Agile, in this context, is a generic style of working. It takes a holistic view of projects, rather than being just a set of delivery techniques.

Have you ever been involved in a project that spanned several months only to have customers not use the end result? Most developers have and probably more than once. Assuring that what you develop actually addresses the needs of the client has always been one of the biggest challenges in any development.

Addressing this problem was one of the motivations behind the Agile manifesto. The first guiding principle of the Agile manifesto states that 'Our highest priority is to satisfy the customer through early and continuous delivery of valuable outputs'.

What is Agile?

In a fast paced environment Agile ensures that solutions meet the business needs and is focussed on timely delivery.

Delaying decisions as much as possible until they can be made based on facts and not on uncertain assumptions and predictions is fundamental to an agile approach. This does not mean that no planning should be involved – on the contrary, planning activities should be concentrated on the different options and adapting to the current situation, as well as clarifying confusing situations by establishing an environment where rapid action can be taken.

Agile is all about flexibility, the principle of 'responding to change over following a plan' is considered a strength of agile. This does not mean that Agile does away with the need for planning. Things change, and you want to have flexibility to adjust and react to those changes. You clearly want to have a plan for where you're headed and approximately how you'll get there. But you also want to leave room to adjust your plan.