How to Make Your SaaS Product Extensible
SaaS products can be customized through configuration or, by extending its UI and services. The extension kind of requirements are specific to a customer. In this case, a customer has to go through the complete devop cycle — acquire computing resource, engineering team, build a new web-server, UI and services using SaaS platform’s API. This requires a committed engineering team. According to industry surveys, 1 out of 4 customers drop out in early stages of sales due this. Of those who adopt SaaS, 88% customers feel that they are not able to fully harness the potential of the product due to the cumbersome customization process.
What can SaaS vendors do to remedy this problem?
How about that SaaS vendors provide a simple, visual and on-cloud development environment for extending SaaS products? This may still require some programming expertise but it will be limited to scripting business behavior. SaaS vendors would also provide component libraries that can be customized easily and extended using plug-ins. Such an environment will free-up customers from the hassle of acquiring compute resources, setting up software infrastructure and devop pipeline. It will also allow SaaS vendors to optimize usage of resources among several customers of the product. SalesForce Lightning validates the success and importance of such an environment. ServiceNow provides a similar product.
It is a win-win. All modern applications see more success when they operate like a platform upon which a user can build new things. In this blog post we will discuss how to achieve it.
What is the precedence?
Even in the realm of SaaS, it is not a new concept. Salesforce, the mother of SaaS, has been practicing it. Salesforce-Lightning empowers users to extend its core platform. Users are doing amazing innovations using Lightning.
Extending a product through API is another way and it is available almost in all cases. But this is a high friction solution and, impractical for small use-cases or individuals. It requires committed engineering resources.
We will discuss a simple solution below. You can call it — “Salesforce-Lightning like companion for your SaaS Product”. It still uses the product’s API but makes the rest of process very simple.
We will discuss two types of components to extend a SaaS product. Due to the lack of word, let us call the new components as product extenders. There are two types of product extenders:
1. UI Extender — A web server and environment for users to easily add new components and pages to the SaaS product’s UI.
2. Service Extender — A service that executes user’s code securely upon some external trigger. It also provides an environment for a user to upload / edit code, transparently build and deploy it.
The majority of use-cases of extending a SaaS product by end-users are UI related — adding new components or pages. A typical UI extension will entail:
1. Add few HTML files.
2. Add a CSS file.
4. Add few images / font files.
In a conventional approach, a user creates own web-server to host new content and load it within product UI (assuming that product already provides addition of links and buttons to launch new components and pages). It means that the user has to go through complete devop process — acquire compute resource, have a code repository, develop, build and deploy.
UI Extender is a component that empowers users to add HTML, CSS, JS and media files to the existing SaaS product. It lets several users do so in a multi-tenant environment without creating any conflicts or security risks. It is capable of managing multiple versions of user’s code. It also lets the user stage changes before they become available as the part of production environment. Users can choose to roll back to previous versions.
UI Extender supports the following features.
1. UI Extender is a web-server. It can exist in a different or same environment as your SaaS server.
2. It is stateless and can be clustered for high availability and scalability.
3. It provides a secure development environment for a user to edit / add code (HTML, CSS, JS, Media file).
4. It’s development environment supports a visual editor for quickly designing new components and pages. It also provides IDE like code editors.
5. It provides a prebuilt library of components so a user can build UIs quickly by customizing and extending them.
6. User edits code using a browser and the code is saved on the server.
7. UI Extender integrates with a Git repository and can push user code to it.
8. It can deploy any branch from Git.
9. It can serve code of multiple users securely based on access-token and special HTTP header.
10. If configured, it can interact with a security service to verify access to content.
The following diagram shows the UI Extender working in tandem with the SaaS product.
A Service Extender is a piece of code which runs on the server side, interacts with SaaS product’s services using API and produces some result. It runs when a trigger is received. A trigger can be in the form of a HTTP request or an asynchronous event.
Service Extender supports the following features.
1. Service Extender runs inside a container. To ensure security, a new container is used per tenant per role.
2. Service component listens on a channel (HTTP, Kafka etc). It receives event as JSON / XML.
3. Based on event, it runs some code provided by user.
4. The user code produces result, which is returned as the response to HTTP or published on the event bus.
5. Service Extender receives security credentials, context to retrieve service addresses from the environment.
6.Service Extender is stateless and can be clustered for high availability and scalability.
7. User code is integrated with the component during build step (for static binding) or it can be loaded dynamically (for languages which support dynamic binding).
8. A special server (Development Server) lets a user upload code, it transparently builds Service Extender component, deploys it. It also secures code in the Git repository.
9. In AWS environment, the Service Extender can be a Lambda.
The following diagram shows the Service Extenders interacting with the SaaS product. It also shows the development server used to build and deploy Service Extender.
The alternate approach to extend a product is to provide admin interface and let admin-user work through the configuration, specify rules etc. This approach has limitation. It works if the numbers of cases are small and simple. Otherwise it becomes more complex than the use-case itself. It is also dependent on the availability of new releases of the product.
The product extenders are much more flexible and robust. As long as product API versions are supported, new versions of the product can be deployed without breaking extenders.
If your SaaS product can act as a platform, end users / engineers/ product managers find amazing use-cases.
Extenders for On-Premise Products
Is it possible to use extenders for an on-premise product? The answer is an absolute “yes”. It requires a few changes in the proposed solutions architecture. We will cover it in a future blog.
Path Forward and Our Pitch
Our platform Trillo is a meta-platform. It can be used as a UI Extender or Service Extender. Using Trillo, you can add Salesforce-Lightning like capabilities to your product in a very short time.
You can find more info about Trillo on the web at: