The most lucrative feature of SaaS-based software subscriptions is regular upgrades/updates to the software. Clients enjoy the updates to existing software as they are usually part of SaaS subscriptions contract. All the upgrades are handled by SaaS providers but handling upgrades is not a cakewalk.
Following are some of the aspects we need to consider while doing the SaaS upgrades
- Database changes- If your SaaS upgrades involve DB changes, backing up the database before upgrading is necessary. If something goes wrong during the upgrade you can always fall back to the original state by restoring data.
- Sandbox environments- Before rolling out changes directly to the production environment it’s always a good idea to give customers a Sandbox environment where they can review the changes of the new SaaS version. This is accomplished by taking production data and then running the upgrade on it. On successful execution, the client can confirm data and new upgrade changes and give go-ahead for the actual upgrade.
- Blue-green deployments: For actual migration, we might want to have a Blue-green deployment model. Your old setup remains as it is when the new upgraded version is live. With a small tweak, you can divert all production traffic to the new version and something goes wrong we can quickly fall back to the old version.
- Monitoring the upgraded deployments: The new version of SaaS deployment may have existing or completely new resources. Your upgrade path should consider adding newly created resources under the existing monitoring infrastructure. If this integration with the monitoring ecosystem is automated then it will save you a lot of time during upgrades. Read More
- IaC for upgrade process: Some of the upgrade processes may involve the creation of new resources e.g. new servers, assigning new capacity to existing servers, new infrastructure to support blue-green deployments, creating backup pipelines, etc. Having a strong IaC ecosystem will help you to address all these needs. The IaC is also going to reduce the time for upgrades considerably. Read More
Typical upgrade process might look something like below,
If you are doing deployments on cloud infrastructure all the above aspects mentioned above are somewhat easy to deal with. We have used AWS to solve these requirements during upgrades seamlessly.
Backups- AWS provides a backup mechanism to their resources eg. EBS, RDS, EFS which helps in the upgrade process to ensure we fall back to working state if needed. The disaster recovery process for some of the services in AWS is straightforward. AWS released the AWS Backup service in early 2019. This allowed us to have a centralized backup process across all AWS resources. Earlier we were taking backups for EFS using data pipelines when we switched to AWS Backup it actually resulted in annual 35,000$ savings. Always keep eye on AWS services upgrades they can give you significant boosts in performance as well as cost optimization.
Increased On-demand capacity- To support blue-green deployment you need additional resources on demand. AWS being the pioneer of cloud infrastructure can always support your growing needs. Sometimes we carry out 30-40 upgrades in a day in various AWS regions, during upgrades we create additional computation resources using IaC. This capacity demands can be ensured by requesting a ticket to AWS Support Center. You can choose the support plan based on your needs. AWS support team responds quickly and can certainly guaranty you additional capacity based on your needs if coordinated in advance.
IaC & Monitoring- Cloudformation allows you to define IaC pipelines. The cloud formation templates can quickly help you to spin up new infrastructure also gracefully decommission infrastructure. Use of IaC tools like Cloudfromation is highly encouraged while handling SaaS deployments/upgrades as they will save you a lot of time and overheads of provisioning.
Newly upgraded SaaS application requires to keep a close eye on in terms of performance and service disruption. AWS Cloudwatch supports a wide variety of metrics to monitor your infrastructure of SaaS deployments. You will get observability and operational insights of newly upgraded deployments under a single platform.
Handling SaaS upgrades is challenging but with a strong ecosystem of AWS, you can cross this path smoothly. AWS often keeps on releasing improvements and optimizations to their services. Even though you have a defined and well-iterated path for SaaS upgrades I will suggest keeping eye on AWS service upgrades and releases to figure out the scope of improvements and optimizations to your SaaS upgrade path, this could save you time and cost with a performance boost.
About the author
Dipesh works as a Solutions Architect with Excellarate and looks after the DevOps and Cloud practices. He loves working with engineering teams and is always enthusiastic to learn with them to build innovative solutions using cutting-edge technologies.