Unknown macro: {next_previous_links}
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

The following governance concepts are described below.

SOA Governance

In modern enterprises, Service-Oriented Architecture (SOA) should properly "steer" its enterprise IT system. This process is called "SOA Governance". Governance is derived from the Latin term for steering. It is hard to find a concrete definition for SOA Governance, as the term heavily depends on a multitude of factors. People tend to define SOA Governance differently.

In simple terms, SOA governance is a set of processes, responsibilities and tools that reinforces good behavior and help avoid bad behaviors. It is all about control. If you design a service for a specific purpose and for a set of consumers, you will want to have assurance that it will only be used for that purpose and by that set of consumers. You also want the service to be available, performing as it was intended for, and secured. Transactions must have integrity, at least to the degree that you originally specified. Most Importantly, you need to make sure defined processes and responsibilities are followed properly. For this you need to adapt proper measurement techniques (to measure effectiveness on the actions taken) in your SOA.

SOA Governance can be divided to two distinct phases:

  • Namely design-time governance
  • Run-time governance

Design-time governance spans over the entire service development cycle. For example, let's say a requirement analyst is gathering information to create a new service. Design-time governance makes the analyst's job easier by providing all related information on the requirement. Furthermore, it avoids service duplication, providing enough information on existing services and promoting service reuse. Upon properly defining service level agreements, the service will be properly tested and documented.

Runtime governance comes into play, soon after the service is deployed. It monitors operational aspects of a service (service performance bottle necks, who is accessing more, etc.). Unlike design-time governance, most runtime governance functions are automated. Reports generated in this phase are important feedback, for the next service design and development iteration.


Registries and Repositories

To enable SOA governance, software industry responded with two different categories of tools:

  • Registries 
  • Repositories

A registry is a tool that keeps a list of services with their locations. On the other hand a repository functions as a tool that keeps information on how the services are used, how they interact, who is using the services and why they are used. These tools are considered as key enablers of SOA Governance. Usually these two technologies come together as an "Integrated" Registry-Repository, thus avoiding the need of duplicated data entry and the need to synchronize information. Additionally, it decreases the risk of inconsistencies that may exist between a registry and repository.

In a registry-repository, you can publish information on services that you already use, planning to use and those services that you need to be aware of. Information related to both internal and external services (to you/your organization) can be stored in this way.

Service reuse is the heart of SOA. Before implementing a new service, you can search in the registry-repository for existing implementations. This helps you to use an existing service either as it is or by developing a new service associating the existing service. Furthermore, registry-repositories help you discover associations among services. This helps you to get a better idea of any impacts on changing a particular service.

In SOA Governance, it is important to enforce organizational and domain specific business rules (policies) to validate artifacts before they are published on a registry-repository. Usually most of these policies can be described in (machine-readable) documents such as XML documents. Registry-repository can read such documents to interpret rules found in them to validate against artifacts as needed. Such validations can easily go beyond simple syntax validations. For example, there can be a policy enforced so that WSDL artifacts must only be using "Document/Literal" style for communication. Validation usually improves overall quality of artifacts stored in a registry-repository.

Typically, artifacts in a registry-repository undergoes lifecycle states of create, test, deploy and deprecate. A registry-repository performs the following functions:

  • Enforces policies during transitions of the states of create, test, deploy and deprecate.
  • Defines "who can access what?" of services. Access to certain services may differ depending on the user, user group or state of the service lifecycle.
  • Sends notifications to relevant users once a change to a service artifact has been made.

As more and more services are introduces and reused, it is necessary to keep track of dependencies of each service in an organization. SOA registry-repository makes life easier by in this context, keeping inter-service dependency information as relationships among service information artifacts. For example, such relationships includes but not limited to Contains, Implements, Uses, Depends, etc. A registry-repository should allow defining custom relationships to cater organization-specific requirements.

Service artifacts evolve over time due to reasons such as fulfilling new requirements, yielding to different versions of the same service. A registry-repository should provide versioning capabilities that can enable automatic version control of artifacts stored. Additionally, a registry-repository also should keep older versions of artifacts to allow users migrate smoothly from one version to another.

A SOA registry-repository also need to seamlessly integrate its services with those in other SOA deployments. In other words, a registry-repository should federate with other SOA registries-repositories using open standards, and possibly appear as a single virtual registry-repository.

To implement SOA Governance in service run-time, a SOA registry-repository should provide a software development toolkit (SDK) to develop custom registry client applications and services. In this case the registry-repository acts as a source of operational and configuration data during runtime.

In summary, a registry-repository should provide the following features:

  • Record information on services
  • Search for an existing service for reuse
  • Discover associations and dependencies of a service
  • Enforce policies throughout the service lifecycle
  • User access control
  • Automatic version control
  • An SDK for registry-repository extensibility

Governance Registry components

WSO2 Governance Registry provides three main Web based user interfaces to facilitate the features and functionality as follows. For information on accessing these Web interfaces and on the usage of them, see Running the Product and Architecture.

G-Reg Publisher

The G-Reg Publisher provides an end-user, collaborative Web interface   as shown below, for governance artifacts providers to publish artifacts, manage them, show their dependencies, and gather feedback on quality and usage of them. 

G-Reg Publisher 

G-Reg Store

The G-Reg Store p rovides an end-user, collaborative Web interface as shown below, for consumers to self-register, discover governance artifact functionality, subscribe to artifacts, evaluate them and interact with artifact publishers. 

G-Reg Store 

Management Console

The Management console is a Web-based user interface powered by JSP and AJAX as shown below.Management Console


Assets

WSO2 Governance Registry stores governance metadata and information on governance related entities. Registry resources storing this information and/or metadata are known as assets. With Service metadata, you can import most of the information which is separately stored in the WEB in to the Governance Registry, and manage them as Governance Registry Resources.

In WSO2 G-Reg, you can add common Service information through standard Service metadata formats like WSDL (Web Services Description Language) files, Policy files and schema files. You have to give the location of your WSDL, Policy or Schema file from local file system or as a URL. Governance Registry imports those information in to the Registry as resources. All the special resources will have their own Media Type, which will be useful for you to handle them conveniently.

All service assets are stored in the governance directory, based on the metadata type you import. For an example:

  • WSDLs are stored in /_system/governance/wsdls/ directory.
  • Policies are stored in /_system/governance/policies/ directory.
  • Schemas are stored in /governance/schemas/ directory.

WSO2 Governance Registry facilitates two types of assets: in-built and custom. For more information on these assets, see Adding Assets.


Categorizing assets

There are two broad categories of artifacts found in the WSO2 Governance Registry as follows. 

  • Resources:  A resource is any artifact from WSDL files to XML, Word/Excel documents, JPEG Images, etc. Every resource in the WSO2 Governance Registry becomes a center for social activity.

  • Collections: A collection is a group of resources that falls under a logical entity, and are stored within WSO2 Governance Registry. 


Publishing assets 

The WSO2 Governance Registry allows you to add services through its Web-based user interface. User can choose either to enter service details manually  or to import service information using a WSDL url. For more information see Governance Artifact Configurations.

It is also possible to validate a resource's compliance with standards such as WSDL, XSD and Web Services Interoperability (WS-I). Validation capabilities help improve the quality of resources. Validation tools are also an important aspect of policy enforcement, where you can enforce resources validation at specific points of a resource life cycle. See also Managing Properties.


Discovering assets 

The WSO2 Governance Registry offers configurations options such as tags, comments, properties, ratings and descriptions for a resource. It is important to plan the use of these configurations, to allow them help in discovering services and enabling correct SOA Governance.

Resources for service discovering tremendously help in service reuse. In fact, it is one of the major functions of a registry-repository product. The WSO2 Governance Registry provides enhanced search capabilities to facilitate search based on tags and other advanced criteria. See also Resources. 


Asset lifecycle management

Typically many resources in your Registry, such as service descriptions, should progress through a series of "lifecycle stages". For instance, a service may start off as "created", then after quality assurance has confirmed that the service works as expected should be moved to "tested" stage. Upon testing, the service can then move to a "deployed" stage at which point it is released to production. Eventually, the service will be taken down or replaced with another as it moves to a "deprecated" state. Furthermore, registry allows users to define a checklist for stage transitions.

The WSO2 Governance Registry makes using and managing state-based lifecycle easy. Out of the box, the Registry comes with a default lifecycle that implements the state transitions explained earlier. You can define your own custom lifecycles with conditional state transitions, in order to match you/your organization's very specific requirements. See also Lifecycles.


Policy management

The WSO2 Governance Registry offers user authentication and authorization capabilities over all resources stored in the Registry. Easily configurable role based user management allows define, "who can accessing what?" within the Registry. Furthermore, the Registry provides activity logs that shows user activities over resources. You can apply filters on the top of activity logs to extract customized data to suite your information needs. See also Managing Role Permissions.


Impact analysis

The Registry supports configuring of dependencies and associations for resources. It automatically detects certain dependencies when you publish a resource. For example, a WSDL might use an external XSD that can be automatically detected and imported to the Registry. In addition to dependencies, the Registry provide a way to configure associations among resources. You are free to specify the type of association such as "contains" or "uses" during association configuration. These associations help figure out the possible relationships that may exist among resources and also in analyzing the impact on changing a resource. See also Managing Dependencies and Associations.


API management


Subscriptions management


Notifications


Monitoring


Interoperability


Extensibility 

The WSO2 Governance Registry provides three extension points that provide a flexible, plug-in approach to link resources and to allow users to encode their own governance rules and policies. These include:

  • "Handlers" - To implement custom behaviors to be applied to resources
  • "Filters" - To intercept standard behaviors to make room for custom behaviors; Filters determine which Handlers are to be engaged on a resource
  • "Aspects" - To associate custom behaviors with resources; Aspects differ form handlers, in that handlers are automatically applied to a resource, whereas, aspects are needed to be invoked manually through user action (for example, by clicking a button in the user interface) 

Additionally, with the enhanced WSO2 Governance Registry API, you can embed the Registry in a runtime system (for example, in Enterprise Service Bus) and support automated run-time governance. See also Extensions.

  • No labels