Most people nowadays aim for their own wellbeing and health and food is one of the major things that can affect both.
With restaurants being a bit more expensive over the years and the aspect of not knowing what goes inside their food, a lot of people has decided to try cooking for themselves for a complete control of the ingredients they can use.
It would be even better if they know how much nutrition will they get for the meal they cooked too, and thus this app was made for this purpose. It would also BE EVEN BETTER if people can find recipes that others made that meets the nutrition requirements!
Name: Edric Oki Laisan
Student Number: 49254503
The full proposed functionality of the application is as follows:
The Minimum Viable Project (MVP) would be as follows:
Scalability refers to how easy would the system to scale their operations on a sudden influx of users or activities or a huge reduction of user counts and/or activitires.
This is important for Calcutriting Chef as we need to ensure the app can handle a huge amount of recipes uploaded and/or search queries and as to not compromise the speed of completing the user’s request. Slow processing speed will cause the user experience to be diminished and unnecessary.
There is also a need to reduce the resources used if there is a drought in activities within the app as unused resources during a drought of activities would waste resources and money running the servers.
Reliability in this context means on how often the services runs error-free that is used on the app, from basic search function to the nutrition lookup feature.
In this app, a lot of moving parts are needed to be error-free, especially the nutrition calculation and look-up as a mistake will give the user a false impression of the nutrition they have taken.
Not just that, it also needs to ensure that the database used, if possible, matches the country the user is in as each country would have a differing amount of nutrition values for the same food item.
Availability is extremely critical for our applications as it heavily relies on food databases to be available at all times for checking a food’s nutritional value.
If there is a downtime of said services, the application’s main purpose would be effectively shut down and users would not be able to do use the application.
Should the event of the database can’t be looked up through an API, an offline copy of the database must be provided and is updated regularly.
For scalability in this context, a scalability testing can be done with various tool such as JMeter can be done, which simulates an increasing amount of users or recipe to ensure our operations and data storage can scale its resources properly.
For this application, reliability testing can be done by doing unit testing and functional testing for various scenarios that might occur and to find any errors within the code.
Unit testing is to test specific functions of the applications such as a nutrition look-up feature and check if result fits the expectations.
Functional testing ensures that the application works as intended by simulating what would a user’s behavior be like when using the app and confirms the user experience and data received is as intended.
The expected results would be a smooth user experience, proper data returned, and fallback implementations working properly.
We can evaluate the availability of the services within the app by doing a load and stress test of its search function and CRUD operations on the recipes. This can be done using Grafana K6 or Locust, a tool specifically meant for this scenario. For these tests, it is ideal to aim for a 95% uptime and a reasonable response time of <300ms for search and lookup functions.
We can also test for the backup database systems through unit testing and test the fallback function.