Welcome to the new world of “expert integrated systems” and patterns. Since you are reading this blog I assume you are trying to understand expert integrated systems and determine what patterns are, along with what value they offer as compared with what is currently going on in information technology (IT) shops. IBM’s introduction of expert integrated systems is creating quite a bit of curiosity for many IT Shops that are interested in utilizing patterns to create and deploy complete hardware and software environments that are ready for use. These deployed environments can be used either by application developers for development, test and quality assurance purposes or by business users that need in-house or independent software vendor (ISV) applications (in production).
For some organizations these expert integrated systems and patterns enable and are considered cloud computing implementations. However, other organizations aren’t as interested in cloud computing as such but are focused on being able to quickly provision complete operating environments. These organizations are not as concerned necessarily with the term “cloud;” in many cases they seem to feel it’s the latest marketing buzzword, although they buy into the concepts of virtualization and self provisioning along with being interested in the ability to create, manage, and operate their infrastructures more efficiently. In both instances though, these IT organizations are interested in creating and deploying computing environments more efficiently and effectively with less system administration, and management personnel involvement and cost.
In introducing organizations and their personnel to expert integrated systems and patterns, the fundamental questions most folks ask are “what is a pattern and how do patterns help us provision environments with less system administration and system management overhead”?
To address these questions let’s step back for a minute and look at the term “patterns.” In doing this, I am one of those old fashioned folks that uses a dictionary to look up words to determine their meaning. Of course, dictionaries cannot convey meaning without taking into consideration the context the word is used in to understand its full intended meaning. And since I am old fashioned, it seems pertinent to also look up the term “patterns” in Wikipedia as well as the dictionary just to see how definitions compare. So a dictionary definition of pattern is:
pat·tern [ páttərn ]
regular form: a regular or repetitive form, order, or arrangement
design: a repeated decorative design, e.g. on fabric
plan or model: a plan or model used as a guide for making something
Synonyms: prototype, outline, model, example, blueprint, mold, sample, precedent, archetype, guide
And Wikipedia defines pattern as:
A pattern, from the French patron, is a type of theme of recurring events or objects, sometimes referred to as elements of a set of objects.
The elements of a pattern repeat in a predictable manner. Patterns can be based on a template or model which generates pattern elements, especially if the elements have enough in common for the underlying pattern to be inferred, in which case the things are said to exhibit the unique pattern.
The most basic patterns, called Tessellations, are based on repetition and periodicity. In tessellation, a single template, tile, or cell is repeated without change or modification, usually in two dimensions to form a flat patterned surface.
Other patterns, such as Penrose tiling and Pongal or Kolam patterns from India, use symmetry which is a form of finite repetition, instead of translation which can repeat to infinity. Fractal patterns also use magnification or scaling giving an effect known as self-similarity or scale invariance. Some plants, like Ferns, generate a pattern using an affine transformation which combines translation, scaling, rotation and reflection.
A different kind of pattern generator is a simple harmonic oscillator, which produces repeated movements in time.
Pattern matching is the act of checking for the presence of the constituents of a pattern, whereas the detecting for underlying patterns is referred to as pattern recognition. The question of how a pattern emerges is accomplished through the work of the scientific field of pattern formation.
Pattern recognition is more complex when templates are used to generate variants. For example, in English, sentences often follow the “N-VP” (noun – verb phrase) pattern, but some knowledge of the English language is required to detect the pattern. Computer science, ethology, and psychology are fields which study patterns.
In reading through these definitions there doesn’t appear to be a lot of commonality between the dictionary and Wikipedia definitions. However, it is readily apparent that the term “pattern” can be used in several different and potentially completely unrelated ways.
In the case of expert integrated systems, so far as context, we know that the term is being used in conjunction with an IBM product offering and that the term is probably going to be used in relation to computer technology. So we can pretty quickly narrow in on it being used to mean something different than “a regular or repetitive form, order, or arrangement” or “symmetry which is a form of finite repetition” although because of the technical jargon used both definitions sound like they could potentially apply. In spite of the jargon they don’t appear pertinent to expert integrated systems and the IBM PureApplication System.
The use of the term “pattern” is relation to expert integrated systems relates most specifically to the dictionary definition, “a plan or model used as a guide for making something”. This definition applies best in describing what “patterns” are within the PureApplication System environment. In the PureApplication Systems a pattern is used as a model and guide for deploying computing resources. In our case the pattern is a model that guides the user in laying out a plan or design for deploying hardware and software resources. The model using pattern components is laid out visually on a pallet that allows a user to drag and drop appropriate computing resources onto the pallet as needed for deploying a web environment that an application can run in. This visual modeling environment guides a user through the design and development of a computing infrastructure to meet the specific needs of each application. The process of guiding a user through visual development is where patterns and the expert integrated system concepts meet. As user drags and drops components onto the pallet, the PureApplication System validates relationships between the components and ensures the user is creating valid configurations for hardware and software deployment. Then when the user deploys the illustrated components the system can translate the visual icons into what is technically required to create and deploy the hardware and software computing infrastructure required to run the application.
The prior paragraph describes the fundamental meaning of the term “pattern” in the PureApplication System environment. Although the paragraph is relatively short there is a lot contained in it, so taking a breath and stepping back for a moment would seem to be a good thing to do to make sure we don’t just quickly read through the paragraph and feel like we now know what “patterns” are. After all that’s what this blog entry is supposed to be about – helping you understand what patterns are. Below is an example of the PureApplication System pattern visual development environment – in this case I am presenting one of three pattern types that is available for use in PureApplication System. This is a Virtual Application Pattern that provides the highest level of abstraction for designing and deploying systems. The other patterns are Virtual System and Custom; I am not going to cover them in this blog but will in future blog entries.
On the left of the pattern pallet, a catalog of assets is depicted that are available for use. The area in the middle of the screen is where selected components that have been selected are displayed – in this example a web enterprise application component has been selected along with a database. The arrow in the diagram indicates that the web application requires a connection to the database for creating, storing and accessing data from the database. The area on the right of the pallet then provides access to different attributes of the selected components in the middle of the screen that can be modified by the user. So, in this instance the pattern is of a web application that will use a database for storing and accessing information. By utilizing the “Add Policy for Application” selection button, the user can create or modify specific configuration parameters in the area on the right of the pallet. These configuration parameters are entered or modified through use of various drop down selection items, sliders and numeric entries. The window below is used to configure scaling for the application server software component. In this example a response time based scaling policy will be enabled in the deployed environment based on user response time from the application server.
In addition to validation of relationships in the visual development environment, additional characteristics of the expert integrated system capability of the PureApplication System kick in when the user selects the “Deploy” option for the system they have specified in this pallet. This tells the system to provision the required hardware and software components necessary to be able to run the application specified. In doing so, the PureApplication System allocates network, compute and storage hardware components along with virtual machine, operating system, application server, and database components required to execute the web application. These hardware and software components are created immediately along with needed systems monitoring and management software components required for life cycle monitoring and management capability of the application and environment.
The process described above; designing, configuring and deploying a complete IT virtual environment; occurs in minutes to hours. I have included the time for the visual layout and design to depict the entire process. The actual deployment when “Deploy” is selected takes place in matter of minutes and typically requires the least amount of time of the design, development and deployment overall process.
IBM has a great deal of experience and expertise in laying out best practice computing environments from working with customers around the world. Previously IBM has utilized RedBooks as a mechanism for assisting customers in laying out and setting up their computing environments. From this work with RedBooks, IBM personnel have attempted to aid customers in understanding “best practices” and how “patterns” of deployment can aid in customer success. With expert integrated systems and the patterns incorporated into the tools available on the platform, IBM is utilizing the expertise previously provided in RedBooks in an automated mechanism to aid customers in deploying systems that follow best practices. These tools also expedite the process of provisioning environments significantly and reduce the amount of manual effort required to design, develop and deploy fully operable computing environments.
When performed in a traditional IT organization this process and the functions performed in the process would require weeks or months to perform. In a typical IT shop, architects and system administrators would have to manually gather and specify the information needed for such a deployment, allocation of hardware and infrastructure resources. Administrators would then have to manually update and connect the various system components such as network, compute and storage system resources that will be used. Additional administrators would then have to install the various software required for the system such as the virtualization software, operating system, application server and database middleware. And systems management software as needed would also have to be identified, installed and configured to monitor and manage the IT environment. Advanced shops typically have developed and utilize scripts for many of the steps described. Many more traditional, less advanced shops perform each of these steps manually and configure each of the software components as they are installed by the administrator. In advanced shops these processes typically takes several weeks to a month or two. In some traditional, less advanced shops the process described will take several months. If any of the hardware, infrastructure or software components have to be procured the completion of the overall process is almost guaranteed to be months.
In summary, patterns as the dictionary definition describes can be viewed as “a plan or model used as a guide for making something”. In our case these plans and models relate to creation and deployment of fully operational and scalable virtualized IT infrastructures for running web applications. In addition, these patterns can also be applied to databases and other middleware that is needed in order for these web applications to run. Utilizing patterns rather than manual or scripted processes significantly reduces the time required to develop and deploy a fully operational virtualized environments that operate very efficiently on the computing system hardware and software of PureApplication System. So patterns provide a significant level of productivity and reduce the amount of administrative work required to create and fully provision the complete computing infrastructure required for deploying and using web applications.