Proposed Architecture
Overview
Migrating away from the legacy architecture of having json objects implemented into the front end source code as well as all image assets, we are proposing implementing a database to house the data contained within the json files and a REST API to transform and enable access to that data in an ingestible way for front end consumption.
API Design
NodeJS runtime environment was chosen for its high throughput capacity as well as the fact that it uses the JavaScript programming language which will enable a single language to be used in both the front end and back end of our applications. Having the same language in both the front end and back end lowers the barrier of entry for developers to work in both specializations.
ExpressJS framework was chosen because it is lightweight and has a very large community due to it’s popularity and age. Because ExpressJS is mostly unopinionated we have chosen to create a template following the the standard REST design patterns, MVC project structure and SOLID principals.
Database Engine
PostgreSQL databasing engine was chosen because it is open source and an enterprise ready sql engine. The data structures observed should be capable of being represented in a SQL table structure, which should provide easy maintenance, strict typing and sufficient retrieval speeds.
Asset Image Storage
Azure blob was chosen in order to keep infrastructure in the Azure environment and the speed, safety, and cost efficiency that web storage services provide. Web storage services are low cost and optimized for safety and speed enabling fast development with very little start up costs.