参考答案:
详细解析:
一、结合自己所参与的软件项目,概要介绍该项目的背景及主要内容,并明确指出在其中所承担的主要任务和开展的主要工作。
二、问题2要求回答一些知识类型的问题,需要的知识内容如下:
首先值得说明的是无服务器架构并不是不再需要服务器,只是开发人员不再需要担心基础设施,因为一切都由云提供商负责。使用这种方法,开发人员只需部署适当的代码,其他一切由云提供商自动管理。
在传统的Web应用程序架构中,你必须管理基础架构,并确保其满足可扩展性和安全性需求。例如,客户端在一边,服务器在另一边。客户端发送一个“请求”,服务器回复“响应”。但是,如果无法满足应用程序需求,则很快就要扩展服务器端了。
无服务器模型提供了完全不同的方法。与传统架构不同,无服务架构在无状态计算容器中运行,这些容器是事件触发的,短暂的(只能持续一次调用),并由第三方完全管理。就像一个“黑盒子”,这个服务你只需上传代码并实时自动处理。当一个请求进来时,就会运行你的Lambda功能的容器。
在成本方面,使用无服务器模型,通常仅支付服务请求和运行代码所需的计算时间。计费以100毫秒为单位进行计量,使其具有成本效益,并且易于自动从每天几个请求到每秒数千次都可以。
无服务器架构的优点包括:
(1)降低运营成本:无服务架构本质上是一个外包解决方案。基础设施不会消失。然而,与常规云服务相比,事实上,只需要根据流量规模和形式支付需要的计算量,这可能会大大节省运营成本,特别是对于具有不同变化的早期和动态应用负载要求。
(2)可扩展性强:可扩展性强在云服务领域并不新鲜,但无服务架构将其提升到一个全新的水平。无服务架构的缩放功能不仅可以降低计算成本,还可以减少运行管理,因为缩放是自动的。使用无服务器,无需明确添加和删除实例到服务器阵列,并让供应商为你扩展应用程序。由于云计算提供商根据每个请求执行扩展,所以甚至不需要考虑在内存不足之前可以处理多少并发请求的问题。
(3)分离问题:无服务器几乎迫使你实施关注模型的分离,通过该分离将应用程序分成不同的部分,以使每个部分都解决一个单独的问题。
(4)隔离进程:在无服务器环境中,每个Lambda函数都完全隔离。如果其中一个功能关闭,它不影响其他功能,它不会导致服务器崩溃。
无服务器架构的缺点包括:
(1)缺乏控制权:通过任何外包策略,你都可以将某些系统的控制权给第三方供应商。由于系统停机,意外的限制,成本的变化,功能的丧失,强制的API升级等,这种缺乏控制可能会显现出来。此外,如果需要专门的服务器进行专门的流程,那么必须自己运行这个专门的服务器。一个无服务器架构,在大多数情况下,提供商业化的基础设施,将以广义的方式运行你的流程。
(2)长时间运行流程的高成本:如果你的进程持续运行很长时间,则可能会需要运行自己的服务器。因为这不仅涉及到成本,还涉及到拥有的技能或者想要投入运行自己的服务器的专注;在评估这些解决方案时,请考虑所有这些方面。
(3)供应商锁定将基础架构管理完全外包给无服务器提供商,无疑将自己锁定到该供应商。每个供应商都有自己的标准和编程框架,不容易改变。在几乎每一种情况下,无论从供应商使用的无服务器功能,将由另一个供应商进行不同的实现。如果要切换供应商,几乎肯定需要更新操作工具(部署,监控等),可能还需要更改代码。
三、结合项目经验详细论述无服务器架构的应用,并分析效果如何,哪些方面做得好,哪些方面做得不好。