More fluffy draft on yet another fluffy topic...
Again, feedback encouraged.
--
Recurring Architectural Capabilities
As we saw earlier, the SOA architectural model is fractal. This means that a service can be used to Expose IT assets (such as a Line of Business system), be Composed into workflows or Business Processes (each of which may also be exposed as a service) and be Consumed by end users, systems or other services. SOA is a fractal, not layered model. While the Abstract SOA Reference Model provides a holistic view of several important SOA concepts, the Expose / Compose / Consume portions of the model should not be interpreted as layers (despite their apparent appearance in the model). Designing a SOA as a set of well-defined tiers (or layers) will constrain the value and flexibility of your services, resulting in dependencies across unrelated components. This is why the Expose / Compose / Consume portions of the model can be thought of as independent architectural initiatives referred to as a Service Implementation Architecture (Expose), a Service Integration Architecture (Compose) and an Application Architecture (Consume). While each of these architectures are designed to be independent of one another, they share a set of five common capabilities
Figure 7: Recurring Architectural Capabilities
Communications focuses on how messaging is accomplished between senders and receivers. There are a broad array of options and patterns available – from pub/sub and asynchronous to message and service interaction patterns. Services provide an evolutionary approach to building distributed software that facilitates loosely coupled integration and resilience to change. The advent of the WS-* Web Services architecture has made service-oriented software development feasible by virtue of mainstream development tools support and broad industry interoperability. While most frequently implemented using industry standard Web services, service orientation is independent of technology and architectural patterns and can be used to connect with legacy systems as well. Messaging and Services are not a new approach to software design – many of the notions behind these concepts have been around for years. A service is generally implemented as a coarse-grained, discoverable software entity that exists as a single instance and interacts with applications and other services through a loosely coupled (often asynchronous), message-based communication model. Messages tend to be based upon an agreed-upon set of semantics (such as an industry-standard Purchase Order) and serialized using an interoperable, extensible syntax (usually XML, although alternate approaches like JSON, RNC and ASN1 are sometimes used).
Workflow and Process are pervasive across multiple layers of an integration architecture – from formal orchestration of processes to flexible ad hoc systems and collaborative workflow across teams. Since business processes are dynamic and evolve with the organization, the workflow that models these processes must be equally adaptable. In addition, effective workflow involves not only process modeling, but also monitoring and analytics in order to respond to exceptions and optimize the workflow system over time.
The lynchpin to success in many integration architectures is the ability to provide Data management. The need to deliver a shared view across disparate, often duplicate sources of data is more important than ever, as businesses strive to achieve a 360-degree view of organizational information. Entity aggregation, master data management, and the ability to make data useful via analytics and mining are crucial elements of integration architecture.
Successful integration architectures depend upon both service delivery and the ability to consume services in a rich and meaningful way. Service consumption needs to be contextual, mapping to the natural workflow of employees, customers, and partners. To that end, an integrated User Experience spanning smart clients, rich clients, lightweight Web applications, and mobile devices enables service consumption by the broadest possible audience.
To support integrated user experiences, customers require the ability to manage the identity lifecycle – providing integrated Single Sign-On (SSO), access management, directory services, and federated trust across heterogeneous systems. Today, many solutions are built using fragmented technologies for authentication and authorization. In the new application model, access decisions and entitlements need to be made at multiple layers and tiers, in which a federated Identity across trust boundaries becomes a key requirement.
During the lifetime of a service, the service most probably changes in different perspectives as listed below. As a result, one service will probably have to be available in several versions.
Service management encompasses many capabilities, some of which are listed below (we will discuss Management in greater detail in Chapter ??).
The five architectural capabilities discussed above are supported by the Microsoft SOA Platform. Support for the common architectural capabilities is discusses in greater detail in Chapter 2.
Figure 8: SOA Capabilities on the Microsoft Platform
We can also think of these five common architectural capabilities as set of perspectives for viewing and understanding the Abstract SOA Model. The five architectural capabilities serves as a set of lenses to help us view and better understand the challenges associated with Exposing existing IT investments as services, Composing the services into business processes and Consuming these processes across the organization.
Service Enablement
Expose focuses on how we design and expose our services. We will most likely start out by enabling our IT investments to be exposed as web services.
As our organization matures we will start adding new services, most likely as proxies for other resources within the organization.
One of the hardest parts of service implementation is deciding where to begin. The are a variety of choices here and there is no single recommendation that will work for everyone. Motion is a methodology that provides some guidance for identifying business capabilities that could be exposes as services.
What are some best practices that one should follow when exposing IT investments as services?
The recurring architectural capabilities provide us with a set of considerations when exposing IT investments as services. Let’s take a quick look at some of the considerations associated with each capability for service exposure (this is by no means a complete list):
Communications
Determining what to expose and how - Avoid falling into the granularity trap – focus on meeting your business requirements Service Operation Contracts Message and Data Contracts Configuration, behaviors and control SLAs Governance Versioning More…
Determining what to expose and how - Avoid falling into the granularity trap – focus on meeting your business requirements
Service Operation Contracts
Message and Data Contracts
Configuration, behaviors and control
SLAs
Governance
Versioning
More…
Workflow and Process
Coordinator services for distributed, long-running processes Tracking services capable of logging specific events within a workflow Compensation services
Coordinator services for distributed, long-running processes
Tracking services capable of logging specific events within a workflow
Compensation services
Data
Entity services Entity Aggregation services: acts as a single point to access information that may exist in multiple systems. An Entity Aggregation service has the following responsibilities:
Entity services
Entity Aggregation services: acts as a single point to access information that may exist in multiple systems. An Entity Aggregation service has the following responsibilities:
MDM – exposing data across corporate or departmental boundaries. Canonical schemas imply that all the services share the same schema, which need not be the case
MDM – exposing data across corporate or departmental boundaries.
Canonical schemas imply that all the services share the same schema, which need not be the case
User Experience
Specialized services for supporting user interfaces (caching resources, communications between UI and services, etc). Service wrappers provide coarse-grained interfaces for user app consumption, lightweight mash-ups, etc.
Identity and Access
Identity Management Impersonation and Delegation services Trusted Subsystem - A trusted subsystem model implies that services are trusted to perform specific tasks, such as processing customer orders. Authentication (Kerberos, SSL) Role-based access control (RBAC) Create/revoke trust relationships Services need to make authorization decisions, such as approving an order submission before performing the business transaction. The service must know the identity of the end user submitting the order. Need to flow the identity of the end user is an inherent property of the delegation model, it is not so for the trusted subsystem model and special efforts must be made to include this feature. To support the notion of trust as defined by the model, the services must at least be able to:
Identity Management
Impersonation and Delegation services
Trusted Subsystem - A trusted subsystem model implies that services are trusted to perform specific tasks, such as processing customer orders.
Authentication (Kerberos, SSL)
Role-based access control (RBAC)
Create/revoke trust relationships
Services need to make authorization decisions, such as approving an order submission before performing the business transaction.
The service must know the identity of the end user submitting the order.
Need to flow the identity of the end user is an inherent property of the delegation model, it is not so for the trusted subsystem model and special efforts must be made to include this feature.
To support the notion of trust as defined by the model, the services must at least be able to:
Authenticate / verify identity of upstream / downstream services Decide if the service is a trusted subsystem for specific functions (including propagating identity claims) Protect the integrity of the data being communicated between trusted subsystem and services. Besides application data, application plumbing data, such as the identity claims of the original user, must also be protected so that no man-in-the-middle can modify the identity information that is in transit.
Besides application data, application plumbing data, such as the identity claims of the original user, must also be protected so that no man-in-the-middle can modify the identity information that is in transit.
Service Composition
Compose focuses on how we can combine or aggregate granular services into more complex processes. We will most likely start by using services that expose our existing IT investments.
Service composition results in a new service instance that the rest of the organization can make use of. The composition provides capabilities such as correlated asynchronous service invocation, long running processes and other capabilities for orchestrating autonomous services.
The recurring architectural capabilities provide us with a set of considerations when composing granular services into complex processes. Let’s take a quick look at some of the considerations associated with each capability for service composition (this is by no means a complete list):
Communications Service interaction patterns Exposing orchestrations as services Asynchronous service invocation patterns Workflow and Process Transactions High frequency of change Business Rules Service Orchestration Service Interaction Patterns (SIPs) Process Externalization Long Running Processes Auditing and analytics Data Tracking the state of a given workflow instance Data transformation (ETL) Reliable message processing and storage Replication Synchronization Metadata repository and Management Instance reconciliation Schema reconciliation Document Replication Syndication/Aggregation User Experience Composite applications (OBAs) Human workflows (MOSS) Orchestrations initiate human workflows via SharePoint adapter Pageflows Identity and Access Impersonation and Delegation Provisioning Identity Repository synchronization Approval workflows
Service interaction patterns
Exposing orchestrations as services
Asynchronous service invocation patterns
Transactions
High frequency of change
Business Rules
Service Orchestration
Service Interaction Patterns (SIPs)
Process Externalization
Long Running Processes
Auditing and analytics
Tracking the state of a given workflow instance
Data transformation (ETL)
Reliable message processing and storage
Replication
Synchronization
Metadata repository and Management
Instance reconciliation
Schema reconciliation
Document Replication
Syndication/Aggregation
Composite applications (OBAs)
Human workflows (MOSS)
Orchestrations initiate human workflows via SharePoint adapter
Pageflows
Impersonation and Delegation
Provisioning
Identity Repository synchronization
Approval workflows
User Experience Consume focuses on how services and orchestrated processes (which may be exposed as services) are consumed by other services, applications and end-users. Any resource capable of interacting with services can be referred to as a “consumer”. Consumers may appear across the organization in several possible forms: Lightweight, browser-based applications Rich Internet applications (RIA) are browser-based applications that can address and cache local and remote resources Configurable, portal-based user experiences Applications that are installed on the local machine (such as a custom Windows application) Corporate business applications with solution-specific extensions (such as Microsoft Office with context-aware activity panes) Applications designed for mobile devices Services may act as consumers of other services Recall that the SOA model is fractal – services may be consumed by other services and service compositions may be exposed as new services. In the last couple of years a “new breed” of consumers has emerged, enabling consumers to be aggregated and consumed by additional consumers. This “new breed” of consumers is usually referred to as a “mashup”. A mashup is a set of services, websites or applications that combine content from multiple resources into a new integrated user experience. Content used by mashups is typically sourced from a third party (such as a service or website) via a public interface or API. Alternative methods of sourcing content for mashups include newsfeeds and JavaScript constructs (JSON). The recurring architectural capabilities provide us with a set of considerations for User Experience. Let’s take a quick look at some of the considerations associated with each capability for User Experience (this is by no means a complete list): Communications Forms-based service consumption Web parts Service Registry – check in / check out / search AJAX, REST Workflow and Process Human workflows (MOSS) Event brokering (CAB) Page flows Data Entities (OBA Business Data Catalog) Single view of the customer problem JSON User Experience Composite applications (OBAs) Personalization, user profiles Portals Business Intelligence Reporting Content aggregation Declarative UX Identity and Access Single Sign-On (password synchronization) User identification Role-based access (RBAC) Directory Services Password management Privacy (firewalls, encryption) Compliance
Consume focuses on how services and orchestrated processes (which may be exposed as services) are consumed by other services, applications and end-users. Any resource capable of interacting with services can be referred to as a “consumer”. Consumers may appear across the organization in several possible forms:
Recall that the SOA model is fractal – services may be consumed by other services and service compositions may be exposed as new services. In the last couple of years a “new breed” of consumers has emerged, enabling consumers to be aggregated and consumed by additional consumers. This “new breed” of consumers is usually referred to as a “mashup”. A mashup is a set of services, websites or applications that combine content from multiple resources into a new integrated user experience. Content used by mashups is typically sourced from a third party (such as a service or website) via a public interface or API. Alternative methods of sourcing content for mashups include newsfeeds and JavaScript constructs (JSON).
The recurring architectural capabilities provide us with a set of considerations for User Experience. Let’s take a quick look at some of the considerations associated with each capability for User Experience (this is by no means a complete list):
Forms-based service consumption
Web parts
Service Registry – check in / check out / search
AJAX, REST
Event brokering (CAB)
Page flows
Entities (OBA Business Data Catalog)
Single view of the customer problem
JSON
Personalization, user profiles
Portals
Business Intelligence
Reporting
Content aggregation
Declarative UX
Single Sign-On (password synchronization)
User identification
Role-based access (RBAC)
Directory Services
Password management
Privacy (firewalls, encryption)
Compliance
In this chapter we provided some useful analogies for understanding the fractal nature of SOA. Services are the fundamental building blocks of SOA, although services do not necessarily need to be web services. Ideally these services should follow the four service design tenets which describe a set of best practices for service scopes, dependencies, communications and policy-based configuration. While these tenets focus upon service design, it is important to realize that services alone are not necessarily solution architecture – Microsoft uses an abstract reference model to describe the various aspects of SOA. The abstract SOA reference model provides three fundamental concepts to help most organizations understand the role that services can play within their solution architectures:
Each aspect of the Expose / Compose / Consume abstract reference model encompasses a set of five recurring architectural capabilities: Communications, Workflow and Processes, Data, User Experience and Identity. The five architectural capabilities serves as a set of views to better understand the challenges associated with Exposing existing IT investments as services, Composing the services into business processes and Consuming these processes across the organization.
More fluffy draft on yet another fluffy topic... Again, feedback encouraged. -- Recurring Architectural
My friend John Evdemon has been writing about the different components of a SOA Reference model. Check
Hi there, in figure 8, you show MSMQ falling under the Comm. section, and SSB falling under the Data section.
Aren't they somewhat competing technologies?
More fluffy draft on yet another fluffy topic... Again, feedback encouraged. -- Recurring Architectural Capabilities As we saw earlier, the SOA architectural model is fractal. This means that a service can be used to Expose IT assets (such as a Line o