If you're starting a software company, you're probably wondering whether you should (a) distribute the software to your end-user; or (b) run the software from the cloud while providing the end user log-in credentials to remotely access the software. This is one of the existential questions plaguing software developers. Through this blog, I'll first describe how both delivery systems work, and second, I'll describe what the advantages and disadvantages are for each one.
What's On-Premises Software?
On-premises software refers to software that you sell to your end-users. Then, the end-user runs the software on their own computers. Think of how back in the day you'd go to Best Buy and buy MS Word 2003 on a CD-ROM. You'd them take that CD home, pop it into your computer's CD-ROM drive, and then you'd install it. That's on-premises software. It's software that runs on your end-user's premises.
Legalistically, the contract you make with the end-user revolves around giving the end-user the right to copy and use your software onto their own systems. These contracts will include an end-user license agreement ("EULA").
Importantly, sometimes the end-user is not your client. Sometimes you may sell multiple rights to copy and use your software to a distributor who will then distribute that right to the end-users. In that case, you'll also have a distribution agreement with your distributor that regulates its power to distribute your software.
What about Cloud-Based Services?
Cloud services are different, and there are three general variants: IaaS, PaaS, and SaaS. You may have heard them around your workplace water cooler pre-pandemic. I can assure you that these acronyms are not gibberish invented by tech people.
IaaS stands for "Infrastructure as a Service." Here, you provide your end users remote access to your infrastructure and computers. The end user would then install their software or platforms (i.e., tools) on the cloud space you provided to use your infrastructure and computers. This is beneficial in instances where the end user may not have the ability to make that up-front investment to acquire the hardware and infrastructure to run their software or platforms themselves.
PaaS stands for "Platform as a Service." Here, in addition to your infrastructure and computer, you would also provide your end users (typically developers) remote access to your tools. The end user would then use these tools to develop their own software.
Lastly, SaaS stands for "Software as a Service." Here, you provide your end users with remote access to software running off your infrastructure.
All three variants (IaaS, PaaS, and SaaS) are similar in that they're hosted on your servers and the end user accesses your infrastructure: this is the service. This contrasts on-premises software where the end user acquires a license to run your software off their own hardware.
If this all seems confusing, imagine you're renting out a garage (the infrastructure) for woodworking (the software) to your end-user:
- If you are providing Infrastructure as a Service, the garage will be unfurnished but connected to all the required utilities (i.e., water, electricity, etc.). However, the end-user may install whatever equipment they need in the garage in order to operate their own woodworking shop.
- If you're providing a Platform as a Service, that garage will also include a workbench and all the tools, such as a saw. The end-user will use the garage and your tools for woodworking.
- Lastly, if you're providing a Software as a Service, then the end-user doesn't have to do anything. Rather, they come to the garage, say what kind of woodworking they need, and you subsequently provide them with what they need.
What are the advantages and disadvantages of on-premises software or cloud-based services?
Selling a license to on-premises software is a lot like selling goods. The "deliverable" is the software. This has advantages and disadvantages. First, your business does not need to be concerned with whether your infrastructure and computer systems are constantly operating correctly—or whether they are operating at all. In addition, your business does not necessarily have to worry about ensuring the security of your end user's sensitive information because the personal information is held and processed on your end user's computers; it's generally should not be held by you. However, a disadvantage is that you have less control over when end users update their software. You may also have to worry about potential piracy where end-users could download your software and distribute it without your consent. There are, of course, ways to combat this.
As for the end-user, an advantage to on-premises software is that they purchase the software license and generally don't have to worry about subscription fees. A disadvantage is that the end-user must ensure their computers are powerful enough to run the software.
In contrast, cloud services are a service. You're not selling a good. Whether it's IaaS, PaaS, or SaaS, your "deliverable" is access: access to your infrastructure, platform, or service. Accordingly, your chief advantage is the recurring subscription fee, which could make you more profit in the long run than just selling a software license. Control is also an advantage. You control who accesses your service, when your software is updated, and you control the hardware the software runs on. The primary disadvantage is that, because you maintain the software on your end, your end-user may have to upload personal information onto your servers. Consequently, you will then have to comply with applicable data protection laws to ensure that personal information is kept safe. Compliance would likely require a data processing addendum.
The content of this article is intended to provide a general guide to the subject matter. Specialist advice should be sought about your specific circumstances.