Cloud computing is the current buzz and all strategy discussions are now about when and not why. Security and decision rights are the main bottlenecks that remain, but dramatically faster processing speeds, vastly improved network connections, the exponential growth of mobile devices and big data are making it more appealing for enterprises in all domains to buy their software as a service (SaaS) rather than buy it in a box. Under the SaaS model, enterprises can easily access critical applications directly from central off-site servers; data capacity in the cloud is elastic and expands or contracts at will, so companies can scale up or ramp down applications quickly, and they spend only for what they use at the given billing cycle. System and Software upgrades are automatic, so these applications become less costly and extremely easy to maintain.
According to International Data Corporation (IDC), the worldwide market for cloud-based SaaS offerings is expected to expand by about 20 percent per year through 2018, when it could exceed the $100 billion mark.
Cloud is where the world is heading
The software providers who have already gone for some form of SaaS delivery are reporting very improved customer experiences, radically lower delivery and support costs, easy access to new markets, and hence opportunities to create new products. Adobe, for example, is now delivering its publishing and design tools in a suite of cloud-based applications, dubbed the Creative Cloud. Customers pay Adobe a monthly fee to access applications such as Illustrator and Photoshop from the central servers and use online-only features.
A shift from boxed software to cloud-based applications and services entails significant challenges and the following questions arise.
- Is the existing application architecture sufficient for supporting cloud-based delivery of products?
- Will the code base need to be refactored (a controlled technique for restructuring code incrementally) or entirely rebuilt?
- Does the software provider have the right product-development, operating, and distribution models in place for cloud-based delivery?
- Does it have the right people, with the requisite expertise in SaaS?
To answer these and other questions, the companies need emphasize six strategic principles for successfully switching to a cloud-based delivery model. Let us now list and understand these six principles
1. Iterate in increasingly viable products rather than large releases
It can take quite a lot of time (often in years) for development teams to write and release new and “complete” versions of their existing packaged offerings for the cloud— current features, bug fixes and utility additions for extended use. To take advantage of the flexibility that a cloud-based delivery model gives to a software creator. They should work on releasing minimum viable products (MVPs) to customers— smaller and more granular versions of software that are developed for testing and iterative refinement. These MVPs can be released in a matter of months rather than years. Development teams can ask for and get useful feedback from customers about how these cloud-based offerings are working (or aren’t), and they can adjust the really important elements of the software based on these inputs. Software companies can then continually test their assumptions about the functionality of their products and against the actual customer experiences. This helps a lot in step-by-step building of error free and stable software solutions.
2. Users are also your development team
Moving on logically from the first point, the development teams need to work closely with their customers early and frequently as they create new products for the cloud or rewrite the old ones. The cloud model allows companies to bring end users to the new changes more easily and also to interact with different customer segments in different ways. Meaning that while developers can run applications centrally for everyone,they can turn features on or off for specific end users, collect feedback from them, and change as required.
The cloud model also enables teams to roll out new software features in a controlled and incremental manner—testing them with, for example, 2% customers, then 5% if all everything is fine, and so on until full roll-out is achieved. Customers can provide their feedback in real time—as soon as, or even before, applications or features go live to the full base. Developers and Product managers can specifically ask customers to prioritize their needs when products are still in MVP phases, and they can co-design the full-featured version with them in real-time, creating a high brand loyalty in many cases. As development teams collect more customer information, they can assess usage patterns and fine tune their testing of certain software features and functions to decide which to include and which to drop and even add totally new ones that the users want.
3. Be ready for failure and take it with your chin up
A cloud infrastructure begets many development benefits, like the ability to grow or shrink resources for an application in real time. However, the shared nature of cloud architectures can create unique and often difficult challenges because of factors that are beyond the software developer’s control, such as hardware or network failures or network slowdowns. IT architectures and cloud-based applications must be designed to handle and work around these potential outages, but even with that said, companies should expect and tolerate some failure. This is the polar opposite to the development of “boxed” software products, where most risk-averse teams asses how complicated and costly bug fixes and system patches are to roll out and often prolong their testing cycles.
On the contrary, the cloud model comes with easier maintenance, so developers should have the freedom to release MVPs frequently, but with a solid process mechanism in place for fast fix deployments or repairs as they are called. To deal with the chance of failure, some software providers have altered their packaged products for the cloud to provide a “gracefully downgraded” customer experience—in the event of a network slowdown, like for instance, not rendering all photos or parsing other complex web-page elements—rather than a complete stoppage. Some other software companies have automated scripts added into their IT architectures that will, behind the scenes, simulate failures in the system and tailor or change parameters as needed. This way, the company can test the systems’ responses to failures that haven’t happened yet but may eventually happen in the future.
4. Go Agile in your process and methodology
Companies must understand and note the clear time-to-market differences between delivering software services in the cloud and shipping physical products to the customers. Given the accessibility and ubiquity associated with selling cloud-based offerings, they need to work with a continuous-release mind-set—as we mentioned earlier, updating their applications frequently, rather than launching packaged products once every few years. This paradigm change to agile software development, in which requirements and solutions change and evolve through effective networked partnership among self-organizing, cross-functional teams, can greatly ease software providers’ path to the cloud. Specifically, they will need to tightly integrate their R&D operations with their IT organization—an approach that is now commonly known as DevOps, which brings both groups together to optimize product design, delivery, quality assurance, and maintenance. Agile software development teams can increase their productivity by an average of 27 percent and boost the timeliness of feature releases by 30 percent.
5. Developers also Test and Verify
When an update for a piece of cloud-based software fails, an immediate response is mandated. Companies cannot wait several months to fix the problem and deliver it, as they can with packaged software; they a problem as it occurs. The providers that have successfully transitioned their packaged offerings to the cloud task their software developers, and not just their code testers, for testing and verifying products and experiences. This way, they can roll out critical fixes while releasing new features and applications. This model is efficient too: a developer can fix a bug introduced two weeks ago faster than a flaw that was there six months or two years back. Since the users are spread across multiple time-zones when you are on the cloud, this approach makes more practical sense too.
6. Equip yourself with cutting-edge capabilities
Companies must be ready to invest in the unique tools and infrastructure that will power a cloud-oriented product-development model. A DevOps model, for example, mandates the presence of an advanced, fully automated testing environment in which developers can quickly try out code changes against various subsystems before dropping a new features to users. So it goes without saying that the capabilities and hence the infrastructure need to be cutting edge to serve and survive in the cloud based SaaS model
SaaS is here, currently small but growing for sure. The six points above will help the companies to ease their transition from a box based solution to a cloud based offering. If there are any other points that you or your company have used to ease the transition into Cloud Based SaaS easier, let us know.
Note: The post is based on a McKinsey Study on the same topic.