Microsoft Word – CSC3065-Assessment2-Editor.docx
CSC3065云计算2021/22
评估2:编辑
评估简报版本:2 (11/11/2021)权重:60%
设定者:大卫·卡特
主持人:尼尔·安德森
发布日期:2021年 11月 12日
提交截止日期:2021年 12月 13日 17时
迟交的处罚和规则将根据QUB关于迟交的政策适用。有关本政策或任何其他QUB评
估政策的更多信息,请参见:
https:// www.qub.ac.uk/directorates/AcademicStudentAffairs/AcademicAffairs/
Examination 评估/标记方案和分类/
请注意,这是一个单独的作业,因此将被检查是否抄袭。你应该确保作品是你自己
的,引用任何第三方的资料。抄袭是一种严重的学术违法行为。提交你的作品意味着
你声称这是你的个人作品,以前没有提交过学术学分。
如果您对作业有任何疑问,请首先咨询模块组织者大卫·卡特,或者使用本文档
中列出的任何支持选项。
1.评估详细信息
量子编辑器3000(编辑器)是世界上设计最复杂但极不可靠的文本编辑器。它已经使
用多种云技术实现,包括无状态、容器、配置项,目前部署在QPC。
您的任务是以此为基础开始,并添加本文档中指定的更多功能。对于您具体希望实
现什么,有一些选择的可能性,因此您必须决定如何进行这些改进。
编辑器基本上是一个带有一些按钮的文本框,这些按钮执行操作(如字数统计)并报告
结果。
编辑器前端:这是一个简单的容器,包含一些实现前端的静态 HTML和 Javascript。当
需要操作时,它用 Javascript向一个工作服务发出一个 XMLHttpRequest。它用于这
些请求的端点是在 Javascript中配置的。
存储库:http://gitlab.hal.davecutting.uk/root/editor-
frontend 现场演示:http://
frontend.editor.qpc.hal.davecutting.uk/
editor-wordcount:这是一个基于PHP的容器,它接受一个 HTTP GET参数(文本),并
返回一些 JSON,包括答案(字数)和描述字符串。有一些基本的配置项测试(功能的单
元测试,但不是作为网络服务)。
存储库:http://gitlab.hal.davecutting.uk/root/editor-wordcount
现场演示:http://wordcount.editor.qpc.hal.davecutting.uk/? 文字 = 再见 + 残酷 + 世界
editor-charcount:这是一个基于 Node/Express的容器,它接受一个 HTTP GET参数
(文本)并返回一些 JSON,包括答案(字符数)和一个描述字符串。有一些基本的配置项
测试(功能的单元测试,但不是作为网络服务)。
存储库:http://gitlab.hal.davecutting.uk/root/editor-charcount
现场演示:http://charcount.editor.qpc.hal.davecutting.uk/? 文字 = 再见 + 残酷
+ 世界 您需要修改和扩展此编辑器,如以下任务所述。
请确保您仔细阅读并理解说明,尤其是提交时的说明!报告是标记的内容(代码和视频
将只在需要时进行抽样检查,以验证报告中的声明或审核-代码或视频中不在报告中的
任何内容都不会被标记)。
1.1 任务
A.新功能
向编辑器中至少添加四个新函数,包括对每个函数的前端和后端实现的更改。有关更
多信息,请参见评估标准,但一般来说,使用新语言(除了所提供的语言)和 CI管道
之类的东西会获得更高的分数。使用新技术也可获得积分,即以 FaaS的一项功能为
例进行部署(新技术或语言积分仅授予一次,即如果您使用 FaaS两次,则即使您使用
不同的语言或提供商,也仅算作一次创新)。
要添加的示例函数包括:元音数量、逗号计数、拼写错误数量、平均单词长度、回文
数量、“和”的实例数量。
注意,只有四个功能将被标记,提交超过四个功能的工作将导致前四个被标记,其他
被忽略。
B.对当前实施的改进
当前编辑器的工作方式存在许多问题,包括(但可能不限于):
缺少对异步调用被阻止或在前端等待响应时发生的操作的处理(例如,如果我
单击获取字数,然后在第一个字符完成之前快速单击获取字符数,它们会相
互覆盖)
前端没有错误处理(如果后端服务返回错误结果怎么办)
所提供的任何后端示例服务都没有错误处理(例如,都没有处理空字符串或未
传递的变量文本)
前端服务路由的静态配置(它们是源代码内部的代码行,最好有一些外部配置
文件或服务来工作)
对所提供的后端服务的配置项测试只是对功能的单元测试(即,它们实际上并
不执行检查网络应用编程接口功能的 HTTP请求)
计划并实施改进,以解决上述部分或全部问题,或您在所提供的系统中发现的其他缺
点或问题。请参阅评估标准和提交说明,了解更多关于可以评估什么以及如何显示这
种工作方式的信息。
C.自定义代理路由器
目前,每个功能端点都有一个在前端客户端配置的自定义网址。对于这个挑战,您将
构建一个独立的反向 web代理作为容器,前端将所有调用(包括任何变量)传递到该容
器。
然后,该代理本身将保存不同方法的特定端点,并在获取并返回答案之前对终端
服务进行 HTTP调用。
对于满分,该服务应该是高度可配置的(我们如何更新端点或添加新的端点,例如,
当服务正在运行时,这是否可以动态发生)并支持一些服务发现选项(例如,有哪些方
法可用或自动注册新服务)。
请注意,您需要自己构建,而不是使用第三方服务或容器。
D.前端服务故障处理程序
前端目前为每个函数存储一个网址(在 C之后,这将是代理的一个网址)。这个挑战是
更新前端以支持每个函数/代理的多个URL。如果特定的网址离线或出错,前端应该能
够继续使用其他端点。
这也可能包括多个端点可用时的负载平衡。
正如结合 C提到的,这是指C1提供的代理服务的多个网址。请注意“前端”总是指的
是 HTML+JS组件(浏览器中的),如果您在代理中实现这个处理程序,它将不会计入 C
的分数,这仅与浏览器有关。
E.监控和度量
监控和测试服务–所有测试目前都是在配置项测试的构建周期中进行的。实现一个单
独的服务(可以是容器或其他服务),当使用该服务时,它会向函数发出 HTTP请求(可
能带有随机文本字符串),并检查(a)结果是否符合预期,以及(b)整体性能是否及时
(在理想情况下,除了按需操作之外,该服务还应该定期检查性能并记录结果)。请注
意,您需要自己构建,而不是使用第三方服务或容器。
对于满分,您需要定期进行某种形式的监控测试,并对编辑器服务的失败发出警报
(这可以是外部服务或容器,只要您自己从头开始完成了第一部分)。
F.当前值的状态保存
目前无法在编辑器中存储当前文本。对于这一部分,您应该使用您喜欢的任何技术
(容器、FaaS、数据库等)来实现:
保存当前文本,并返回(和显示)该保存文本的标识符
提供输入标识符的选项,从而将保存的文本召回到前端
G.多供应商架构
完成一个合理的设计(不要求您实现),说明如何将编辑器完全部署到多个云供应商
上,也许使用一个公共代理/路由器。包括适当的图表和文本,展示你的设计如何确
保最终的弹性,即使在僵尸起义之后也能继续糟糕地把数字加在一起。
1.2部署环境
目前的编辑器部署在QPC库本内斯系统上,源代码和docker注册表在QPC gitlab
中。建议您在项目中继续使用这种架构,或者至少大部分使用,但这不是必需的。
您可以自由使用任何您喜欢的提供商及其技术堆栈,但请注意
(a)可用的支持将会减少,以及(b)您必须在提交时使任何代码都可以访问(有关
详细信息,请参见提交部分)。强烈建议您在选择QPC Kubernetes/gitlab以外
的平台之前与教学团队进行讨论。
如果你使用另一个平台,然后用完学分,所以项目不能完成或演示,然后你会失去
分数。
2.评估标准
以下是对您的提交进行标记的标准及其概念标记等效物。
一般标记标准(注意,这将整体应用于每个部分,并且是所需标准的示例)
标准 出色的 85%
+
优秀
70%-85%
非常好
60%-70%
好的
50%-60%
可接受的
40%-50%
不能接受的
< 40%
任务a .
附加功能
4x 7%(A类
合计28%)
用一种新的语
言或范式完美
地实现功能,
优秀的CI测试
完全覆盖功能
用优秀的CI测
试在新的语言
或范例中出色
地实现功能。
实现中的一些
非常小的弱
点,例如缺乏
可察觉的错误
条件。
一个函数的良好
实现通常是在一
种新的语言中,
具有良好的CI测
试。在执行的某
些方面存在一些
弱点。
函数在新语言中
实现良好,或者
对配置项测试提
供的模型进行了
重大更新。
缺少或缺少实
施的某些方
面。
功能已实现并正
常工作,但除了
提供的示例之
外,几乎没有扩
展。
功能没有完全或
根本没有实现,
提交时可能会出
现重大错误。
任务b .解
决缺点
12%
对示例性良好
实施中显示的
关键缺点有很
好的理解,从
而形成一个强
大的功能系
统。
对关键缺点有
很好的理解,
通过强有力的
实施,形成了
一个强大的功
能系统。
对关键缺点有很
好的理解,并通
过良好的实施展
示出一个强大的
功能系统。
展示了对一些关
键缺点的理解,
这些缺点通过适
当的方式得到了
很好的解决,从
而改进了系统。
一些缺点得到了正
确解决或显示出良
好的意图和近乎功
能性的解决方案。
不足部分得到解
决或根本没有解
决。
任务c .代
理路由器
10%
出色且完美地
实现了接近行
业标准的代
理,包括动态
配置、服务发
现和高级功
能。
出色且经过很
好的演示,将
代理实现为非
常高的标准,
并结合了一些
实现良好的高
级功能,例如
动态配置和服
务发现。
非常好的解决方案
很好地展示了一些
重要的最佳实践和
高级功能,但也有
一些局限性。
好的代理清楚地
表明并很好地满
足了设定的主要
目标(并且超越
了简单的硬编码
请求),但是在
设计或实现上有
一些弱点。
代理满足(或几乎
满足)设定的挑
战,但在设计或实
施方面存在重大缺
陷。
代理未能满足要
求,包含重大错误
或缺乏功能。
任务d .
前端故
障处理
10%
出色且完美地
实现了挑战接
近行业标准,
并适当地结合
了最佳实践和
文档。
出色和非常好
地展示了挑战
的实施,以非
常高的标准纳
入最佳实践和
适当的文件。
非常好的解决方案
很好地展示了适当
地结合一些重要的
最佳实践和文档。
好的解决方案清
楚地展示了并很
好地实现了设定
的目标,但在设
计或实施方面存
在一些弱点。
解决方案满足(或几
乎满足)设定的挑
战,但在设计或实
施方面存在重大缺
陷。
未能满足要求、包
含重大错误或缺乏
功能的解决方案。
任务e .监
控和度量
15%
出色的行业质
量监控,考虑
到所有方面,
并进行全面的
定期测试和警
报。
出色的监控显
示接近行业质
量,几乎考虑
了所有方面,
并进行全面的
定期测试和警
报。
非常好的监控,
通过定期测试和
警报,充分考虑
了几乎所有方
面。
良好的监控显示
出希望,但存在
一些明显的弱点
和/或定期测试
和警报的一些失
败。
基本监控到位,连
接简单,但存在重
大缺陷和/或没有
定期警报。
未能执行任何
有效的监控或
接近可操作。
任务f .有状
态保存
15%
出色的全功能
保存和召回,
包括错误处理
和异常。
出色的保存和
召回,包括错
误处理。
保存和回忆与一
些优质功能配合
良好。
保存和召回工作
正常。
保存和回忆几乎与
一些错误一起工
作。
未能满足保存或
召回的要求,且
没有或很少尝
试。
任务 g .建
筑设计
10%
优秀的完全合
理的设计显示
了对多个供应
商的高可用性
核心问题的理
解。
优秀的设计,
有充分的理由
表明对核心问
题的欣赏。
一般来说,优秀
的设计和理由与
一些问题或弱
点。
良好的设计和论
证,在某一方面
有一些弱点或重
大弱点。
公平的设计和理
由,但有弱点或问
题贯穿始终。
质量差或设计不合
理,表明对核心问
题没有真正的理
解。
3.反馈
提交后,将尽快提供标记形式的反馈,并期望在两个工作周内完成标记(并提供标
记)。
个人反馈的形式将是针对每个评估标准的数字评分(如果合适,可能会有针对这些标
准的简短评论)、从这些评分中得出的按部分加权的总评分,以及对整个提交内容的
总体文本评论。
将向全班提供总体反馈,包括总体趋势和特别关注的领域。
欢迎任何希望更详细地讨论其分数的人使用本文档中概述的任何支持安排。
4.提交
提交将通过画布和存储库访问。请仔细阅读本部分,以避免任何可能导致分数丢失的
错误。
注意:需要上传三次-除非你完成所有三次,否则这份作业将被视为未提交。您有责任
检查任何上传的有效性/是否有损坏。
延迟惩罚将根据任何上传项目的最新时间戳应用于此分配。
您需要:
1.如果不使用QPC git lab(git lab . Hal . Dave cutting . uk–如果您正在使用
它,那么除了提供报告中的链接之外,您不需要做任何事情)提供存储库访问,例如
EEECS gitlab或任何其他存储库服务。如果是这种情况,您有责任与教学团队的成员
讨论此事,以允许他们访问(或链接到公共存储库)。
2.将三个项目上传到画布上的相关分配选项:
基于提供的模板(您必须使用该模板)的完整报告,命名为<学生编号>。画布
上的报告作业。
向画布上的视频作业展示系统操作的演示视频(详见 4.1)。
一个 zip文件,包含您编写的所有源代码的副本(除了外部审查员对存储库的
访问之外,这也是必需的),用于画布上的代码分配。
3.通过画布查看上传内容并确保其正确无误,从而验证上传内容。以前,学生上传了
错误的作业或早期版本等-你有责任确保上传正确的项目。
4.1视频提交
为了演示您的系统工作,您需要提交一个视频,通常是屏幕截图视频,最好尽可能
短。这应该显示您的解决方案的每一个关键工作要素(使用检查模式或类似模式来
显示到端点的网络流量)。
你应该用这个视频来突出你想要的任何细节,例如任何特别详细的功能。
你不需要特别介绍或解释你的工作,但这可以让一个观察者看到它在运行!请务必涵
盖所有功能。
如果需要,请注意文件大小和压缩/重新编码。以前,我们有1GB或更多的短视
频提交!这将需要很长时间来上传,上传(和检查)必须在截止日期前完成,以
避免处罚。
请注意:视频的主要目的是验证和外部检查。报告是标记的组成部分,因此您必须
确保证明报告中的所有内容,视频中包含但报告中没有的任何内容都不能被标记。
标记甚至可能看不到视频。
5.可用支持
在整个项目中,有许多支持渠道。建议你按照这个顺序来尝试,但这是你的选择,你
可以随意选择其中一种或全部。
画布讨论——你可以问任何问题(一般来说,请不要把你的作品包括在内,因为每个
人都可以看到!)在画布论坛上。这是非常有用的,因为每个人都可以看到(问题和
答案!)及其可能的学生可以互相帮助。
实践环节——周二 1100-1300有一个实践环节,欢迎你就任何事情提出问题,包括这
项作业。只需在团队问题频道上弹出并问好。
模块插入–CSC 3065每周四 14:00-15:00提供虚拟插入会话。我们的模块演示者(将
参与标记)将保证在那里,模块讲师也将经常在那里。只需在团队问题频道上弹出并
问好。
办公时间——大卫·卡特每周都有办公时间。可以通过画布上的办公时间链接预
约。
发布日期:2021年11月12日
1. 评估详细信息
1.1 任务
A. 新功能
B. 对当前实施的改进
C. 自定义代理路由器
D. 前端服务故障处理程序
E. 监控和度量
F. 当前值的状态保存
G. 多供应商架构
1.2 部署环境
2. 评估标准
3. 反馈
4. 提交
4.1 视频提交
5.可用支持