Versioning is a critical part of software development. It gains in importance as team sizes and complexity of projects scale. Tools like Perforce, Subversion, GitHub, which attracts the most users, address this challenge. Imagine the challenge of managing version control for software automation. In the soon to come release in Cloud Application Manager, we addressed versioning challenges in a big way.
Versioning for Deployment Automation
Versioning in the context of application deployment automation is huge. For one, with a solution like Cloud Application Manager, many people in different DevOps roles across an organization need access to a given deployment configuration. As technologies evolve, so must capabilities of the applications and virtual infrastructure. To keep current environments running and stable while you improve and innovate for the future, you need to collaborate, build on top of existing configuration and at the same time preserve the old and the new.
Though features like collaboration in Cloud Application Manager help people participate in creating content, versioning is the built-in capability that helps DevOps users and organizations manage changes smoothly and track what changed, who did what. Versioning systematically controls the chaos of ever changing applications as well as the infrastructure on which they deploy.
Semantics of Versioning
In our upcoming release of box types, we evolved support for Semantic Versioning. Semantic versioning is a widely used industry standard that follows the major, minor and patch notation. These notations follow some widely accepted rules:
- Notate a given change by a MAJOR.MINOR.PATCH version number
- Increment MAJOR versions for large changes that are not backwards compatible
- Increment MINOR versions for functionality that is backwards compatible
- Increment PATCH versions for bug fixes that are backwards compatible
Supporting these standards for boxes mean that like any piece of software, the box must also follow the same standards. It means that deployed instances can consume a box version at the major, minor, and patch level of incremental change acceptable to you.
Applying Changes Via Auto Updates
In addition to semantic versioning, we introduce auto updates. When you launch an instance of a box from the service catalog, you can choose at what granularity you want to receive updates of that box. For example, a Tomcat based web application may depend on a major version of a Java box. Because you want to apply security updates and bug fixes, you subscribe the application instance to receive only patch updates.
A big advantage of auto updates is that any instance of a box by default inherits the same auto-update setting. This way, box owners can make sure all instances launched from that box get the right level of updates. Auto updates are especially useful when launching distributed applications requiring tens or hundreds of instances of the same box. It’s easy to maintain them as long as they run the same version.
Note that you can modify auto updates on individual instances to turn off or subscribe to a different granularity of updates than the box auto update setting.
We addressed another common use case for versioning in this release. Imagine you have several instances, each running a different box version. This situation happens when you have frequent box updates with instances launched at different points in time. To handle such situations, you’ll see visual notifications on instances that need updating. Using the Cloud Application Manager bulk update action, you can update several instances at once, and bring them up to a common version.
As you explore these features in the coming release, know that we have you covered. Your deployment pain-points are our focus. Together semantic versioning and auto updates give you the tools to manage application and infrastructure configuration changes for large and complex deployments, with hundred of machines and several users involved in building and maintaining them. Want to explore the power of these features in action? Contact us to learn more.
Want to Learn More About Cloud Application Manager?
Cloud Application Manager is a powerful, scalable platform for deploying applications into production across any cloud infrastructure – private, public or hosted. It provides interactive visualization to automate application provisioning, including configuration, deployment, scaling, updating and migration of applications in real-time.