# 期末大作业指南


## 1、总体要求

#### 基于公有云的IaaS和PaaS服务，开发一个SaaS应用。你可以使用UCloud，也可以自己购买阿里云，Google Cloud，AWS等。SaaS应用可以是Web，小程序或者App。

#### `**************注意节省资源消耗，必要时务必保存镜像并删除资源，下次从镜像重建******************`

## 2、组队要求

#### 1~3人一组，自由组队。组员越多，完成质量要求越高。


## 3、提交内容

#### 3.1、项目开题报告，不超过500字，必须包含小组成员信息、项目简介、代码来源（或原创）、预计使用平台和云资源、预期效果。命名为`学号-云计算开题.pdf`，上传到 http://113.31.104.68:3389/index.htm。

#### 3.2、项目源代码上传到水杉码园，并编写详细README，说明代码部署和运行方式、SaaS应用效果截图。

#### 3.3、演示ppt，演示内容包括SaaS应用前后端实现细节、原创和二次开发情况（如有）、云上实际部署情况，SaaS应用功能演示，项目的水杉码园URL。ppt转成pdf，命名为`学号-云计算演示.pdf`，上传到 http://113.31.104.68:3389/index.htm。

#### `**************如果有多名组员，开题报告和ppt命名时只需使用其中一名同学的学号，否则会无法上传！******************`

## 4、重要时间

#### 开题报告：`2020年12月20日`
#### ppt演示和demo：`2020年1月12日`、`2020年1月15日`课上
#### 演示ppt上传：`2021年1月15日`
#### 码园上传：`2021年1月17日`


## 5、示例SaaS应用：水杉校场

#### 水杉校场是部署在UCloud平台上的在线判题SaaS系统，整个系统由三个容器构成，分别是前后端容器、判题沙盒和模型容器，如下图所示。

<kbd>
  <img src="img/FP.png">
</kbd>

#### 其中前后端分别使用了Vue.js和Django框架，学生在前端提交代码后，后端会把代码发送给判题沙盒，判题沙盒再将判题结果返回给后端。如果点击了代码错误预测等功能，后端会把代码发送给模型容器，通过调用Flask API来运行相应的模型，并得到预测结果。

#### 详细信息可以参考：https://github.com/QingdaoU/OnlineJudge

#### 部署效果：http://jf.shuishan.net.cn/


## 6、参考项目


#### 电商平台

> https://github.com/justdjango/django-ecommerce

> https://github.com/mohsinenur/E-Commerce-Website-Using-PHP


#### 视频分享网站

> https://github.com/nabilfarhann/Vidhub

> https://github.com/arslancb/clipbucket


#### 在线IDE

> https://github.com/cdr/code-server

> https://github.com/judge0/ide/blob/master/README.md


#### 文件共享

> https://github.com/eikek/sharry

> https://github.com/wewxd/file-sharing-website

#### 在线协作

> https://github.com/CollaboraOnline/online

> https://github.com/presentator/presentator


#### `**************优先选择多星、比较近期的、或者还在更新中的git仓库，否则你可能要自己改bug******************` :stuck_out_tongue_winking_eye: :stuck_out_tongue_winking_eye:


## 7、参考资源

#### Flask：基于Python的轻量级网页应用开发框架。https://www.tutorialspoint.com/flask/index.htm

#### Django：基于Python的全栈式网页应用开发框架。https://www.tutorialspoint.com/django/index.htm

#### VueJS：开发网页前端的JavaScript框架。https://www.tutorialspoint.com/vuejs/index.htm

#### Node.js：基于JavaScript的服务器端环境，包括众多可选择的后端框架。https://www.tutorialspoint.com/nodejs/index.htm

#### Web Server：Apache HTTP Server 或者 NGINX Web Server

#### [UCloud产品文档和API](https://docs.ucloud.cn/)