Client requirements for the platform selection: None.
*The platforms we chose are highlighted in the following table.
Technologies | Pros | Cons |
---|---|---|
MongoDB | – Supports many programming languages (Java, Node.js, Python) – Has good support for VS Code – Cloud database that supports AWS and Google Cloud Platform – Well documented | – Group members are more experienced in relational databases – Free version storage is limited |
MySQL | – Group members have relational database experience – Well-documented website and Node.js module – Offers cloud service with AWS and Oracle Cloud Infrastructure (OCI) | – Complexity establishing a cloud database connection – Tables may end up storing duplicate data |
Docker | – Containers are the go-to method for microservices. – Will allow isolated application services such as authentication and model creation. – Will allow services to operate consistently and more efficiently. | Containers management, as well as service orchestration, can be difficult to implement. |
Kubernetes | – It delivers application load balancing and monitoring. – Provides the ability to build, run and scale containerized applications. – Adaptable, extensible, and cost-effective at the time of computing resources. | – Steep learning curve. – Might delay developing process as it requires more planning ahead of time. |
Typescript over Javascript | – Typescript provides strict and structural typing that will make code management easier. – Will allow us to define type annotations and avoid bugs when writing code. (Type inference) – Will ensure our Javascript-generated code is correct and free of type bugs. – Increased team performance since defined data structures and type annotations make it easier to understand code implementation. | – Working with other libraries and tools, such as MongoDB, can be a challenging typing system. |
Python | – simple syntax – lots of available packages online – imperative and functional programming – the machine learning part of the project is completed by python so using python can have better consistency | – not quite efficient |
C++ | – more efficient on running time and memory | – complicate syntax – not lots of available packages online |
GCP | – lower price – $300 credits for free trial – highly integrated with Google-owned and other open-source projects – TPU and Vertex AI available on GCP – better for ML | – not as popular as AWS |
AWS | – more popular over GCP – 1-year free trial – good integration with other amazon-owned services, API | – higher price – not as friendly to ML as GCP |
Relational Database | – easily structured into categories – consistent in input, meaning – easy to navigate – defined between data points | – higher requirement for hardware – dynamic changes affect all the tables – Up-front schema definition |
Non-relational Database | – not confined to a structured group. – perform functions for greater flexibility – dynamic changes – variant inputs | – Low reliability – Manual query language – hard to verify data integrity and consistency |
React JS | – Rich Javascript Library. – Easy to test, and developer contest and debug codes with the native tools help. – Less coding and more functionality for dynamic applications. – Run on server, and virtual DOM will be rendering to browser as a regular web page. | – Only cover VI layers – React JS update so fast, so there is no up on time and proper documentation sometimes. – Beside Javascript, The language used also include JSX. |
Node JS | – People always use Node JS for building backend service, such as APIs like Web App. – Easy for javascript programmers, because. – It can handles requests and authentication from browser, make database calls. | – Reduces performance when handling computing tasks. – the developers are forced to continually change the access code to match the compatibility with the frequent changes of Node.js API. |
Next JS | – React users can handle Next JS easily. – Popular than React JS and Node JS these days. – Next.js was actually created to fill in some of the gaps left by React. – reduces data security problems. – The built-in fast refresh feature and CSS support. – Next.js allows page constructors to be grouped as components and reused. | – Next.js is not very flexible when it comes to routing. |
Github | – Easy to remotely accessed by any authorized person. – Built-in control and task management tools. – Good for group cooperation and backup. – Git repository hosting online. | – Because it is easy to access, there might be security/ intellectual property issue. – Some features have to pay. |
![](https://tarheels.live/comp523groupg/wp-content/uploads/sites/4075/2023/02/Screenshot-2023-02-24-at-12.52.57-PM-1024x573.png)