3 ms·
First, congratulations! Having too many customers is a great problem to have. Now, you need to unpick the legacy code that makes up your current MVP and turn i
by andymurd 12y ago
First, congratulations! Having too many customers is a great problem to have.
Now, you need to unpick the legacy code that makes up your current MVP and turn it into a solid, scalable system. Recognise that this is not going to happen overnight. You should also be wary of trying to fix it with a single "big bang" solution (and be wary of any prospective CTO that might suggest that).
The good news is that all technology companies go through this when they reach a certain scale, so techniques for re-engineering legacy systems are well-known, as are techniques for managing that re-engineering. You can
Google these things, talk to experienced engineers, etc. - lots of people have war-stories.
Here's my advice:
1. Make re-engineering a process. Never stop. Welcome change. No code is sacred.
2. Split off a small piece of functionality from your app, such as formatting email or printing invoices or whatever. Write a small web-service to do just that functionality, nothing more.
3. Set up automated testing for your new web-service.
4. Set up monitoring of your new web-service.
5. Run your new web-service in parallel with your legacy system. Be able to switch back to legacy if your monitoring shows any issues.
6. Evaluate how well you executed steps 1-5. Feed changes back into your process.
- Goto 1
You can use this model with outsourced development, and switch devs after each iteration if you feel that is necessary. After a few iterations, you should be able to use several devs to build web-services in parallel.
Good luck.
Edit: formatting