Provision Platform Building Blocks as a Service
Problem
It’s often the case that standardized platforms fail to address specific user requirements. When this occurs, we face the need to package software and services bundles into the VM to instantiate custom platform stacks. This is especially useful where in-house application stacks are not supported by cloud hosting providers – for example a LAMP, J2EE, WebSphere or SAP Stacks.
Solution
This pattern is an extension of the VM Blueprinting pattern described earlier. This pattern must address the platform composition and the run-time configuration of the applications within the platform. Extend the concept of recipes to custom or standard software stacks and specifications. Enhance the template pattern to accommodate application and configuration recipes. Hierarchical blueprints with parent-child relationships help implement solutions where software stacks are distributed over many instance types to provision a complete solution.
Application
- Deploy custom application stacks with full flexibility and control such as a LAMP, SAP, J2EE or custom application
- Build where such software is not supported by PaaS vendors
- Create portable software VMs that can be hosted on private or public clouds
Impacts
- Administration of PaaS blueprints and dependencies
- Migration to standard offerings will require rework
- Potential to get locked into proprietary custom stacks
Anti-Patterns
- Provisioning is based on target environment – Dev, Test or Production stages with stacks that differ in configuration
- Each stack is manually configured at different times by different stakeholders based on vendor provided checklists or custom scripts with little formal packaging
- Non-repeatable processes, as the state of the environment is never the same due to hand-offs between deployment teams with limited knowledge sharing
- Backing out changes manually done through a restore process or by switching servers
- Gold Images: The entire stack consisting of the operating system, system software, application software etc. is installed into an installable image that is used for provisioning repeatedly
Related Patterns
- Blueprinting Pattern
- VM Factory Pattern
- Application Virtualization Pattern
- Stateless VM Pattern
References
- Puppet Labs
- Chef
- rPath
- RightScale




