Software engineers now design for the cloud
By Rob Irby, Software Engineering Manager at On Center Software
Whenever cloud is mentioned, usually it is discussed in terms of the consumer’s benefits. Cloud applications allow end users access their data anywhere, collaborate more effectively, and so on. However, the cloud is seldom promoted for what it can do for an engineering organization. Gone are the troublesome, old days of trying to figure out what features are going to fit into a release. No more worrying about slipping a date and not shipping valuable features that clients want and need because of one unrelated issue or bug. Once software engineering organizations embrace the cloud, the entire paradigm shifts forever.
Continuous delivery can be described using one word – awesome! Valuable product additions can be delivered to the customer at a high rate of speed and without any dependencies on other unrelated features. This means the customers get the features they value most as quick as the engineering group can create them. Once it is coded, it goes into test, and then is released to the customers. But wait – there’s More! With continuous delivery, the product updates can target the specific infrastructure that will be changed. When updating a small portion of the application, for example a few microservices and a couple database tables, the risk of deploying the upgrade is greatly reduced. Integration testing is simplified and it is easier to track down the root cause of any new bugs. Compare that to traditional major releases where the entire application’s infrastructure would need to be updated and tested. In some cases, the regression testing alone could take several weeks.
Customer issues are also easier to address. Traditionally, the engineering team would be three months into a six-month release when, inevitably, a show stopping customer issue would arise. Now there are some hard decisions to make. Can the customer wait another three months for the fix to be included in the next release? If they can wait, there still is no guarantee that other issues won’t arise as well. The release could also take longer if the schedule slips for other, unrelated reasons. If clients need the fix now, then engineering will have to stop what they are doing and release a service pack or a hotfix which will involve a lot of upgrade testing and risk, not to mention the overhead of creating a hotfix or service pack installation. It can turn into complete chaos quickly. Once the engineering organization is releasing individual features, this problem gets much easier to solve.
The customer issue is only as difficult to solve as the issue itself. There is no need to try and fit it into a release and make the customer wait. There is no need for service pack or hotfix installers. Simply prioritize the customer issue among the other features in the backlog and if it has the highest priority, then address it first. Once it’s fixed and the cloud is updated, its back to business as usual, and most importantly every customer gets the fix as soon as it is available. This entirely changes the way a business operates. Tech Support is no longer worrying about staffing up when a major release is set to go out the door. Engineering is no longer worrying about which feature combinations can fit into a three-, six-, or 12-month release cycle. Even better, it is easier for the business to change direction as the market shifts. Is there a new customer need that has been discovered? Then just prioritize that need along with the other features and release it as it becomes available. This dramatic change in how software products are delivered, is now possible using concepts like containerization, microservices, and orchestration.
This is truly agile and this is the future of software engineering. The world will never be the same and we can all thank the cloud.