Design Application Architecture - CS
Design Application Architecture - CS
Requirements
Organisation ABC is looking to update their website to include customer supplied product images in
addition to the already existing photos provided by marketing. They believe that having more photos of
products in use will give potential customers a better feel for how past customers loved their products
after buying them. They do have some requirements as outlined below:
Uploaded images will need to be scanned before getting posted on the website. Legal and
Marketing are both requesting that after initial upload, the images be checked for any issues
that reflect poorly upon the company or could cause legal issues. An in- house API has already
been developed and deployed that can perform the necessary scanning.
Based on existing patterns, Organisation ABC expects the image uploads to happen very
unevenly throughout the day. Certain periods may experience more uploads than the scanning
software can handle, while other periods may experience very few or no uploads.
Once an uploaded image has been scanned and approved by the system, Organisation ABC
would like the customer to be sent an email thanking them for sharing their image.
Cost and management of the solution is a concern, especially since Organisation ABC isn’t
sure how popular this feature will be initially. Minimize costs and leverage serverless
solutions where possible.
Task
Design an architecture for the customer images to be added to the company website.
Solution
Logic App
Internet
Image Storage Account Event Grid Function
App Services Service
Bus Product
Database
Website Image Processing
Azure Active
Directory
Scanning API
On-premises
Consider Storage Account Blobs for image storage. Files could be used if SMB or NFS is
required by the web application, but blob storage offers a lower cost and generally more
features.
Consider Event Grid to create a notification when new storage blobs are created.
Consider Service Bus Queues to hold Event Grid notifications. The use of a queue will help
balance the loads and ensure that events aren’t missed through delivery guarantees.
Functions supply a serverless option to get messages from the queue and send
them to the Scanning API for processing.
Logic Apps supply an easy, code-free option to send emails based on
triggered events, such as SQL database item creation or modification.