I've decided to utilize a number of AWS services to implement the backend for Karaoke Cat. This approach has many advantages even for a small app like KC.
When I first moved Karaoke Cat off of Redhat OpenShift, as they were no longer offering an affordable version for a small operation like mine, I moved the WSGI server to the Pythonanywhere environment as it was written in Python using bottle. That worked very well but it was not my long term solution as it was not scalable.
I then moved the existing HTTP API to AWS Lambda. Each route was implemented as an individual Lambda function which basically meant each function was its own small microservice. The AWS API Gateway was utilized to provide the HTTPS access to the routes and each Lambda function. The existing JS code required little modification to allow this to work. It still is using the original HTTP API interface and the same JSON data is returned to the client. That's how kc-db.com is functioning currently (As of April 2024) .
MongoDB Atlas was used as the DB server in both the Pythonanywhere and AWS Lambda implementations.
The next step is to implement the KC version 2 HTTP API to support multiple vendors and their venues via MongoDB. This also means supporting multiple song catalogs. The development will take an API-first approach with the UI design and integration occurring after the API has been completed and tested.
When I first moved Karaoke Cat off of Redhat OpenShift, as they were no longer offering an affordable version for a small operation like mine, I moved the WSGI server to the Pythonanywhere environment as it was written in Python using bottle. That worked very well but it was not my long term solution as it was not scalable.
I then moved the existing HTTP API to AWS Lambda. Each route was implemented as an individual Lambda function which basically meant each function was its own small microservice. The AWS API Gateway was utilized to provide the HTTPS access to the routes and each Lambda function. The existing JS code required little modification to allow this to work. It still is using the original HTTP API interface and the same JSON data is returned to the client. That's how kc-db.com is functioning currently (As of April 2024) .
MongoDB Atlas was used as the DB server in both the Pythonanywhere and AWS Lambda implementations.
The next step is to implement the KC version 2 HTTP API to support multiple vendors and their venues via MongoDB. This also means supporting multiple song catalogs. The development will take an API-first approach with the UI design and integration occurring after the API has been completed and tested.