domingo, 10 de mayo de 2009

Utility Services

Microsoft define a los Utility Services como servicios que "...provide generic, application-agnostic services that deal with aspects other than transporting application messages. Like Communication Services, the functionality they offer is part of the base infrastructure of an SOA and is unrelated to any application-specific logic or business process. For example, a discovery service may be used by components in a loosely coupled composite application to discover other components of the application based on some specified criteria; for example, a service being deployed into a preproduction environment may look for another service that implements a certain interface that the first service needs and that is also deployed in the preproduction environment. Examples of Utility Services include security and idEntity Services (for example, an Identity Federation Service or a Security Token Service), discovery services (such as a UDDI server), and message-transformation services."

Adicionalmente, los "...Utility Services may also be instructed or configured by a particular application on how to perform an operation on their behalf. For example, a message-transformation service may transform messages from one message schema to another message schema based on a transformation mapping that is provided by the application using the message-transformation service".


Coreografía de Servicios

"...does not rely on a central coordinator. Rather, each Web service involved in the choreography knows exactly when to execute its operations and with whom to interact. Choreography is a collaborative effort focusing on the exchange of messages in public business processes. All participants in the choreography need to be aware of the business process, operations to execute, messages to exchange, and the timing of message exchanges". Ver la siguiente figura (fuente: Oracle).

"A technique used to characterize and to compose service-oriented business collaborations based on ordered message exchanges between peer entities in order to achieve a common business goal...Choreography differs from orchestration primarily in that each party in a business collaboration describes its part in the service interaction in terms of public message exchanges that occur between the multiple parties as standard atomic or composite services, rather than as specific service-oriented business processes that a single conductor/coordinator (e.g., orchestration engine) executes"

"...This typically involves use of a standards-based choreography scripting language. An example of such a language is the Web Services Choreography Description Language [WS-CDL]..."

(fuente: OASIS

Orquestación de Servicios

La Orquestación de Servicios constituye "A technique used to compose hierarchical and self-contained service-oriented business processes that are executed and coordinated by a single agent acting in a "conductor" role...An orchestration is typically implemented using a scripting approach to compose service-oriented business processes."

" usually used in private business processes, a central process (which can be another Web service) takes control of the involved Web services and coordinates the execution of different operations on the Web services involved in the operation. The involved Web services do not "know" (and do not need to know) that they are involved in a composition process and that they are taking part in a higher-level business process. Only the central coordinator of the orchestration is aware of this goal, so the orchestration is centralized with explicit definitions of operations and the order of invocation of Web services". Ver la siguiente figura (fuente Oracle).

Servicio de función técnica

"These are services that are reusable, but that do not provide business functions; rather, they provide the technical or infrastructure functions required to support service interactions in IT systems, such as auditEvent, checkUserPassword, or checkUserAuthorization. These services can then be implemented and coordinated (routed, choreographed, and aggregated) by dedicated application and infrastructure components in the SOA architecture." (IBM)

Estos servicios tienden a ser los habilitadores de la QoS (Quality of Services) y por ende incluye a aspectos relativos a: clustering, integridad transaccional, mensajería, disponibilidad, seguridad, failover, escalabilidad, entre otros. Son servicios preimplementados por middlewares (Messaging Queue, ESB, WSM, etc.)

Servicio de función de negocio

De acuerdo con IBM, un "Business function services represent business functions that return data or perform simple calculations, but do not by themselves change the state of the business. Such services might include calculateDollarValueFromYen or getStockPrice".

De acuerdo con IBM, en este tipo de servicio se incluyen a aquellos servicios cuyo propósito radica en proveer de información relacionada con los objetos de negocio a servicios de más alto nivel. Constituyen servicios de menor de nivel de granularidad que los "servicios de proceso de negocio" y de la composición de estos con los "servicios de transacción de negocio" y de "función técnica" debe resultar posible componer u orquestar un proceso de negocio (visto en término de una caja negra como un servicio de proceso de negocio).

Servicio de transacción de negocio

De acuerdo con IBM, un "Business transaction services represent business functions that change the state of the business in some way, such as by procuring materials of services from a supplier, or by recording a new transaction on behalf of a client. Such services might include orderStock or transferFunds."

Estos constituyen los casos de servicios que intervienen en la instrumentación de un proceso de negocio y que debido a su ejecucion permiten cambiar el estado de los objetos de negocio que participan del proceso. Estos objetos de negoci adquieren forma técnica durante la instrumentación a través de clases, objetos o simplemente en las tablas de las bases de datos donde los datos de los objetos persisten en el tiempo. Podríamos considerar a estos servicios, en término de granularidad, más finos que los servicios de proceso de negocio.

Servicio de Proceso de Negocio

De acuerdo con IBM, "A business process represents a sequence of activities that accomplish a business goal. Such a process can be represented as a service. For example, the process for applying for a loan at a bank can be represented as a business process service. Some more examples of business process service are createStockOrder, reconcileAccount, renewPolicy. Business process services are likely to be composed from other services and can themselves be composed into more complex or more coarsely grained business processes".

En este caso se puede considerar un servicio a todo un proceso de negocio orquestado a partir de realizar una composición de servicios (pertenecientes a las tres otras categorías) en lo que se conoce como orquestación o coreografía (cuando se componen servicios del negocio con otros asociados, proveedores, etc.)

Diferentes Tipos de Servicios

De acuerdo con IBM, los servicios se pueden clasificar de acuerdo con los cuatro tipos siguientes:

Servicio de Proceso de Negocio. Representa una secuencia de actividades que cumplen una meta de negocio. Son servicios obtenidos a través de la composición desde otros servicios (coreografía)

Servicio de transacción de negocio. Representan funciones de negocio que pueden cambiar el estado del negocio en alguna forma.

Servicio de función de negocio. Representa funciones del negocio que por sí mismo no cambian el estado del proceso de negocio.

Servicio de función técnica. Servicios que proveen las funciones técnicas o de infraestructura requeridas para dar soporte a las interacciones de los servicios.

De acuerdo con Forrester en "Leveraging Legacy: The Fast Track To SOA" ( los servicios pueden ser clasificados en tres grandes tipos.

Business Services. Business services aim to deliver a business capability, a complete business unit of work, like “submit order” or “view customer activity.” The design of a business service fouses purely on business issues and requirements, such that one would define a single “retrieve customer” business service regardless of how many different applications are involved (e.g., some firms might have four or more customer applications).

Application Services. These deliver business functionality, but they are designed around the specific technical limitations and capabilities of a given application. Their focus is more on application integration issues than pure business requirements. For example, a firm with four different customer data stores may, for technical reasons, require dedicated “retrieve customer” services for each application. De acuerdo con Microsoft (visitado 2009) este tipo de servicio se divide en (1) Entity Services - expose and allow the manipulation of business entities -, (2) Capability Services - implement the business-level capabilities of the organization, and represent the action-centric building blocks (or "atomic verbs") that make up the organization's business processes - (3) Activity Services - implement the functional building blocks of the application (sometimes referred to as components or modules) - y (4) Process Services - compose and orchestrate entity, capability, and Activity Services to implement business processes.

Infrastructure Services. These provide technical support functions, such as authentication, authorization, logging, generalized data access, access to communication channels, and the like. For example, to retrieve customer data from an infrastructure service, a generic data access service might take as input a database name and query specification, returning the requested data without knowing the meaning of the data.

Microsoft ( define a este tipo de servicio como servicios del "Bus Services" - common facilities that do not add any explicit business value, but rather are part of the required infrastructure for the implementation of any business process in an SOA. Bus Services are typically purchased or centrally built components that serve multiple applications and, as a consequence, are typically centrally managed -. Esta categoría se divide luego en (1) Communication Services - provide message-transfer facilities such as message-routing and publish-subscribe - y los (2) Utility Services - provide capabilities unrelated to message transfer such as service-discovery and identity federation.