无服务器架构的优缺点是什么?
无服务器架构是一种趋势软件设计模式,它消除了开发人员对服务器软件和硬件管理的需求。在无服务器架构中,也称为无服务器计算或功能即服务 (FaaS),第三方服务(称为后端即服务或“BaaS”)托管应用程序。顾名思义,它并不真正涉及在没有服务器的情况下运行代码。相反,拥有系统的人不需要购买、租用或配置服务器或虚拟机来运行后端代码。
AWS Lambda 是无服务器架构的最佳示例,它实现了云计算的功能即服务模型。无服务器计算确保了理想的、预算友好的业务实施的可能性。无服务器应用程序在由云提供商管理的无状态计算容器中实现,这些容器是事件触发的、短暂的(可能持续一次调用)。定价取决于执行次数,而不是传统架构中的预购计算能力。功能即服务允许开发人员执行代码以响应事件,从而消除了开发和维护基础设施的复杂性。
使用 FaaS 编写的无服务器代码可以与以传统服务器风格编写的代码结合使用。FaaS 将应用程序分解为功能和事件级别。Christos Matskas 为任何开发基于云的应用程序的人提供了有用的总结。“Azure 为托管微服务提供了一个理想的平台,因为它提供了许多托管服务,允许开发人员创建可以可靠和大规模运行的微服务。问题在于了解这些托管服务如何提供帮助以及哪种服务最适合该任务。”
无服务器 Java
可以使用 Java 构建大型无服务器应用程序。Java 方法在构建各种可扩展、可进化和多 lambda 无服务器应用程序方面非常有效。
实现无服务器功能
- 客户端向无服务器计算平台请求完成特定功能。
- 无服务器计算平台最初会检查该功能是否正在其任何服务器上运行。如果没有,平台从数据存储加载函数。
- 然后将该函数部署到其中一台服务器上,并预先配置了一个执行环境来运行该函数。
- 执行该函数以捕获结果。
- 结果返回给客户端。
无服务器架构模式
Amazon Web Services的 Lambda 无服务器服务的五种主要使用模式包括:
1.事件驱动数据处理
- 在事件之后触发动作,例如。触发 lambda 函数
- 非常适合混合趋势
- 用于在更广泛的托管环境中执行请求的功能
2.网络应用
- 确定用户上下文和个人元素的过程组合
- 静态内容用动态内容增强并存储为动态数据
3.移动和物联网应用
- 服务于用户上下文目的
- 检查用户是否被适当授权
- 然后执行功能,然后进行数据交互以满足用户要求。
4.应用生态
- 应用程序工作流是在无服务器环境中开发的
- 实施后,向用户发送反馈
5. 活动工作流程
- 通过创建的决策树的工作流分支操作
无服务器架构的优缺点
无服务器架构的好处
1.降低运营成本:作为一种外包解决方案,它为管理服务器、数据库甚至应用程序逻辑的支付铺平了道路。成本削减来自两个方面,基础设施成本收益和劳动力成本收益。您只需按执行次数付费。
2.更简单的运维管理:为Serverless架构搭建各种环境非常简单易行。它明确区分了基础架构服务和应用程序。自动扩展功能降低了运营管理开销。无服务器系统不需要持续集成、持续交付或容器化工具。零系统管理是无服务器系统的另一个优势。
3.更快的创新:无服务器架构消除了系统工程问题、更快创新和更新技术以获得高效结果的可能性。
4.降低打包和部署的复杂性
无服务器架构的缺点
1.第三方API问题:
- 安全问题
- 多租户问题
- 供应商控制
- 供应商锁定
由于 API 的实施而放弃系统控制也可能导致系统停机、功能减少、成本变化、意外限制和强制 API 升级。切换供应商也是一个非常复杂的问题。许多 API 使您的无服务器系统容易受到攻击,每个 API 都会增加安全实现的数量。
2.缺乏操作工具:厂商负责提供调试和监控工具。在无服务器架构中,由于用户请求由不透明的负载均衡器(如 AWS API 网关)处理,因此缺少访问各种参数以确定根本原因的灵活性。
3.架构复杂性:它们很复杂,需要很长时间才能构建。评估、实施和测试以及决定功能应该有多小需要花费大量时间。必须在函数数量和应用程序调用之间保持平衡。管理如此多的功能变得乏味,而忽略粒度会导致产生不必要的混乱。
4.网络:无服务器功能只能通过私有 API 访问。因此,您无法通过通常的 IP 访问它们。
5.超时:由于 300 秒的超时限制与无服务器系统相关,过于复杂和耗时的功能不适合。由于这种限制,某些任务也被发现是不可能的。因此,无服务器系统对于执行时间可变的应用程序变得不可用。
如果系统真的需要无服务器架构,则可以实现它。进行详细研究以了解它如何适合您的操作。无服务器系统仍处于初期阶段,遵循无服务器系统的组织应考虑过度依赖第三方 API 以及架构复杂性的困难。