IBM PureApplication System provides a framework that enables designers to create reusable assets that can accelerate the development of application patterns and ensure that architectural standards are consistently implemented across deployments. Assets can represent infrastructure components such as databases, user registries, messaging engines, and enterprise applications. When combined, assets can form application pattern templates that can be used to define standard architectural patterns for applications across the enterprise.
A catalog of reusable components and templates can decrease the cost of bringing new applications to market and ensure that organizational standards are observed.
Defining reusable components
Figure 1 and the list that follows show how assets configured for a specific purpose become components that you can combine into templates, and then deployable patterns.
Figure 1. How assets become deployable application patterns
- Assets. Assets are provided with the PureApplication System as the basic building blocks for an application pattern. They are used when building virtual application patterns and are designed to connect to existing enterprise resources such as databases, messaging engines, and user registries. You must configure assets for the specific resource you're connected to.
- Reusable components. These assets are configured by a domain expert to connect to a specific enterprise resource. Reusable components are saved to a catalog and available for reuse. You can add them directly to application patterns or templates without any further configuration.
- Virtual application template. These templates consist of assets and reusable components that have been wired together, representing a commonly used pattern. Configuration details that are common to all instances in which the template will be used are provided. The templates reside in the catalog and are available for reuse.
- Virtual application pattern. Patterns consist of assets and components that have been wired together and completely configured. These patterns are ready to deploy.
User roles for reusable components
The PureApplication System provides a security model that controls who can add new content to the catalog of reusable components and who can access the components. This model allows organizations to control the visibility and use of cataloged items. For example, separate user registries might exist for internal and external facing applications. Permissions can be set so that pattern developers responsible for building internal applications can access only the internal registry component, and pattern developers who build external-facing applications have access only to the external user registry component.
Adding content to the catalog
Only users with "Create new catalog content" permission are able to add reusable components and pattern templates to the PureApplication System catalog. After a component has been added to the catalog, the owner must add users or groups to the access control list (ACL) before other users can use the component.
Accessing catalog content
Any user granted access to an item in the catalog can implement the component. In the case of a reusable component, the user can add the component to an application pattern or application template. Access to application templates allows pattern creators to select a template from the catalog and use it as a starting point when creating new application patterns.
The value of reusable components
Knowledge of how to configure connectivity to enterprise resources is typically held by domain experts, who need to be involved each time a new connection is required. The PureApplication System provides a facility for domain experts to capture their knowledge into reusable components and make those components available in a catalog for reuse. In practice, the configuration details that are consistent across the enterprise are captured in the component, and details unique to each application are left to be defined when the application is added to the pattern.
A payroll application and a human resources (HR) application both connect to a corporate user registry. The user registry component is common to both applications, so it is beneficial to have the domain expert configure a standard user registry component and save it to the catalog as a reusable component. Both the Payroll and HR application patterns can implement the user registry reusable component. The component is preconfigured with the host name of the user registry, because that is consistent across the enterprise. However, the payroll application has a security role named "accountants", and the HR application has a security role named "partners". These application-specific configuration details are left to the pattern developer to define, as he or she customizes the pattern for each application.
The reusable component accelerates development by providing the pattern developer, who has no knowledge of how to connect to the user registry, the ability to leverage the domain expert's knowledge of the enterprise system. The pattern developer is required to provide only details specific to his or her application.
In this manner, reusable components accelerate pattern development, reduce the potential for human error, and enforce consistent interaction with enterprise resources.
The value of application templates
When designing a virtual application pattern, it is helpful to think about how a pattern can support many applications. A virtual application template, in turn, can support many patterns. By taking the template approach, pattern developers realize a greater degree of reuse.
The value of reusable components is described in an earlier section. Combining components to build application templates increases their use and extends the concept of reuse to the level of application patterns.
A payroll application and an HR application both connect to a corporate user registry and database cluster. Architecturally, they follow the same pattern. The developer responsible for implementing the payroll application can select the appropriate application template from the catalog and add the payroll application. The template was built using reusable components, so it is already configured to connect to the required enterprise resources. The developer needs to provide only configuration details specific to the application; the template defines how the resources interact.
The application template accelerates development by providing the developer with a pattern that encapsulates the complexities of interacting with enterprise resources, allowing the developer to rapidly deploy new application patterns without having to involve domain experts.
Implementing application pattern templates provides the ability to standardize application architecture across deployments. Standardization makes it possible to control how new application patterns are built and prevent a scenario in which many patterns are created to meet similar requirements but are implemented in different ways.
Example scenario: Defining a corporate user registry
An organization has a single user registry that is referred to when authenticating employees to corporate web applications. The suggested practice is to create a reusable component that encapsulates the configuration details required to connect to and communicate with the user registry. A domain expert starts with one of the standard user registry assets, provides the appropriate configuration details, and saves it to a catalog of reusable components. From the catalog of assets, it can be shared with other users and included in future application patterns.
This approach has the following advantages:
- It provides a consistent configuration and method for connecting to the corporate user registry.
- It eliminates the potential for misconfiguration when building future application patterns.
- It accelerates the rate at which future application patterns can be created by providing preconfigured components.
Example scenario: Defining a standard web application template
An organization typically has a number of web applications that follow the same architectural pattern. One example is an enterprise application that is hosted on an application server and connects to a user registry for authentication and a database for application data. This common pattern, shown in Figure 2, can be repeated in applications across the organization.
Figure 2. A common application pattern
To ensure architectural consistency across application deployments, the PureApplication System provides the ability to create application templates. The templates describe how components of the application are connected and define common configuration parameters while leaving instance-specific information available for configuration by the template's consumer (see Figure 3).
Figure 3. An application template for the common pattern
Drilling down into the database component shows how the reusable component might be configured (see Figure 4). The connection details are consistent across all implementations, so they are defined in the component. The name of the database on the server is unique to every application that uses the component, so this parameter is left for configuration when the template is implemented.
Figure 4. Details of the database component
This approach allows coarse-grained configuration details that apply to all applications of a given type to be defined at an organizational level while leaving details that are unique to individual applications available for configuration when the template is reused.
Reusable components provide a method by which domain experts can capture their knowledge of an enterprise system into reusable components that can be easily consumed by users creating new application patterns. Application templates are used to predefine a set of components and their configuration, which can then be used to standardize the creation of application patterns. Through the implementation of these reusable assets, organizations can accelerate the development of new application patterns and define standards that can drive architectural consistency across application deployments.
- Find technical resources for PureApplication System on developerWorks.
- Learn some best practices and tips for developing virtual application and virtual system patterns in this article, "Develop patterns for IBM PureApplication System."
- Access solutions from IBM and IBM Business Partners, updates to systems and solutions, and expertise at IBM PureSystems Centre.
- In the developerWorks cloud developer resources, discover and share knowledge and experience of application and services developers building their projects for cloud deployment.
- Follow developerWorks on Twitter.
- Watch developerWorks demos ranging from product installation and setup demos for beginners to advanced functionality for experienced developers.
Get products and technologies
- Download the IBM Virtual Pattern Kit for Developers to leverage or extend IBM patterns locally on your own system.
- Evaluate IBM products in the way that suits you best: Download a product trial, try a product online, use a product in a cloud environment, or spend a few hours in the SOA Sandbox learning how to implement service-oriented architecture efficiently.
- Get involved in the developerWorks community. Connect with other developerWorks users while exploring the developer-driven blogs, forums, groups, and wikis.
Dig deeper into Cloud computing on developerWorks
Experiment with new directions in software development.
Complete cloud software, infrastructure, and platform knowledge.
Software development in the cloud. Register today and get free private projects through 2014.
Evaluate IBM software and solutions, and transform challenges into opportunities.