Traditional App Migration to SaaS

Traditional App Migration to SaaS

SaaS acronym stands for Software as a Service. It’s a cloud service delivery model that won its popularity by providing great income opportunities for SaaS providers and ease of access to software for subscribers. 

Often, an application, built for one particular company, is useful for other businesses too. That’s when turning a traditional app into a SaaS product is the right thing to do to earn some money by sharing your tried-out solution. Such SaaS giants as Slack and Shopify once have been started as ordinary apps used internally within one company. 

Are you curious what it takes to migrate your app to SaaS? Let’s check it out!

How to prepare for software transition to SaaS model?

Here are a few crucial aspects you need to pay attention to when getting ready for transitioning to SaaS.

From a technical perspective:

  • Review the level of security on the project. During the active development process the main attention is often shifted to the product features and functionality. 
  • Be ready for a high load. Build the architecture in a way that would allow scaling up your project whenever necessary. At the early stages, projects often work in a single node which makes their scaling not an option.
  • Choose one of the SaaS architecture patterns: single-tenant or multi-tenant. 
    • With a single-tenant approach every organization has their own separate database which provides “out-of-the-box” confidentiality. 
    • In multi-tenant SaaS data from all organizations is kept within a single database, which means that confidentiality is not granted by default and must be implemented manually. The second approach is cheaper, but it requires developers to be extra careful and attentive in order to avoid accidental data sharing between different organizations.   

From business point of view it’s necessary to understand 

  • What abilities and benefits the SaaS will provide for your future clients 
  • What is your unique sales proposition, or a distinguishing feature of the SaaS that will persuade customers to buy your product?
  • Does the problem that you are trying to solve with your SaaS actually exist, in other words, is there a demand for such a solution?

The main steps of migrating to SaaS

Since every application is unique to some extent, you may face different tasks to move it to SaaS. Here you will find the major milestones and some highlights of their implementation by Apiko for an engineering company’s management and logistics app.

  1. SaaS infrastructure should be cloud-based to provide the required scalability, cost effectiveness, and ease of support. In case your app is hosted on premises, you need to migrate its infrastructure to cloud first. 

    Here you can learn more about Infrastructure Migration to AWS Cloud: Preparation Tips and Migration Plan [Case Study].

App infrastructure migration to AWS cloud

  1. Implement SaaS support on the back end.
  • Refactor the code - modify the app code to optimize it for SaaS, while keeping its external behavior (app’s functionality) unchanged. In our case with the management and logistics app it included the following: 
    • Code refactoring for Company service to allow creation of multiple independent companies’ profiles, as initially it was working like a single entity. We also refactored all blocks which use Company service. 
    • Passing the companyId parameter to Company service, and refactoring of MongoDB queries to DB (enabled filtering by companyId)
    • Refactoring of all tests, as after all the changes mentioned above a lot of previously used tests would crash.
  • Update existing data in the database
    • Update all existing data and divide them between the corresponding entities, depending on which company they belong to. 
    • In case there is a Super Admin profile (in our case, a collection company), add this profile’s ID to all existing entities. 
    • So, after these steps are completed, collection companies contain all our clients' companies. All entities contain the company ID by which you can filter their data.
  • Change web routing (navigation): add company IDs to the corresponding URLs. Add a check if a user has access to a particular company (if they do not, redirect them to the previous page).
  1. Implement API endpoint that can be called for creating a new organization (new company)
  2. Build Global Admin panel for managing all the companies and seeing their payments statuses.
  3. Create a new landing page to feature your app as SaaS.
  4. Set up and specify features availability: SaaS may offer a few subscription plans, or different levels of users’ access to its functionality (e.g. correspondingly to the company's hierarchy).
  5. Integrate the payments.
  6. Add logging to the back end to keep track of all app code changes and their impact.

Who needs to be on a team to perform a successful SaaS migration? 

To perform a successful migration to SaaS one basically needs the same team as for any other software development project: Business Analyst (BA), front- and backend developers, Quality Assurance (QA) and DevOps engineers, Project Manager (PM). As a rule, some of the traditional app functionality gets modified to suit the SaaS model, that’s why participation of all team members during such transition is necessary.

Potential challenges and risks of app migration to SaaS

It’s necessary to pay attention to data security. 

We have chosen a multi-tenant SaaS pattern for the management and logistics app. Such SaaS architecture is easier to develop and to support, but data isolation is more complicated compared to a single-tenant approach. As a result, our main task was to prevent mixing different companies’ data.

We constantly kept in mind that the whole app code should support data isolation, and Typescript turned out to be a helpful solution. All methods have the companyID field, and Typescript doesn’t allow moving further without passing on this field. Thus, all the requests to retrieve or modify data always run taking into account companyID.

In addition, during the development of the new SaaS features it’s crucial to write tests to check if there are no data intersections between different companies. And the last but not the least part is QA.

SaaS implementation tips

Let’s summarize all written above with a few pieces of advice. 

Before getting started with SaaS implementation

  • Get clear understanding of the issue that your product solves
  • Check if there really is demand for your SaaS solution on the market
  • Make sure you have 
    • an experienced team of developers to make your product’s performance stable and reliable
    • a professional marketing team to help your SaaS reach higher positions on market

During SaaS implementation

  • Be ready to high load
  • Pay close attention to SaaS security
  • Don’t allow data intersection for different companies (clients)

If you have any questions about app migration to SaaS, or would like us to take a closer look at your project, feel free to contact us. We are eager to help your application reveal its full SaaS potential!