Software as a Service, or SaaS, is a term in common use today. At the most basic level, SaaS refers to software that is run and operated by a third party on its computers, rather than being run and operated by you on your own computers.
But SaaS can be a very misleading term. Some companies that have made on-premises (on-prem) software in the past have decided to “go into the cloud” and provide a SaaS offering. Often they do this by taking the same software they sell to customers and installing it on their own hardware in their own data center. They call this a “cloud” offering and call themselves a “SaaS” company.
Although this might be called a SaaS offering, it’s nothing more than basic managed hosting. The company is hosting the software for you, but you still have your own instance of the software, and your company (or a third-party vendor) needs to manage that software instance. Such offerings have all the problems, version issues, and painful upgrades associated with on-prem software solutions. This results in slower new feature development, slower bug fixing, higher costs, and more downtime.
And they have all the same scaling problems of on-prem solutions.
They may call this SaaS, but you aren’t really getting the benefits of SaaS.
Let’s take a closer look at the different types of SaaS services to understand how they can be utilized to help you scale your applications.
Comparing Managed Hosting and Different Types of SaaS
There is a lot of confusion in the industry between managed hosting and SaaS. Further, there is confusion between different types of SaaS. To help clarify, I give these definitions:
Managed hosting is when a vendor provides the hardware and provides assistance for the customer to run a specific instance of a software stack on that managed platform. The vendor may provide services that make the software installation and setup easier and reduce the complexity involved in managing the software. But managing the software is ultimately the responsibility of the customer. Capacity planning and scaling are the responsibility of the customer.
Multi-tenant SaaS is what we typically think of as “real” SaaS. This is where a vendor provides a software platform that will have many customers using the same running instance of the software platform. Customers are isolated from one another via the access controls in place within the software itself. Upgrades are usually done by the vendor transparently to customers.
Single-tenant SaaS is when a vendor provides a software platform for its customers, but a given instance of the software (running on specific computers) is dedicated to a single customer. The vendor runs multiple stacks, typically one for each customer. Customers are isolated from one another via access to the entire software instance. Upgrades are usually done by the vendor transparently to customers.
Each of these three options has its own advantages and disadvantages.
Managed hosting is the most “bare-bones” option of the three I’ve outlined here. This is when a hosting provider gives you servers (virtual or physical) to run your software on their hardware. To increase its service’s usefulness, the provider will often have packages in which it will automatically install common software packages onto its servers. This allows you to get up and running quickly and easily with a common software package without having to manage the installation of the software itself. A very common example of this is the WordPress blog content management system. Managed hosting providers will automatically install the WordPress software on the servers you have leased to get you started with building your blog or website.
However, these vendors typically do only what you, the customer, request of them. They typically do not automatically upgrade the software for you if new versions come out. Some may provide upgrade assistance, but usually only at your request and with your assistance. You typically have to worry about whether the version of software you are running has bugs or security holes in it, and deciding when and how to upgrade is your responsibility. You may not have to actually do the installation yourself, but you have many of the same worries around managing the software that you do with traditional on-prem software.
Managed hosting therefore typically requires a similar level of software management as on-prem software.
Conceptually, multi-tenant SaaS is pretty simple. Multi-tenant SaaS vendors have many customers, potentially thousands, all running on a single instance of the application software. The customers share the same running software. The data of all the customers is typically on the same databases, but each customer’s data is logically separated from other customers’ data via business, software, and security rules and requirements.
There are many advantages of such an architecture. For the vendor:
· Upgrades can automatically be applied to all customers simultaneously. New features can be rolled out quickly and continuously.
· It’s easy to reproduce customer problems “in house,” because support has available the exact same environment that the customer is using.
· System resources, such as CPU, memory, and storage, are shared and divided among the customers as needed. This means that “spiky” usage by a single customer can be amortized out across the resources available to users that are not currently using their resources.
· The vendor can apply centralized brain-trust to the running of the software. This includes key operations functions such as security, availability, and scaling. By centralizing these functions, more expertise can be applied to a larger number of customers, and overall better solutions can be created.
As the number of customers increase, the economies of scale of managing all customers at once improves. It’s much easier managing customers’ instances in a centralized way than managing the complexity of individual customer instances and systems.
There are advantages for customers too:
· No need to worry about upgrading software, applying security patches, scaling hardware, storage, and networking…the vendor always manages this for you.
· New features that are rolled out are typically available to you more quickly and more easily than in traditional software.
· Critical bugs are typically fixed faster, and fixes are rolled out to production systems faster.
· More resources (both computer resources and brain-trust) can be applied to customers’ needs, because resources can be more easily distributed and applied to a larger quantity of people.
Without a strong and reliable vendor providing the SaaS services, though, there can be disadvantages to this approach. Software can change suddenly and unexpectedly. If done at the wrong time for a given customer (such as at the end of a fiscal quarter, or during a busy shopping season), the results can be unnerving and problematic.
Overall, though, a multi-tenant SaaS platform run by a quality and responsible vendor provides significantly more advantages than disadvantages, and it is quickly becoming the norm for both consumer and enterprise customers in many businesses.
Multi-tenant SaaS does not imply that all customers are on a single stack. A multi-tenant SaaS vendor may provide multiple stacks and have many customers on each of them. This is often done for geographic reasons (EU customers on a separate stack from US customers, for instance). But this can also be done for load balancing and scaling reasons.
Single-tenant SaaS is a lesser-known and lesser-used SaaS model, but it is still used in many important areas. Single-tenant SaaS is essentially a software vendor giving an entire instance of a software stack to a single customer. The vendor typically has multiple instances of its software stack running in order to manage multiple customers.
There are advantages to single-tenant SaaS:
· Customer data is usually more physically isolated from other customer data (note that this is a reasonable assumption but is not always the case).
· Since separate customers are using isolated sets of resources, customers don’t “steal” resources from other customers.
· Each customer must have allocated sufficient resources for its own needs, and resources can’t be shared across customers.
· It is possible for single customers to run a different version of software from other customers (the advantages/disadvantages of this could be the topic of an article in and of itself).
· Just like with multi-tenant SaaS, customers do not need to worry about upgrading software…the vendor always manages this for you.
Mixing Different Types of SaaS
Multi-tenant and single-tenant SaaS are not mutually exclusive. A single vendor may have a single application that has some customers running on a multi-tenant instance, while other customers (presumably the vendor’s biggest or most critical customers) run on multiple single-tenant instances.
Typically, the difference between single-tenant SaaS and multi-tenant SaaS is transparent to the customer. While the customer may be aware and may have requested single-tenancy for contractual reasons with a vendor, the day-to-day experience of the customer usually is not impacted by this decision. In fact, some of the backend systems of a multi-tenant application may actually be single-tenant, and vice versa.
Common SaaS Characteristics
The key here, though, is that common characteristics apply to any true SaaS offering, whether single- or multi-tenant:
· They are software both provided and managed by a vendor.
· The customer does not need to worry about running and managing the software.
· Issues around software versioning are issues that the vendor deals with and the customer does not need to worry about.
· The customer can focus on just using the software…not on running the software.
These characteristics often do not apply to managed hosting.
SaaS Versus Managed Hosting
What’s the biggest difference between SaaS and managed hosting? The biggest difference is ownership and decision making. In SaaS environments (single- or multi-tenant), decisions around upgrades and bug fix installation are owned by the service provider. In a managed hosting environment, decisions around upgrades and bug fix installation are owned by the customer. In true SaaS environments, customers do not have to worry about issues around software management. In managed hosting situations, they do.
Consider the hosting of a WordPress blog. Do you have your WordPress blog hosted on wordpress.com, or do you host it on a server at a company like GoDaddy? Or do you run the software on your own server (such as an EC2 instance)? All of these models exist, and all of them can in some ways be considered “cloud.” None of these are on-prem. But not all of them are SaaS. Wordpress.com is an example of multi-tenant SaaS. The GoDaddy example could be a single-tenant SaaS or a managed hosting, depending on the capabilities they provide. The EC2 instance example is a true managed hosting example.
Each model has its advantages, as I’ve outlined in this chapter. Their suitability for a specific implementation will depend on the requirements and priorities in each individual case. For an enterprise that desires a high level of control over how the software is implemented and run—and has access to the necessary skill sets to manage it effectively—managed hosting can be a reasonable choice.
However, when people are shopping for a cloud or SaaS solution, they usually want the vendor to provide those skills and take care of issues like performance tuning, upgrades, and security. In such cases, it’s crucial to beware of solutions that look like SaaS, and to make sure you understand your needs and how they map to the capabilities of your providers.