Understanding Service Deployments

Overview of Service Deployments

A service deployment is a configuration of a collection of SAS Foundation Services that specifies the data that is necessary to instantiate the services, as well as dependencies on other services. You create service deployments for applications that deploy or access the services. You can store the service deployment configuration in the following locations:
SAS Metadata Repository
You can use the Foundation Services Manager plug-in (of SAS Management Console) to administer service deployment metadata that is stored in a SAS Metadata Repository. The SAS Metadata Server controls access to the metadata.
XML file
You can export service deployment metadata from the SAS Metadata Server to an XML file. You can then use the XML file to import service deployment metadata into another SAS Metadata Repository. If you use an XML file to store service deployment metadata, then there is no administration or access control for the metadata in the XML file.
container deployment file:
You can export service deployment metadata from the SAS Metadata Repository to a container deployment file. You can then deploy the SAS Foundation Services configuration in a Spring Framework container.
Note: It is recommended that you store the service deployment metadata on a SAS Metadata Repository. Storing the service deployment metadata in a SAS Metadata Repository enables it to be updated and queried from one centralized location.
To enable your application to deploy and access the foundation services, you can create local or remote service deployments:
local service deployment
supports exclusive access to a set of services deployed within a single Java Virtual Machine (JVM). Use a local service deployment when you want your application to have its own exclusive set of foundation services.
remote service deployment
supports shared access to a set of services that are deployed within a single JVM, but are available to other JVM processes. Use a remote service deployment when you want to share a foundation service deployment among multiple applications. When you create services for remote service deployments, you must specify that the services will be accessed remotely. In order to allow remote access to the services, you must also create a service registry and associate named services with the named components for the remote services.
A service deployment contains:
service deployment groups
When you create service deployments (local or remote), you can also create groups within the service deployment in order to organize services within a deployment hierarchy.
services and service initialization data
Within each service deployment group, you must define the services for that group. Service definitions contain the following information:
service types (interfaces)
designate which service interfaces are implemented by the service. The Discovery Service is locates services according to their service interfaces. For example, if you want to locate a service that implements a Logging Service interface, have the Discovery Service search for a service that implements com.sas.services.logging.LoggingServiceInterface.
Note: All SAS Foundation Services (including local services) implement the Remote Service interface.
service configuration
specifies the Java class that is used to create the service, the service's optional configuration data, and the service's configuration user interface. The service configuration user interface defines the Java class used by the Foundation Services Manager to configure the service's configuration details.
service dependencies
specify other services on which the service depends. When they are deployed, foundation services might depend on the availability of one or more other foundation services. When you define a service, you must specify the other services on which that service depends. For example, the Authentication Service uses the Logging Service. Therefore, when you define the Authentication Service in a service deployment, you must specify the Logging Service as a dependency.
service names (for remote access only)
specify named services for remote access. if a foundation service is to be made available for remote clients, you must enable the service for remote access and define named services (service names) that specify the service's name bindings to one or more service registries.
consumers (application configurations)
group the resources that are associated with a specific application. If several applications share a single service configuration, then you can group the resources in your service configurations by defining consumers. Consumers enable you to install and uninstall the specific parts of a service configuration that are associated with a specific application. For example, if your Logging Service configuration contains a renderer that is specific to SAS Web Report Studio and you uninstall SAS Web Report Studio, then the consumer definition can be used to remove that specific renderer while leaving the rest of the Logging Service configuration intact.
authorization permissions
enable you to specify which user or group identities can perform which actions on a particular resource.
Note: If a service depends on other services, then you must define those services before defining the service that depends on them. For details about service dependencies and order of definition, see Service Dependencies.
service registries and associated named services (remote service deployments only)
To enable services for remote access, you must define a service registry to use in locating remote services. (A service registry is a searchable registry of service descriptions that is used to register named service bindings). You must then register the services with the service registry by creating or associating named services that define how each service is to be used within the context of the Discovery Service.
To understand where service deployments are defined, see Understanding Service Deployment Configuration.

Service Dependencies

If a service has a dependency on another service, you must first create the service on which it depends. The following table shows the service dependencies and the relative order in which you must define the services.
Service Dependencies Table
Service
Service Dependencies
Logging Service
 
Authentication Service
Discovery Service
Information Service
Logging Service
User Service
Logging Service
Authentication Service
Information Service
Session Service
Authentication Service
Logging Service
Information Service
User Service
Event Broker Service
Logging Service
Authentication Service
Information Service
User Service
Session Service
Stored Process Service
Logging Service