The following sections explore lifecycle management of cloud resources.
In lifecycle management, roadmaps provide a timeline for the implementation of the product from start to finish. Roadmaps are also used to align the product with business goals and are designed to provide an easy way to visualize the lifecycle management of a project.
Each product may have multiple roadmaps because the visibility of the process may be different for different people. For example, executives may just need to see the “big picture,” whereas implementers need to see every detail. Customers may also have a different roadmap because they are focused on when features will be released.
Roadmaps can often be grouped into one of the following categories:
Features roadmap: Describes when features will be added to the product.
Release roadmap: Describes when each version of the product will be released.
Portfolio roadmap: Provides a collection of product lifecycles and how they are related to one another.
Strategy roadmap: Defines the overall high-level actions that must take place to meet the goals of the product during its lifecycle.
A product’s lifecycle management process must include how different versions of the product will be maintained and supported. For example, suppose the current release of a product is version 3.2. In this case, how is version 3.1 handled? Is it still supported by the organization? Is the product still being patched on a regular basis? What are the steps needed to migrate customers from 3.1 to 3.2? And, of course, these same answers (and more) need to be asked for version 3.0 and any previous version.
For new versions, decisions regarding new features and the migration process from older releases need to be made. How does the organization let the customer know about upcoming new features? What happens if a new feature is not available in the release it was originally planned for? Will some features of new versions also be implemented in older versions that are still supported (a process called backporting)?
Upgrading a system is the process of enhancing an existing system to provide more features or better performance. For example, you might opt to add more RAM to an existing system to increase available memory for an operating system.
Migrating a system is the process of moving a resource from one physical location to another. For example, instead of upgrading a system by adding more RAM, you could migrate the operating system to a new hardware platform that has more RAM than the original.
The same concepts apply in cloud computing. Operating systems are placed within virtual machines in the cloud, and these EC2 instances have underlying hardware components. In some cases, you may be able to enhance an existing virtual machine (for example, add more virtual memory), but in other cases, you might find migrating to a new virtual machine to be a better solution. For example, if you need a faster or more powerful CPU, this isn’t something that is just added to an existing virtual machine (at least not typical cloud vendor solutions).
Note that this upgrade versus migration doesn’t just apply to instances. Any cloud resource, including applications and database software, uses underlying hardware resources that may either be upgraded or require a migration to provide more power and flexibility.