热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

酷家乐ServerlessFaaS产品实践探索

本文探讨了酷家乐在ServerlessFaaS领域的实践与经验,重点介绍了FaaS平台的构建、业务收益及未来发展方向。
在过去几年中,Serverless 成为了云计算领域的一大热点,其提供的弹性伸缩、快速开发和无运维等特性吸引了众多技术团队的关注。酷家乐技术团队自2019年底开始探索并实施基于 Knative 的函数计算基础设施,同时自主研发了一款以 Node.js 为主要语言的 FaaS 产品,旨在提升公司内部业务的开发效率。

### FaaS 平台的理解
随着云计算技术的发展,服务模型经历了从 IaaS 到 CaaS、PaaS,再到 FaaS 的演变。FaaS 作为一种新兴的服务模型,以函数的形式提供服务,成为当前 Serverless 架构的主要表现形式。在这种模型下,用户只需关注函数逻辑的编写,无需关心复杂的基础设施建设和应用维护。

### FaaS 带来的业务收益
FaaS 的最大优势在于能够快速启动业务,降低运维和维护的成本。传统的业务开发模式存在多种挑战,如技术栈不统一、服务端知识壁垒高、框架设计复杂等。通过 FaaS,这些问题得以有效解决:
- 统一了业务组间的实现方式,加快了业务切换速度
- 消除了服务端技术障碍,允许使用熟悉的语言进行业务逻辑开发
- 提供了“无框架”概念,用户只需了解函数的输入和输出
- 提供了一站式的部署、发布和监控服务,提升了系统的稳定性和可靠性

### 酷家乐 FaaS 平台的落地方式
#### FaaS 基础设施
经过对比分析,酷家乐选择了 Kubernetes + Knative + Istio 的组合来搭建应用级 Serverless 平台。该平台分为用户层和平台层,其中用户层提供了 serverless-cli 工具和管理平台,支持本地开发、调试和发布等功能;平台层则负责请求转发、函数运行时管理和资源编排。

#### FaaS 前台架构
酷家乐 FaaS 前台架构支持多函数的承载,允许在一个代码仓库中管理多个函数,支持独立部署、聚合部署和混合部署等多种部署方式。这种设计不仅提高了代码的组织性和管理效率,还适应了不同业务场景的需求。

#### FaaS 研发流程
与传统研发模式相比,FaaS 模式简化了技术选型和资源申请的步骤,使开发者能够更加专注于业务逻辑的实现。通过 faas.yml 文件,用户可以灵活配置函数的路由、部署选项和公共插件。

### 酷家乐 FaaS 平台的落地场景
目前,酷家乐已成功落地40多个在线函数服务,主要应用于创新和边缘业务。这些应用场景主要包括在线 API 聚合和离线计算任务,Node.js 语言因其灵活性和易用性成为了主要的开发语言。

### FaaS 与传统应用的思考
尽管 FaaS 带来了许多优势,但也存在一些挑战。例如,FaaS 可能会增加系统的远程调用次数,导致资源消耗增加。因此,在选择 FaaS 时,需要综合考虑业务规模、资源成本、跨组合作和容错能力等因素。

### 未来酷家乐 FaaS 实践方向
酷家乐看好 SFF(Serverless for Frontend)架构,认为它可以显著提升前端开发的效率,减少前后端的沟通成本。未来,酷家乐将在 SFF 方向上进行更多的探索和实践,进一步优化内部业务的开发流程。

[原文链接](https://tech.kujiale.com/kujiale-serverless-faas-experience/)
推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文将介绍由密歇根大学Charles Severance教授主讲的顶级Python入门系列课程,该课程广受好评,被誉为Python学习的最佳选择。通过生动有趣的教学方式,帮助初学者轻松掌握编程基础。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 本文深入探讨了 Java 编程语言的基础,特别是其跨平台特性和 JVM 的工作原理。通过介绍 Java 的发展历史和生态系统,帮助初学者理解如何编写并运行第一个 Java 程序。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 异常要理解Java异常处理是如何工作的,需要掌握一下三种异常类型:检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常ÿ ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文详细介绍了Java中的注解功能,包括如何定义注解类型、设置注解的应用范围及生命周期,并通过具体示例展示了如何利用反射机制访问注解信息。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
author-avatar
DREAM2502930781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有