Proposal (5 Marks)
The proposal aims to test your understanding of the concepts, characteristics, and relevant technologies in
Cloud Computing. Moreover, your ability to design a cloud application will be assessed. Turn in a printed
two-page project proposal that includes but is not limited to the following sections:
o Give background information about this project: What is this project about?
o Explain the motivation of this project: Why is this project important?
o Describe the overall objectives: What features does this project have?
o Explain the benefits brought by cloud computing: How does cloud computing fit in this project?
• Technical Solutions:
o Describe what front-end technologies you use in this project.
o Describe what back-end technologies you use in this project.
o Estimate the cloud cost (e.g. VM, cluster network, software, etc.).
• Architecture Design:
o Depict the workflow or framework of the project in a figure.
o Describe in detail the architecture of the project.
The teaching team will follow up with your implementation to ensure that the project is reasonably proposed
with appropriate size and difficulty.
According to the previous experience, students’ projects are normally categorised into two types:
reliable, and resilient in the cloud.
2. Type II: a data-analytic application (e.g. Jupyter Notebook + Scala/Python/Java + Spark SQL /
Streaming / MLlib) that is capable of analysing big data.
You can choose either one according to your background and preference. There are a few technical
requirements that must be met when designing your project in the proposal.
If your project belongs to Type I,
• For the front-end design, you should have a functional user interface allowing users to interact with
the application (e.g., login, search, etc.).
• To support the overall objectives of this project, you should have a backend design (e.g., database)
working together with front-end UI smoothly.
• You should adopt a micro-service architecture and containerise your micro-services with multiple
containers. You should use docker-compose to orchestrate all the containers.
• In your design, your application should have scalability and reliability with the help of cloud
If your project belongs to Type II,
• You need to perform a challenging data analytic task (e.g., big data queries, classification/regression,
clustering/association rule mining, etc.) to solve a real problem.
• You do not have to analyse the real big data in this task, but the dataset you pick up should be
reasonably large and complex. To persist the data, you need to store the data in either database
(relational/non-relational databases, e.g., MySQL/Redis/MongoDB/Cassandra) or distributed file
system (e.g., HDFS).
• You should run this analytical task on a Spark cluster using Spark programming techniques and
related Spark built-in libraries (i.e., SQL, MLlib, Streaming, and GraphX). You can choose either
Python or Scala as the programming language.
• To demonstrate the analysis results, your program should be able to visualise results with some tools
(e.g., matplotlib in Python) in Jupyter/Zeppelin Notebook.
No matter which types your project belongs to, the cloud infrastructure costs should be fair and reasonable.
You can use Google Cloud Platform Pricing Calculator when making the budget plan in the proposal.