Creating the solution structure

After the solution boundaries are defined, the architect can now start working on the structure of the solution. A solution structure provides conceptual understanding of the solution space. The structure of the solution dictates the architectural framework to be used across the solution. The architectural framework is responsible for ensuring consistency throughout the solution there by making the solution more extensible and maintainable.

The key input for defining the structure of a solution is the system requirements. This will include both functional and non-functional requirements. The non-functional requirements will include requirements around security, performance, availability, reusability, and so on. The technologies used to develop the solution are largely influenced by their ability to deliver these requirements. Each non-functional requirement may force additional software components in the system. For instance, security requirements will require a security module for managing identity, authorization, and authentication of users accessing the system.

This step of the process is of most importance to us. During the definition of the solution structure, the solution architect can use architectural patterns to optimize and improve the solution architecture. We will discuss the common architectural problems surfaced for Microservice-based systems and the patterns which can be used to address these in detail in the next chapter, Microservices architectural patterns.

Let's use the previously described example and understand the solution structure for that system. Let's assume that there is a non-functional requirement to authenticate and authorize the users trying to book the ticket before performing the functionality. The following is a solution structure for this system:

Solution structure

The solution structure defines the components within the solution, each of which specializes in a specific task. The adapters connecting to the external systems act like a bridge for communication to the externally hosted services.

In terms of design patterns, an adapter is a component that allows two incompatible interfaces to work together. The adapter design pattern allows incompatible classes to work together by converting the interface of a class into another interface that the client expects. This eliminates friction between incompatible interfaces and allows them to work together. You can read more about adapters here: https://en.wikipedia.org/wiki/Adapter_pattern.

The user interface is used by the users to interact with the system and the core functionality is encapsulated within the component names as Business Logic. A separate component is introduced to handle the security requirements of the system. The user interfaces interact with the security module of authenticating and authorizing the user.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.125.205