So I've been tasked to develop a SaaS. Originally it was to be an internal tool, but during the design phase I was asked to make it multitenant capable (for external companies to use).
The problem
The system was asked to be built using an older codebase (ruby/rails). The language version on the server I am allowed to deploy on is already 1 year out of LTS (Long Term Support) and the framework version two years out of LTS. This is before development even started.
I asked about building using the latest versions or at least one that wasn't out of LTS, but was told this is the only server we can put it on so the versions were set. As an internal tool, I begrudgingly accepted that it is what it is.
Now after being told to add multitenant functionality, I approached it again. I was told this is the codebase and version I need to build it on.
I start diving into the existing codebase that I am to build upon. It is a simple setup with a few unwanted bits but it includes an email f2p setup and IP restriction features. The code itself is a mess. I asked the original developer and I was told this felt more like a "learn the framework, learn the language" project when it was originally created. (last update to the codebase is also 2 years ago).
note: the company has money, but I am not in a position to know any details so I can only accept it if they say "we don't have the money". -- though it would be highly suspect
The question
I need to make a convincing case to my boss why we have to use a newer version of the language/framework and preferably rebuild from scratch, regardless of my boss stating that the server mentioned is the only place we can host it.
What I have so far
- The system is employing additional security (2fa, ip restriction), so security is of concern
- using software out of LTS opens the SaaS to both known and unknown security holes that will not be patched (more impactful if I find specific examples of existing and unpatched security holes)
- our company supposedly is compliant with a number of security certifications (I cannot fathom using out of LTS frameworks as being compliant)
- the existing codebase is small enough it would be less costly to rebuild it than to spend the time refactoring
- cleaning up coding from someone learning the language/framework as they built it
- handling the differences in design between the purpose of the original code base and the current SaaS product being built
- not having to handle the learning curve of figuring out the existing code (leading to refactoring needs or perpetuating poor coding practices)
- using an old version at the start adds considerable technical debt to a product that has barely left the design stage and will only get worse before it is released (save a little now only to spend a considerable sum later)
Are there any other points (in addition or new) that I can use to make my case?
Additional aside
I am actively looking for a new job and have been interviewing. If I'm lucky I will find a good job before I get too far down this rabbit hole and I won't have to deal with these issues immediately. Though in web services this is an unfortunate and common problem, so I feel it is still worth finding an answer because I am certain this same problem will crop up sooner than later again.
(so please don't suggest "quitting" ;))