Cloud and Concurrent Programming Assignment 1
Overview
In this assignment you’ll be designing Nüber (pronounced Noob-er) as an Über1 clone to have a crowd-sourced, personal transportation service. The service will have three types of users, with system admins, drivers, and the customers who get rides from drivers and pay for the service. You will be designing the system as a globally scalable and resource scalable app in the cloud, justifying your design choices as part of the assignment. You will then start to build the basics of the system to demonstrate your capabilities in AWS.
Breakdown
For this assignment you will design your own Über clone. You will need to design the cloud infrastructure, primarily designed around AWS, but also incorporating other services as needed (e.g. mapping, payments, crash handling). The required capabilities of the platform are:
- Authentication/user accounts: Users can sign up with password, login. This could support different types of accounts, or you can handle this as part of a database.
- File upload: Drivers need to be able to upload the ID documents before they’re allowed to be a driver.
- Crash reporting: Collecting/tracking crashes in the app.
- Analytics: For tracking app usage, where users are from, sign-ups, etc.
- Mapping: Calculating and displaying routes.
- Payments: For collecting payments.
- Music integration: A customer’s music preferences/playlists should be available to drivers.
Please note that these are the high-level capabilities, you will not need to implement all the above services as functioning code, but rather identify which commercial service you will use (e.g. Stripe for payments), and design integration with that service.
System Design
You will need to design your primary cloud system using AWS and associated other services to provide the required capabilities. Your system design will need to take into account:
- Global users: Which countries will you support?
- Changes across time of day: How does your service scale across the day as required?
- Locality of users versus their data: You shouldn’t have data across 100 AWS locations, nor only in one location. How does your system support global users versus your data centre locations?
You will need to describe what AWS services you utilise, and how and why they are connected as they are. Why did you choose a specific service over another? You will also need to address how your cloud design handles the requirements of global cloud policies and trends relating to:
- Privacy: e.g. which service providers have access to what data, and how that relates to major privacy policies such as GDPR? How can your system support the “right to be forgotten” if a user wants to delete their account? What information about users is shared with which services? If other services were hacked, how does that impact the hacker’s knowledge about your users?
- Data locality: Where is a user’s data physically stored? Does this comply with the requirements of countries you operate in?
- Data security: e.g. if your service is hacked, is all the data lost to hackers?
Your document will need sections describing the privacy, data locality, and security aspects as above. Remember, this isn’t the whole assignment, but your design and resulting design document need to demonstrate your awareness of the above areas and how you have supported these considerations in your system design. If you have specifically chosen to not support a certain country, or privacy policy in a country/region, describe why. It might be that you have decided, and can justify, why your app won’t operate in a given country given certain policies that country has.
You will need to describe what cloud services you selected to provide the mapping, payments, and other service requirements, as well as identify what information about the user, captured in your app, is sent to these other non-AWS services. You will need to identify what type of API is used to communicate with the external services.
Extensibility
You will need to address the extensibility of your system design. What happens when we now want to change our app to include food delivery? Or courier delivery? Your app design should be integrated as a system, but also extensible. The user shouldn’t have to create multiple accounts for each service, but rather have a single “identity provider”. Again, remember this isn’t the whole assignment, but something you should consider, and highlight how it affected your design.
Justification
For your system design there is no single correct design. Whatever your design and decisions, what’s important is your justification for those. If Nüber can’t operate somewhere for a certain reason, is that acceptable from a business case? You need to explain the design, your decisions, and justification as to why it’s a good design. Remember the goal is to design a global solution, so whilst you might exclude certain markets, you can’t exclude too many! Otherwise, is your system design and justification just to operate multiple completely separate installations?
Sample Implementation
You will need to implement the basic components running in AWS for the following user story:
- A user visits the Nüber site, and signs up to create an account. This could be using username/password, or potentially use their login from other services. When signing up, the user should select whether they are signing up as a driver, or as a customer.
- The site welcomes the user after logging in, showing an appropriate landing page depending on whether the user is a driver or a customer.
- If the user signed up as a driver, the driver landing page will need to allow them to securely upload files for their identification check.
- File upload that is only accessible to authenticated users, and once a file is uploaded, the file shouldn’t be accessible to anyone else but the Nüber staff who have access to the AWS backend.
Where applicable, your system should look professional, with appropriate styling, logos, etc. However functionality is the main focus.
Deliverables
System Design and Discussion Document
You will need to upload a PDF of your design and discussion document. This should be a formal report, with a cover page, abstract, table of contents, table of figures, bibliography (if material is referenced) and appendices. The specific document design, sections, and format is up to you, however as above, it should be a formal document, with the required sections and subsections, as well as appropriate use of grammar and spelling.
Please check your submission using the spell checker, as well as additional tools such as Grammarly to help ensure your document is well written.
Do not send your submission to other students to check, even if they are not in the class. We are happy to check drafts if asked for within a reasonable timeframe or during practicals.
Implementation Video
You will need to record a screen capture video of your implementation with audio commentary, showing a user visiting your site and:
- signing up as driver
- logging in
- uploading a file
- demonstrating that file’s uploaded bucket URL cannot be publicly accessed
You will also need to keep your site live during the marking period, and submit your site’s URL and any other instructions for use as part of the submission. This URL and any associated instructions should be included in your system design document.
The video does not have to be a high quality production as you are not expected to have professional microphones, etc. Performing a screen recording whilst you describe what you are demonstrating using the webcam’s microphone will be sufficient. You can record the screen using the OS’ own tools:
Windows:
https://support.microsoft.com/en-us/windows/use-a-screen-reader-to-record-your-screen-with- xbox-game-bar-5328cd25-9046-4472-8a14-c485f138802c
OS X:
https://support.apple.com/en-au/HT208721
Plan of Attack
Remember, this assignment has two parts: the design document, and the sample implementation. Do not get too caught up on any one part of the assignment. Whilst there are many different parts to this assignment, you are not expected to write thousands of words. You should have design and system diagrams where appropriate, which you can then discuss and justify. What is important is not the depth to which you describe each part of the assignment, but that you are demonstrating your knowledge and consideration for everything that has been outlined above.
Explore AWS’s services and try and map which services will be useful for your system. For those that will be required for the implementation, work through the getting started tutorials provided by AWS, as they should provide you with the foundations that you need to integrate that service for the demonstration.
Start planning your system design in a simple form, then start to consider the more advanced elements, such as scaling, geographic distribution, policy/legal requirements. Follow the KISS Principle2 to ensure your system remains as simple as possible. A simple, well justified design is better than a complex, ill-defined design.
For the additional services, such as mapping, payments, etc., again, these are just small parts of the overall assignment designed to make you review what other services exist and explore how they would be integrated and the implications of that. You do not need to implement any of the services, other than what is described in the Sample Implementation section.
Submission and Due Date
Please upload two files SEPARATELY (i.e. NOT zipped). The submission page will allow for multiple files to be uploaded. You will need to upload:
- Your design document, including live URL to try the service.
- Video demonstrating your implementation, narrated by yourself.
Due Date
Please see the course site for submission due date
Late Policy and Extensions
Unless you have an approved extension for the assignment, there is no late policy. This means late submission, regardless of the time, will result in 0 marks.
To make sure that you have a backup, and to ensure you don’t miss the deadline, please upload versions of your submission regularly to the submission page. You can update your submission as many times as you would like until the due date. Please be aware that we can only mark what is submitted on the course site.