Throughout this series of articles, we have looked at the architectural considerations and solution components that are necessary for delivering software as a service (SaaS). We have seen that upfront design is critical when building software that can be successfully used by customers with unique needs. A full-featured cloud service provider like CenturyLink Cloud offers many of the infrastructure automation and management services that makes it possible to efficiently deliver such software at scale. In this final article, we take a look at the choices that a SaaS provider needs to consider when deciding upon a support strategy for their customers.
One overarching consideration that any SaaS provider has to make is whether they plan on providing consumer-oriented, personalized service, or something with a more mass market flavor. Each approach has merit but would result in different implementations of four suggestions below.
Standardize wherever possible
One of the only ways that any software provider, SaaS or otherwise, can sell at scale is to standardize their offering and avoid per-customer customization. While everyone loves the idea of “I want it my way”, that concept quickly falls apart when the software provider is maintaining unique code bases, support instructions, and pricing.
The most successful SaaS providers focus on repeatability and avoiding one-off solutions for customers. The goal is to keep support costs as low as possible, and be able to scale the business without scaling the support staff. Providers should consider implementing a common pricing model consisting of only a handful of variations, and build the SaaS software to support user-driven customizations that don’t impact the underlying software.
Interactions with the cloud infrastructure provider should also be standardized and consistent. In the scenario used for this article series, we looked at provisioning unique server clusters for each customer. That deployment model will only work if the cloud infrastructure provider let users provision, scale, secure, update and monitor these environments in a uniform way. Imaging trying to maintain hundreds of servers clusters where each one has its own security settings and performance metrics! Providers like CenturyLink Cloud let customers define such settings at a global level and have them cascade down to each collection of servers. Likewise, updating software across a massive collection of servers can be daunting unless the cloud provider supports automated, reliable software installations that can be run on a schedule, or on demand.
Prepare the support team
In order to successfully manage a SaaS platform, one needs an efficient support staff that has a significantly higher server-to-administrator ratio than in traditional data centers. One survey shows that a single administrator can only manage 10 physical machines whereas hardware virtualization changes that ratio to 1:500+. Cloud infrastructure providers report an even higher ratio than that. What’s important to understand is that SaaS providers should be able to operate in a lean fashion, but only if the SaaS offering is one-size-fits-all (see above) and the team is well prepared.
If the SaaS software is running on top of a cloud infrastructure provider like CenturyLink Cloud, then the support staff must not only be trained in the SaaS software, but also the management of the cloud infrastructure. This means either getting training documents directly from the cloud infrastructure provider, or more likely, preparing training material that is specific to the software provider’s staff and needs. For instance, the SaaS support staff that uses the CenturyLink Cloud cloud may not need extensive training on our PaaS Platform as a Service offering if they are only leveraging infrastructure services. Likewise, if the support staff will never configure unique network segments for their customers, then the platform training can skip over that topic. Some CenturyLink Cloud customers build formal training documentation for their support staff, and yet others use more informal wiki-style repositories for FAQ and scenario walkthroughs.
A strong governance model is also key to a well-supported SaaS application. Documented procedures should exist for securing cloud servers, adding new support team members to the environment, scheduling maintenance activities, responding to performance problems, and making any changes that impact the availability or functionality of the entire platform. While not an exciting topic, governance plays a key role in SaaS platforms as all customers are sharing one environment and failing to follow procedures can result in a massive issue that impacts an entire user base.
Supporting a SaaS platform can be a 24x7 endeavor that requires additional staff, new training and a well thought out governance plan. However, the payoff can be enormous as a well-prepared support team can operate at a low cost and with high efficiency.
Understand that outages happen
One of the biggest misconceptions about cloud computing is that any application can be deployed to the cloud and it will instantly work at cloud scale and with 100% uptime. The reality is much different. A poorly architected application in an organization’s own data center will still be a poorly architected application in the cloud. While we can definitely build and deploy software in a highly available fashion, it is critical that those selling SaaS software honestly prepare their customers for the inevitable outages.
CenturyLink Cloud’s own Jared Wray has written extensively on the topic of highly available cloud systems and how to partner with a cloud infrastructure provider to maximize the uptime of an application. Applications can be “built to fail” and gracefully recover from unexpected errors, but this can be both difficult and expensive. Some of the best architected web properties in the world have experienced downtime when their underlying infrastructure provider had hiccups. Some of these web sites have disaster recovery locations set up in geographically dispersed areas and use sophisticated synchronization techniques to avoid data loss, but this is an expensive undertaking that other software providers knowingly do not do. Some software vendors accept that downtime is acceptable compared to the cost of building a 100% available system.
SaaS providers must make a conscious decision about how much uptime they will pay for. If they willingly build a solution that is susceptible to hardware or software failures, that’s ok, but it should be open discussed and represented in the service level agreement (SLA) offered to customers.
One lesson that cloud infrastructure providers have learned is that customers cannot tolerate silence in the face of an outage. At the same time, it is clear that customers laud their providers when issues are promptly communicated and explained. This is part of a broader communication strategy that defines how a software provider interacts with their customers.
Depending on whether a more personalized approach is taken or not, communication can take many forms. For large SaaS environments with hundreds or thousands of customers, it makes sense to set up customer forums where questions and feedback can be collected at a wide scale. For a smaller customer base, one could choose to have dedicated account managers who have personal interactions with each customer. Many organizations also use public-facing communication mechanisms like Twitter, status (uptime) dashboards and blogs to share information in a timely fashion.
What should be communicated to customers? Some items are obvious, such as outages or billing changes. However, customers also need to know a general release schedule so that they can plan around it. Many multi-tenant SaaS platforms have every customer on a single version of the software. This means that everyone gets the update at one time, whether they are ready or not. By sharing a release schedule that provides ample lead time for customers to digest the upcoming changes, the software provider will receive fewer panicked support calls!
While it is entirely possible to deliver fantastic software with a non-existent communication plan, we see that the software companies that actively engage their customers form long-term, loyal relationships that can survive the occasional outage or misstep.
We hope that you have enjoyed this series of articles on how to “SaaS your app.” Much more goes into it than just taking an existing software package and pushing it out to a few cloud servers. We’ve seen the importance of architecting, automating, managing and supporting your software in way that makes it both efficient and profitable. CenturyLink Cloud has extensive experience in this arena and would love to partner with you when the time comes to offer software at cloud scale.