Existing PetBattle Architecture
The initial PetBattle architecture was pretty basic and revolved around deploying application components running in a single virtual machine (VM). The initial architecture had three major components: a JavaScript frontend; a Java-based backend, providing an API and a database; and a single instance of MongoDB. Nothing here was too exciting or complex but hidden inside was a minefield of technical debt and poor implementation that caused all sorts of problems when the site usage took off.
The issues with this architecture seemed to include:
- A monolith—Everything had to be deployed and scaled as one unit, there were no independent moving parts.
- Authentication and access control were non-existent.
- Tests? Unit tests? But seriously, there weren't many.
- It required a lot of data maintenance as everything was stored in the database.
- Bad actors adding inappropriate images to our family-friendly cat application.
- Fragile...