SOA Adoption Planning
It is during this initial stage that foundational planning decisions
are made. These decisions will shape the entire project, which is why
this is considered a critical stage that may require separately
allocated funding and time in order to carry out significant studies
required to assess and determine a range of factors, including:
- scope of planned service inventory and the ultimate target state
- milestones representing intermediate target states
- timeline for the completion of milestones and the overall adoption effort
- available funding and suitable funding model
- governance system
- management system
- methodology
- risk assessment
Additionally, prerequisite requirements need to be defined in order
to establish criteria used to determine the overall viability of the SOA
adoption. The basis of these requirements typically originate with the
four pillars of service-orientation described in the SOA Planning
Section of this Website.
Service Inventory Analysis
A service inventory represents a collection of independently
standardized, owned, and governed services. The scope of a service
inventory is expected to be meaningfully "cross-silo," which generally
implies that it encompasses multiple business processes or operational
areas within an organization.
Service-Oriented Analysis (Service Modeling)
Service-Oriented Analysis represents one of the early stages in an
SOA initiative and the first phase in the service delivery cycle. It is a
process that begins with preparatory information gathering steps that
are completed in support of a service modeling a sub-process that
results in the creation of conceptual service candidates, service
capability candidates, and service composition candidates
The Service-Oriented Analysis process is commonly carried out
iteratively, once for each business process. Typically, the delivery of a
service inventory determines a scope that represents a meaningful
domain of the enterprise, or the enterprise as a whole. All iterations
of a Service-Oriented Analysis then pertain to that scope, with each
iteration contributing to the service inventory blueprint.
A key success factor of the Service-Oriented Analysis process is the
hands-on collaboration of both Business Analysts and Technology
Architects. The former group is especially involved in the definition of
service candidates within a business-centric functional context because
they understand the business processes used as input for the analysis
and because service-orientation aims to align business and IT more
closely.
Service-Oriented Design (Service Contract)
The Service-Oriented Design phase represents a service delivery
lifecycle stage dedicated to producing service contracts in support of
the well-established "contract-first" approach to software development. The typical starting point for the Service-Oriented Design process is
a service candidate that was produced as a result of completing all
required iterations of the Service-Oriented Analysis process (Figure).
Service-Oriented Design subjects this service candidate to additional
considerations that shape it into a technical service contract in
alignment with other service contracts being produced for the same
service inventory. Different approaches are used during this stage for
the design of REST services, as these types of services share a common
universal contract.
As a precursor to the Service Logic Design stage, Service-Oriented
Design is comprised of a process that steps Service Architects through a
series of considerations to ensure that the service contract being
produced fulfills business requirements while representing a normalized
functional context that further adheres to service-orientation
principles. Part of this process further includes the authoring of the SLA, which
may be especially of significance for cloud-based services being
offered to a broader consumer base via the SaaS cloud delivery model.
Service Logic Design
The Service-Oriented Design phase represents a service delivery
lifecycle stage dedicated to producing service contracts in support of
the well-established "contract-first" approach to software development.
The typical starting point for the Service-Oriented Design process is
a service candidate that was produced as a result of completing all
required iterations of the Service-Oriented Analysis process (Figure 1).
Service-Oriented Design subjects this service candidate to additional
considerations that shape it into a technical service contract in
alignment with other service contracts being produced for the same
service inventory. Different approaches are used during this stage for
the design of REST services, as these types of services share a common
universal contract.
As a precursor to the Service Logic Design stage, Service-Oriented
Design is comprised of a process that steps Service Architects through a
series of considerations to ensure that the service contract being
produced fulfills business requirements while representing a normalized
functional context that further adheres to service-orientation
principles.
Part of this process further includes the authoring of the SLA, which
may be especially of significance for cloud-based services being
offered to a broader consumer base via the SaaS cloud delivery model.
Service Development
After all design specifications have been completed, the actual
programming of the service can begin. Because the service architecture
will already have been well-defined as a result of the previous stages
and the involvement of custom design standards, service developers will
generally have clear direction as to how to build the various parts of
the service architecture.
For organizations employing the PaaS cloud delivery model, the
service development platform itself may be offered by a ready-made
environment hosted by virtual servers and geared toward the development
and maintenance of cloud-based services and solutions.
Service Testing
Services need to undergo the same types of testing and quality
assurance cycles as traditional custom-developed applications. However,
in addition, there are new requirements that introduce the need for
additional testing methods and effort.
For example, to support the
realization of the Service Composability principle, newly delivered
services need to be tested individually and as part of service
compositions. Agnostic services that provide reusable logic especially
require rigorous testing to ensure that they are ready for repeated
usage (both concurrently as part of the same service compositions and by
different service compositions).
Below are examples of common Service Testing considerations:
- What types of service consumers could potentially access a service?
- Will the service need to be deployed in a cloud environment?
- What types of exception conditions and security threats could a service be potentially subjected to?
- Are there any security considerations specific to public clouds that need to be taken into account?
- How well do service contract documents communicate the functional scope and capabilities of a service?
- Are there SLA guarantees that need to be tested and verified?
- How easily can the service be composed and recomposed?
- Can the service be moved between on-premise and cloud environments?
- How easily can the service be discovered?
- Is compliance with any industry standards or profiles (such as WS-I profiles) required?
- If cloud deployed, are there proprietary characteristics being
imposed by the cloud provider that are not compatible with on-premise
service characteristics?
- How effective are the validation rules within the service contract and within the service logic?
- Have all possible service activities and service compositions been mapped out?
- For service compositions that span on-premise and cloud environments, is the performance and behavior consistent and reliable?
Because services are positioned as IT assets with runtime usage
requirements comparable to commercial software products, similar quality
assurance processes are generally required.
Service Deployment and Maintenance
Service deployment represents the actual implementation of a service
into the production environment. This stage can involve numerous
inter-dependent parts of the underlying service architecture and
supporting infrastructure, such as:
- distributed components
- Web service contract documents
- middleware (such as ESB and orchestration platforms)
- cloud service implementation considerations
- cloud-based IT resources encompassed by an on-premise or cloud-based service
- custom service agents and intermediaries
- system agents and processors
- cloud-based service agents, such as automated scaling listeners and pay-for-use monitors
- on-demand and dynamic scaling and billing configurations
- proprietary runtime platform extensions
- administration and monitoring products
Service maintenance refers to upgrades or changes that need to be
made to the deployment environment, either as part of the initial
implementation or subsequently. It does not pertain to changes that need
to be made to the service contract or the service logic, nor does it
relate to any changes that need to be made as part of the environment
that would constitute a new version of the service.
Service Usage and Monitoring
The on-going monitoring of the services generates metrics that are necessary to measure service usage
for maintenance (such as scalability, reliability, performance etc.),
as well as for business assessment reasons (such as when calculating
cost of ownership and ROI).
Special considerations regarding this stage apply to cloud-based services, such as:
- the cloud service may be hosted by virtualized IT resources that
are further hosted by physical IT resources shared by multiple cloud
consumer organizations
- the cloud service usage may be monitored not only for performance,
but also for billing purposes when its implementation is based on a
per-usage fee license
- the elasticity of the cloud service may be configured to allow for
limited or unlimited scalability, thereby increasing the range of
behavior (and changing its usage thresholds) when compared to an
on-premise implementation
Service monitoring is required for various service governance considerations.
Service Discovery
The primary goal of Service Discovery process is
to identify one or more existing agnostic services, such as utility or
entity services, within a given service inventory that can fulfill
generic requirements for whatever business process the project team is
tasked with automating.
The primary mechanism involved in performing Service Discovery is a
service registry, which contains relevant metadata about available and
upcoming services as well as pointers to the corresponding service
contract documents that can include SLAs. The communications quality of
the metadata and service contract documents play a significant role in
how successful this process can be carried out. This is why one of the
eight service-orientation principles, the Service Discoverability principle, is dedicated solely to ensuring that information published about services is highly interpretable and discoverable.
Service Lifecycle,Versioning and Retirement
After a service has been implemented and used in production
environments, the need may arise to make changes to the existing service
logic or to increase the functional scope of the service. In cases like
this, a new version of the service logic and/or the service contract
will likely need to be introduced. To ensure that the versioning of a
service can be carried out with minimal impact and disruption to service
consumers that have already formed dependencies on the service, a
formal service versioning process needs to be in place.
There are different versioning strategies, each of which introduces
its own set of rules and priorities when it comes to managing the
backwards and forwards compatibilities of services.
The service versioning stage is associated with SOA governance
because it can be a recurring and on-going part of the overall service
life-cycle. Governance approaches that dictate how service versioning is
to be carried out will have a significant influence on how a given
service will evolve over time. Because this stage also encompasses the
termination or retirement of a service, these influences can further
factor into the service's overall lifespan.