Following the recent delivery of a solution architecture class, I produced a new eLearning module for our Service Architecture Practitioner Syllabus, and part of that module is explored in this post, where I examine the relationship between the solution and service architecture.
Parallel Architectures
A solution can be understood in relatively abstract terms – a solution to a problem, or a solution to a business requirement. Hence, even the provisioning of an individual service may be seen as a solution to some problem in the right context.However, taking that more conventional IT sense, a solution is usually seen as a packaging of application functionality, that provides support for a set of business requirements. Hence a solution can be understood as consisting of the following main elements,
- One or more Application assemblies, each providing several functions that are required of the overall solution.
- A form of user interface that provides a means for Human-Machine interaction between the user and the applications in a manner that supports a particular business workflow.
- And a set of Services, where each provides one or more of the required functions.
Figure 1: Parallel Solution and Service Architecture Views |
The process starts by modelling the Solution Specification Architecture. A key part of this is identifying which services are required in order to support the functions that the solution automates.
Hence the Solution Specification Architecture is partly expressed by a dependency model that shows the solution elements and their service dependencies.
Next, a Solution Implementation Architecture is produced showing the software elements that will be required to implement the solution specification. Now the relationship to the required services can be expressed more precisely using an Interaction or Sequence Diagram.
Finally, the Solution Deployment Architecture shows how the software elements are deployed to the network modelled by the Technical Architecture and realized in the operational environment.
Why separate the solution and service architectures in this way? A solution can be considered to consist of both of these views. That is, the delivery of a solution that addresses some business need requires both the delivery of the services and their assembly along with the human machine interaction aspects into the solution.
So won’t one architecture suffice? It could do. And for some small, truly stand-alone, self-contained solutions it may well be sufficient. But in many cases there are some good reasons why it is best practice to deal with them separately, even if their delivery of both is within the same solution project. For example
- Enable agility. By decoupling the Services from the human machine Interaction each can evolve at a different rate
- Encapsulate change. By hiding unnecessary detail of the complete Service Architecture and focusing only on the services directly used by the Solution, this helps to encapsulate change in the service architecture.
- Support sharing. For most solutions it is desirable to leverage Services that are shared or common across the enterprise or line of business, and hence these services need to be independent of any one Solution. Moreover, it isn't uncommon for solution-specific services to evolve into shared services.
Solution and Service Architecture Iteration
As noted, the Solution Architecture is partly expressed in terms of the Services it uses. The apparent overlap between the Solution and Service Architecture shouldn’t be seen as a duplication of effort.Rather it is just two alternative views of the same overall architecture, and common elements are only developed once.
Hence, as shown in figure 2 the Service Architecture is an input to the Solution Architecture activity. At the same time, the Solution Architecture activity may identify the need for new Services, and these new requirements can be fed back into the Service Architecture activity. It is then determined whether these new Services are specific to the Solution, or whether they should be delivered as Shared Services and made available to other Solutions. This should be a subject of policy.
As illustrated, both of these activities should be working off the same set of business models as input, but each put to appropriate use.
Figure 2: Solution and Service Architecture Iteration |
The extent to which the Solution Architecture and Service Architecture are developed together as part of the same project will depend on various factors such as the need to deliver services that are used in multiple solutions. At one extreme there may be an extensive Service Architecture that pre-exists the Solution Architecture, and a Solution is largely a new assembly of pre-existing Services. At the other extreme, there may be a minimal existing Service Architecture and it needs to be developed in parallel with the Solution Architecture, with much of the Service identification being based on the Solution’s specific requirements.
Agile Solution Delivery
Figure 3: Agile Solution Delivery |
Similarly, the specification, implementation, and assembly of services and solutions would also be performed though a series of development sprints.
Whilst the necessary business models required as input could be collected during a pre-sprint phase.
No comments:
Post a Comment