====== Is your software designed with keeping sustainability in mind?====== You can use the following guide to check various aspects of your backend from a sustainable point of view! ===Code Optimization=== ^ ^Exceeds Expectations ^Meets Expectations ^Below Expectations ^ |Code Optimization|Code appears to be optimized at a high level, and appears to have been thoroughly considered. Data structures and advanced algorithms are utilized well|Code is somewhat optimized, and appears to have been considered during development. Data structures and algorithms are used some for this purpose|Code is not optimized well, and it does not appear code optimization was considered. Outdated and poorly chosen data structures and algorithms are used.| -> Code Optimization Sub Topics ^ ^Exceeds Expectations ^Meets Expectations ^Below Expectations ^Metric ^ |Computational Overhead|Computational overhead is at a minimum |Some computational overhead is present, but is considered to be at reasonable levels|High computational overhead is present |Amount of memory (RAM) used during operation| |Caching |Effective use of caching related to data storage|Some caching has been used to ensure efficient data storage |Little caching has been used, and data storage is not handled in an efficient manner|Time taken to respond to a request | ===Resource Management=== ^ ^Exceeds Expectations ^Meets Expectations ^Below Expectations ^ |Resource Management|Advanced techniques are successfully utilized, such as garbage collection tuning, efficient memory management, and connection pooling s|Basic techniques are successfully utilized, such as basic memory management , and closing of connections|Resource management techniques are poorly utilized, or not used at all, leading to resource waste.| -> Resource Management Sub Topics ^ ^Exceeds Expectations ^Meets Expectations ^Below Expectations ^Metrics ^ |Operations|CPU and I/O operations are effectively, and efficiently managed|CPU and I/O operations have been considered, and appear to be efficiently managed in some cases.|Inefficient management of CPU and I/O operations |Percentage of CPU used during operation\\ \\ (eg computing the total number of food that are about to be expired)\\ \\ Time it takes to query data\\ \\ Bandwidth usage| |Processing|Asynchronous processing is utilized effectively |Asynchronous processing is somewhat utilize |Asynchronous processing not not appear to be used, or is used incorrectly|Number of requests that can be handled concurrently per second | ===Energy Efficiency=== ^ ^Exceeds Expectations ^Meets Expectations ^Below Expectations ^ |Energy Efficiency|Successfully implementing approaches that result in energy being used in an efficient manner throughout the entire program|Successfully implementing approaches that result in energy being used in an efficient manner throughout part of the program|Energy efficiency did not appear to gave been considered, or was implemented incorrectly| -> Energy Efficiency Sub Topics ^ ^Exceeds Expectations ^Meets Expectations ^Below Expectations ^ |Energy Profiling Tools|Effectively uses energy profiling tools to optimize and keep track of energy usage and consumption|Effectively uses energy profiling tools to optimize and keep track of most energy usage and consumption|Does not effectively uses energy profiling tools to optimize and keep track of energy usage and consumption| |Updating metrics |Consistently updates energy related metrics, such that the energy usage can be monitored |Consistently updates some energy related metrics, such that the energy usage can be monitored |Does not update energy related metrics | ===Performance and Scalability=== ^ ^Exceeds Expectations ^Meets Expectations ^Below Expectations ^ |Code Optimization|Solution scales efficiently without significant increase in energy consumption|Solution scales with a moderate increase in energy consumption|Solution scales poorly with significant increase in energy consumption| -> Performance and Scalability Sub Topics ^ ^Exceeds Expectations ^Meets Expectations ^Below Expectations ^ |Optimize Response Time |Response time consistently < 100ms |Response time consistently between 100ms and 200ms |Response time consistently > 200ms | |Improve Caching Efficiency|Cache hit rate\\ \\ > 90%, significantly reducing database load.|Cache hit rate between 70% and 90%, moderately reducing database load.|Cache hit rate\\ \\ < 70%, minimal impact on reducing database load.| |Benchmarking|Benchmarking has been effectively used to identify and resolve inefficiencies in the code|Benchmarking has been used some to identify and resolve inefficiencies in the code, or benchmarking has been used, but was not successful in identifying and resolving inefficiencies in the code|Benchmarks do not appear to have been used or considered, or they were used in a primarily incorrect manner| ====API Service==== ^**Handle Requests** ^**Perform Operations** ^**Query Data** ^ |Average time taken to respond to a request |Amount of energy consumed per unit of computation|Number of read and write operations per second | |Percentage of requests that result in errors |Amount of memory (RAM) used during operation |Data Size | |Amount of data transferred relative to the amount of useful information conveyed|Percentage of CPU used during operation |Average time the CPU waits for I/O operations to complete| | |Number of memory leaks | |