11
6 Comments

How to update old SaaS product

Hello everyone!

I have an old Saas Product, Simplybill that has been going for a long time (Maybe 2009 when I did the first version!).
It's always been a part-time thing and I'm no good at marketing so it's just ticked along with a small number of subscribers.
As you can see, it could do with a refresh and to be honest, I'd love to update the tech stack (PHP/MySQL). It's not good on mobile, there's better ways of doing things, the data structure isn't ideal, it's integrated with PayPal for subscriptions etc. etc.
But, I'm stuck to know what to do - the people that do use it are very happy with it and it does exactly what they need.. and some of them have been using it for 10+ years so they have a lot of data.
I don't feel like I can just replace it, and even then, migrating the data wouldn't be easy. I've thought about keeping it going on a related URL for those that use it, but would ideally like to make some use of the fact that it's been around a long time and has some Google history.
Just wondering if anyone has any ideas of how to proceed!
Thanks!

on July 25, 2022
  1. 2

    Sounds like you have a great excuse to build an entirely new version with your favorite modern tech stack!

    Leave the existing users with the current product, and do the bare minimum to keep it running. Focus on selling the new one to new users.

    By building a new version, you can go as fast or slow as you like and not worry about breaking it for existing users.

  2. 1

    the people that do use it are very happy with it and it does exactly what they need.. and some of them have been using it for 10+ years so they have a lot of data.

    I'm not sure if there's a practical reason why you'd like to update it. Isn't it better to focus on getting a few more paying users instead?

  3. 1

    It's possible to update it without downtime, I've done the same thing several times for my clients.

    I managed a switch of a 1TB database from MySQL to Postgres and also from MongoDB to Postgres in production without downtimes. Same thing switching an inefficient microservice architecture to a modular monolitic, then an big old PHP application to a Python one still in production without downtimes. I done that in a fraction of the time required by rewriting everything from scratch.

    These are the rules that I follow:

    • Don't update or migrate things just for the sake of migration. Example: avoid cosmetic changes because often don't give any value to the customer and asks changes on the backend too. Avoid switching to a different DB or framework just for the sake of new shining tech.
    • Update only things that add immediate value to the users or that will be deprecated soon. Make a priority list based on impact and urgency. Examples: PHP end of life versions, PayPal's deprecated APIs.
    • Start with simple refactors that prepares for the bigger ones. Alert: don't break the first rule.
    • One and only one change at a time. Use atomic commits like changing a class at a time. Avoid extensive changes that requires more than half day.
    • Commits must be always stable and put in production when ready.

    Techniques:

    • Abstract then replace: use a feature flag to switch from one class/function implementation to the updated one. This is used when changing single classes or functions.
    • 5 steps for changing the DB schema or replacing the DB entirely. Example migrating a table, each step requires at least a commit and a publication into production: 1) make a single change on the DB like adding the new table; 2) update the code like using the old table and the new table at the same time; 3) copy the old data from the old table to the new table; 4) switch the code to the updated code only like removing the old code; 5) remove the old table.
    • Refactor by entanglement: build a second application and use redirects replacing all the old endpoints one at a time. This is used when changing the entire language.
  4. 1

    I would start with small steps.

    1. Only change the css to make sure it works on all platforms
    2. Let existing users continue old platform but create new frontend for new users.
    3. Rewrite backend in whatever new tech you want(not sure why you want to do that php/mysql is fine) but open it only for new customers while maintaining old system.
    4. Start by switching few existing customers to new platform get their feedback make some changes and if everything goes fine switch everyone else.
    5. Cloes the previous site.
    1. 1

      Hey - thanks for this.
      Yeah, those are good thoughts that I've run through in my head as well. Updating CSS is easiest option in the short term and least disruptive to existing users.
      PHP/MySQL is fine, you're right - it's more the structure of the data to be honest.
      It's the switching that'll be difficult, if I did change the database, and the fact that I'd need to go slow to make sure it was migrated properly, meaning significant downtime for existing users as I don't get loads of time to work on it.
      I'm basically very cautious of disrupting existing users at the expense of not having the best offering for new users!

      1. 1

        "I'm basically very cautious of disrupting existing users at the expense of not having the best offering for new users!"
        Thats the right approach. One more option is to sell it if you are not too attached to the product.