Since I have mentioned I work at a software company that follows the software as a service (SaaS) model, I figure I should provide a little overview of what SaaS is and where I think it is going. As small business IT professionals, we really have a lot on our plate and keeping up with the latest in technology isn’t always easy, so hopefully this overview will give you a good idea of what SaaS is and where/how it could be useful for you.
Basically, SaaS is software that is provided to you over the web that you pay for what you use (usually you pay for a certain number of user licenses, but there are a few different licensing/billing models out there). To fully understand it, we can talk about some different levels of SaaS.
The first level is really just a hosted application. In this arrangement, the software company basically installs new instances of the software you purchased that will only be used by your company. So you really have an entire server (or multiple servers if it is an n-tier application) dedicated to your usage. The provider may use hardware virtualization to reduce their costs, but as far as you know, it’s a server(s) dedicated to your use, be it virtual or physical. The provider will handle upgrades to new versions but since you are on your own hardware, you can sometimes choose to opt-out of upgrades or schedule it when it is convenient to you.
The next level that really changes anything is when the software becomes multi-tenant. It’s pretty costly for the provider to maintain separate hardware for each client, even if they are virtual servers, so the next obvious step is to host multiple clients on the same hardware. That is what multi-tenant means. So now your data and the data of other clients are all hosted from the same server but separated logically. The data all lives in the same database tables, but the application separates the data out using foreign key constraints. It’s fairly easy to tell if a provider has made this jump or not because the deployment time for a new client drastically reduces once this jump is made. In this model, new clients can be setup very quickly as no new hardware needs to be deployed. Access for a new client can usually be enabled in a matter of minutes. This doesn’t necessarily mean it will be completely usable in a matter of minutes as it would not contain any customizations you require at that point, but the access to a generic instance is very quick to setup.
The only real step left isn’t really that different from the last step. In this final step, the application must be scalable. This really means that it should be fairly easy to increase the amount of transactions the system can handle without the end users noticing anything has changed. This is achieved through a mutli-tier architecture design. Pretty much any application that was created to be a SaaS application is going to be designed in this way from the start, so in many cases, applications will acheive this and the previous step at the same time. A very common architecture would be a layer for the data, which would be a database server. The scalability of this could be achieved in a few ways. The provider could use clustering technology to increase the size and power of a single database server, or they could distribute the data across multiple databases and add new database servers as needed. In that case, one client is usually (but not necessarily) kept in one single database and the clients are simply spread across the different servers. You would then also have an application server which handles all the business logic and talks to the database server. This would be scalable by the ability to add additional application servers and use network load balancing to spread the load across the servers. And finally, the last piece to the most common architecture would be the presentation layer. This would be the web servers which talk to the application servers. So as you can see, there are many ways in which this sort of design can be expanded and the clients may not even know.
So what advantage does SaaS offer for a small business? Well, the answer is it can offer a lot. Hosting applications on site is a very expensive operation. You have to buy servers, you have to have room to store the servers in a controlled environment, you have to maintain the servers, and that’s just the hardware costs. Now, for the software cost, you have to either buy or develop the software, install and configure it, maintain it and install subsequent updates. All of this takes time and requires certain skills and experiences. SaaS gives you the ability to push all of these tasks off onto the software provider. Sure, your data is hosted at another location and you need to consider this risk and ensure the provider you select has proper security controls in place for your data. But the cost savings that can be had are great. The easiest and biggest bang for the buck you will find with these applications are the processes that every business has to perform such as payroll. These are fairly common processes and thus it is very easy for software companies to provide SaaS solutions that will offer a few customization points that can satisfy a large number of users. The more custom a process is to your organization, the harder it will be to find a SaaS application that will satisfy your needs. However, you also need to consider, is this process custom because it has to be, or custom just because that’s the way we’ve always done it. If it’s simply custom because that’s how it’s always been done, you may be able to reap good benefits and some great best practices by switching to a standardized SaaS application.