...
We want to find the best way to support the Midwest species selector tool. Based on my initial investigation it’s currently hosted on one digital ocean droplet that contains the following tools.
MCCC row Row crop tool Vue.js application
MCCC row Row crop tool PHP API
MCCC MySQL data entry tool Vue.js application
MCCC MySQL data entry tool PHP API
MCCC vegetable Vegetable tool Vue.js application (on the develop server)
MCCC vegetable Vegetable tool PHP API (on the develop server)
MCCC WordPress site
MySQL database that stores data for all of the above(?)
...
Because there are so many tools on a 1GB memory server, it would be very easy for a high traffic scenario to cause downtime
Because there are so many projects all hosted on one server, it is it’s easy for bugfixes, deployments, or over utilization of any app to cause downtime for one or more of the tools. When I started looking at how the cover crop row tool is architected, it caused an outage for the MCCC WordPress site even though those tools should be logically independent.
The tech stack is somewhat outdated.
More JavaScript developers are familiar with React.js over Vue.js.
Most entry level developers don’t have PHP experience.
Reduced redundancy
...
Rebuild.
Rebuild the tool using the stack that our team is familiar with. Move each service into it’s own server. Move the DB to a managed azure instance to implement further redundancy. Setup CI/CD to handle deployments in a controlled matter.
Pros
Improve the speed of future bug fixes and maintenance.
Maintain independence between the tools and avoid unrelated downtime.
Have automated builds, deployments.
Data will be hosted on a managed instance and much less likely to be corrupted/lost.
Cons
This will likely increase the initial time needed to fix the issues.
Use existing code base
Use existing code base but split into multiple VMS. Make a copy of the current develop server (this step will cause guaranteed downtime, but the timing can be controlled) and then divorce out the tools listed above into their own servers so that they aren’t comingled. Move the DB to a managed azure instance to implement further redundancy. Then update the DNS to point to the new VMs (this step will also cause guaranteed downtime).
Pros
This will allow development of one tool to be independent of the others.
Data will be hosted on a managed instance and much less likely to be corrupted/lost.
Cons
The danger of this solution is that the develop server may not start up cleanly after making a copy. This may prolong the downtime for one or more of the above tools.
Setting up CI/CD will be difficult, deployments will still be manual.
Bug fixes and maintenance will be slower.
Make changes to the live server without divorcing out the tools. This is the most dangerous solution because at any time a change to one tool could cause an outage to one or more of the others.
Pros
May save time assuming no downtime.
Cons
Will likely cause downtime.
Very little redundancy.
The server is undersized for the amount of things on it.
Setting up CI/CD will be difficult, deployments will still be manual.
Data has little redundancy and is at risk.
Bug fixes and maintenance will be slower.