Software Architecture Assignment - 2
Software Architecture Assignment - 2
Software Architecture Assignment - 2
iii)Use a distributed caching system to reduce the number of database queries and improve performance.
2. Performance: The system needs to respond quickly and smoothly to user interactions to provide a seamless user experience. To
address this requirement, the following tactics can be employed:
i) Use a front-end framework that allows for fast rendering of the user interface.
ii) Implement a caching system to reduce server load and improve response times.
iii) Use a content delivery network (CDN) to serve static assets quickly to users.
3. Security: The system needs to ensure that user data is secure and protected from unauthorized access or modification. To
address this requirement, the following tactics can be employed:
i) Use encryption to protect sensitive data such as user credentials and payment information.
iii) Use security monitoring tools to detect and respond to security threats.
Activity 2 : Describe in detail, the tactics you recommend for each ASR. For example, if caching is a tactic
you recommend, please mention what you will cache, what tool you would use, how it will work, etc.
To address the Architecturally Significant Requirements (ASRs) for the Blinkit application, the following
tactics can be employed:
1.Reliability Tactics:
i)Redundancy and Failover: Use multiple servers in different regions to ensure high availability.
Implement automatic failover mechanisms to quickly recover from server failures. Use load balancers to
distribute traffic evenly across servers and avoid overloading any one server.
ii)Distributed Caching: Use a distributed caching system such as Redis to reduce the number of
database queries and improve performance. This will also help in reducing the load on the servers and
ensure faster response times.
iii)Monitoring and Alerting: Use monitoring tools like AWS CloudWatch to continuously monitor the
application and receive alerts in case of any issues. Set up automated scripts to handle common issues
such as server restarts, service restarts, etc.
2. Performance Tactics:
i) Front-end Optimization: Use a front-end framework such as React that allows for fast rendering of the user interface. This will
ensure faster page loads and provide a better user experience.
ii) Caching: Use a caching system such as Varnish to reduce server load and improve response times. Cache frequently accessed
pages and resources to avoid generating the same content repeatedly.
iii) Content Delivery Network (CDN): Use a CDN such as Cloudflare to serve static assets quickly to users. This will ensure faster
page loads and better performance for users in different geographic locations.
3. Security Tactics:
i) Encryption: Use encryption to protect sensitive data such as user credentials and payment information. Implement HTTPS to
ensure that all communication between the server and client is secure.
ii) Access Controls: Implement access controls to prevent unauthorized access to sensitive data. Use multi-factor authentication to
add an extra layer of security to user accounts.
iii) Security Monitoring: Use security monitoring tools such as AWS GuardDuty to detect and respond to security threats. Set up
alerts for any suspicious activity and investigate any alerts to ensure that the system is secure.
Overall, by implementing these tactics, the Blinkit application can ensure reliability, performance, and security, and provide a seamless
user experience to customers.
Activity 3 : Draw 2 software architecture diagrams -
component & connection view and deployment view – to
understand how the system works.
Component and Connection View
● In this sequence diagram,the User initiates the process by performing a login action on the UI,
which sends a request to the API Client.
● The API Client forwards the request to the API Server, which authenticates the user's
credentials using the Auth component. Once the user is authenticated, the API Server fetches
the user's data from the Controllers, which in turn query the data from the Models.
● The Models fetch the data from the Database and cache it using the Cache component. Once
the data is cached, the Models return the data to the Controllers, which return it to the API
Server.
● The API Server then returns the user data to the API Client, which sends it back to the UI.
Finally, the UI displays the user data to the User.
● This sequence diagram helps to visualize the flow of messages and actions between the
different components during the login process, which can aid in understanding the behavior of
the Blinkit application.
6. State the architecture patterns used. Explain, where in the architecture, these patterns have
been used.