One of the biggest challenges when it comes to building tech products is scalability. In fact, the scalability of the technology is one of the key things tech investors look at when making early-stage bets.
When it comes to SaaS products, scalability is even more important. Scalability acquires a whole new meaning in a SaaS environment vis-a-vis more traditional software.
Scalability for a SaaS platform means the ability to operate efficiently and with high service quality over the entire range of configurations.
What is a SaaS product?
SaaS or Software-as-a-Service is a model in which customers get access to applications hosted by a third-party provider.
The SaaS platform is made available to customers over the internet. SaaS has been made possible by the advances in cloud computing.
Other categories of cloud computing include Infrastructure as a Service (IaaS) and Platform as a Service (PaaS).
Customers can also integrate SaaS applications with other software using APIs. In fact, many businesses write their own software tools and then integrate it with the SaaS solution. This allows them to have more customizations.
SaaS platforms cover a wide range of departments and business processes. SaaS examples exist for email, CRM (Customer Relationship Management), financial management, Human Resource Management (HRM), billing, sales management, and collaboration and productivity.
Building a Scalable SaaS Product
There are a number of things you need to keep in mind to build a SaaS product that scales over time.
Every SaaS expert has differing opinions on what the right architecture is. Yet most of them agree on one thing — a multitenant architecture is a must. While multitenant is definitely important, it’s not nearly sufficient.
Scalable SaaS architecture should also have components that are all stateless. At the same time, the data pipeline should be able to process the data using lanes. The application also needs to have service governors.
Metrics and action APIs
In order to create truly scalable products, you need to expose two kinds of APIs for every single component — metrics APIs and Action APIs. This will enable your DevOps and data science teams to be able to optimize and learn continuously.
Metrics API includes important stats for the component like processed bytes per second, top customers based on bps, input bytes per second and so on. Metrics APIs have several different uses.
- This kind of data is absolutely critical to generating insights for product improvements.
- These metrics also automate the shrinking and scaling of servers which is great for high-growth companies.
- The metrics also help analyze customer behavior and patterns that can help craft better user experience.
- You can use these metrics to alert you when there are any potential scaling problems.
- Action APIs are very useful because they can change the component behavior without you having to make changes in the code.
- With action APIs, you can create temporary workarounds when there are any major bugs or crashes. As a result, the component will keep operating even as you can work on the long-term fix.
- You can also debug the system by using action APIs to turn certain behaviors on and off.
- Action APIs also allow you to deliver a higher service level for priority customers. They also enable you to allocate complete components to such customers.
Accounting for unpredictable behavior
While you can always plan for streamlined growth, it’s equally important to plan for unpredictable behavior. Some customers end up sending data or using the service in a way that is unpredictable.
This is usually unrelated to the product itself and is more because of issues within the client’s own systems. If your SaaS platform cannot handle this unpredictable behavior, you will end up delivering poor services to all customers, not just the unpredictable ones.
Service governors are key to handling such issues. They protect other customers from unpredictable customers by identifying them and then processing their requests through different paths altogether.
You need to define policies for the service governor based on which it watches your entire service and takes action when required.
Preparing for data corruption
Data corruption is an inevitable part of any product journey, more so as you scale. This can be through human error, bugs in the software, or an issue with the system. Your SaaS service needs to be equipped to handle this and recover from it.
To do this, you need to maintain a separate data storage system where all customer data is unmodified; and can’t ever be modified.
In order to have truly immutable data, you need to use just the create and read functionality of the storage system. If your data gets corrupted for any reason, you can simply recover it from the storage system.
Ability to increase capacity on demand
A key element of scalability is the ability of your technology to increase capacity to handle increased data load.
Your servers and components should be able to expand seamlessly. If you end up having to add servers manually, you can be looking at outages, errors, and downgraded service levels.
Your application should have the ability to recognize that it needs more capacity and it should be able to add this capacity as needed. This can be accomplished by adding a provisioning service to your tech stack.
The provisioning service would make calls to your metrics API to figure out how your current load compares to your current capacity. It would then use the AWS API to spin servers if load increases. Frameworks like Ansible, Chef, or Puppet can help you build the provisioning service.
Smooth deployment of fixes and features
In order to be truly competitive, you need to have the ability to roll out patches, fixes, and releases as seamlessly as possible.
Continuous Integration and Continuous Delivery are two aspects of Agile methodology that are key to accomplishing this goal. It makes sense to build these into your development, testing, and production environments.
However, the fact of the matter is that it requires a huge amount of resources and infrastructure to build Continuous Integration and Continuous Delivery into the production environment.
In the early stages, when you’re fighting to acquire a customer base and find product-market fit, this may not always be feasible.
If you don’t have the ability to put the infrastructure in place to implement Continuous Integration and Continuous Delivery in the production environment, definitely put it in place for the development and test environments. You can then have a one-click deployment for production.
A scalable sales model for a SaaS product
While most talk of scalability centers around the tech stack, one of the key aspects of scalability is the sales model.
Unless you have a sales and pricing model that appeals to a broader customer base, it’s hard to build a good SaaS product. Some important tips when it comes to building a scalable sales model are:
- Don’t keep a very long free trial period. The length and nature of the free trial depend on the product but the key is not to go overboard.
- Lower prices are not always the best sales strategy.
- Don’t list out your most expensive package; keep it open to customization and only reveal pricing when customers contact you.
- Highlight the best package you have. Hint: it’s not the cheapest or the most expensive one, it’s usually somewhere in the middle.
- Incentivize people to go for an annual subscription with an attractive discount.
Building a scalable SaaS product requires a whole different approach when it comes to technology planning.
From architecture to load planning to smooth deployment, every aspect has its own unique requirements when you look at it from a long-term scalability point of view.
It’s very easy to ignore these aspects when you’re looking to build an MVP (Minimum Viable Product) and hit the ground running.
However, lack of scalability can hurt your SaaS company in a variety of ways — from an inability to acquire new customers and degradation of service quality to investors refusing to make a bet on your product despite believing in the market potential and your solution.
In order to avoid potential roadblocks to business growth in the future, it’s best to keep scalability in mind from Day One.
Let us know if we have missed out on any scalability points and what you think is the best to scale a SaaS product?