As we all know that the key advantages of cloud are
- Lower TCO
- Faster adoption
- Shorter release cycles
What makes all of the above possible is the way the features & functionalities developed and deployed for customers during release upgrade. This is one of the key challenges.
Working in the space of cloud for the last couple of years, I would say that designing a feature on cloud requires more thought and control than developing the same feature in an on-premise application. I am not speaking from the standpoint of designing the functional process. A best practice is a best practice irrespective of being developed on cloud / for on premise. The key is, how to get the feature deployed without impacting the existing customers.
Unlike the case of on-premise applications, in cloud, it’s not upto the prerogative of customer to upgrade the software to next release. Upgrades will happen on the cloud clients in regular cycles and it has to be made sure that customer processes shall work before and after upgrade, whether or not they choose the new features that are available with new upgrade. So, for any feature that gets developed on cloud, the first thing, we check is whether or not this feature is going to bring in any ‘irreversible change’ to the customers. In here, the things get complicated when dealing with small scale businesses, as many at times, they will not have robust business processes in place and IT systems are just an enablement for getting their day to day work. So, a feature enhancement, which in line with best practice is something they might not want in first place, as that shall increase their work for them in system bringing in some additional controls. So, we have to think through to provide a toggle option for ON/OFF for the new feature. At the same time, we have to be careful about providing these toggle options liberally, as that shall increase the effort in terms of creating the option and deploying the option.
Also, when upgrades happen on customer systems, its often the case that the system shall be taken down for a brief period of time with customer’s consent. The features & options developed should be in such a way that they can be deployed during that window.
All in all, it's a tight rope walk between feature, effort & upgrade window. Any loose of balance anywhere, shall result in very high incidents from customers thus making all the stakeholders loose their sleep. That's something, none of us want.. Isnt it..?