Skip to content

Latest commit

 

History

History
76 lines (60 loc) · 5 KB

File metadata and controls

76 lines (60 loc) · 5 KB

Hyac 项目 - 未来功能与改进

本文档概述了 Hyac 项目的未来发展路线图,重点是增强其架构、开发者体验、安全性和可伸缩性。

1. 架构增强

1.1. 多租户支持

  • 目标: 实现完整的租户隔离,允许不同用户或团队在共享的基础设施上安全地运行其应用。
  • 实现:
    • 数据隔离: 在数据库层面为每个租户(用户/团队)的数据进行逻辑或物理隔离。
    • 网络隔离: 确保一个租户的容器化应用无法访问另一个租户的网络资源。
    • 资源配额: 为每个租户设置 CPU、内存、存储和函数执行次数的配额。

1.2. 运行时管理

  • 目标: 允许管理员动态地添加、配置和管理新的函数运行时环境。
  • 实现:
    • 可插拔运行时: 设计一个标准接口,使集成新的运行时(如 Node.js, Deno, Java)变得简单。
    • 版本控制: 支持同一语言的多个版本(例如 Python 3.9, 3.10, 3.11)。

2. 开发者体验 (DX) 改进

2.1. 编辑器中上下文感知的智能提示

  • 当前限制: 前端 CodeMirror 编辑器缺少对 context 对象的代码补全,因为上下文是在后端“魔法般”注入的。
  • 提议功能: 在用户编辑器中直接提供完整的、上下文感知的智能提示。
    • 实现:
      • 前端: 在内存中动态地将一个虚拟“垫片”文件预置到用户代码之前。这个对用户不可见的垫片将包含 import 语句和类型定义 (例如, from app.context import FunctionContext)。
      • LSP: 语言服务器将接收这个完整的代码块,从而能够分析上下文并提供准确的自动补全。
      • 后端: 执行引擎同样会在 exec 之前预置垫片,以确保运行时环境与开发环境匹配。
    • 优点:
      • 无缝且专业的开发体验。
      • 减少错误并提高开发人员的生产力。

3. 安全加固

3.1. 用户代码执行沙箱

  • 当前限制: 用户代码直接通过 exec 执行,构成重大安全风险。恶意代码可能会危及主机系统。
  • 提议功能: 在安全的、隔离的沙箱中执行所有用户提供的代码。
    • 实现选项:
      • gVisor/Firecracker (推荐): 利用轻量级虚拟化技术为每次函数执行创建一个安全的沙箱。这提供了强大的内核级隔离。
      • 受限的 __builtins__: 作为基线措施,在 exec 范围内严格限制可用的内置函数,以防止访问文件系统 (open)、网络或其他敏感 API。
      • WebAssembly (WASM) 运行时: 探索将用户 Python 代码编译为 WASM,并在安全的 WASM 运行时中运行,以实现最大程度的隔离。
    • 优点:
      • 防止安全漏洞和数据泄露。
      • 确保平台的稳定性和完整性。

4. 可伸缩性与性能

4.1. 演进到分布式任务队列

  • 当前架构: 系统已利用 FastAPI 的能力,以非阻塞方式执行函数。无论是原生 async 函数还是在线程池中运行的 def 同步函数,都不会阻塞主事件循环。
  • 未来挑战: 对于需要长时间运行(超过标准 HTTP 超时)、需要重试机制或需要与主应用生命周期解耦的复杂任务,当前基于请求-响应的模式存在局限性。
  • 提议功能: 引入专用的分布式任务队列系统,将函数执行模式从“即时执行”演进为“后台任务”。
    • 实现:
      • 集成消息队列系统 (例如, Celery 与 Redis/RabbitMQ)。
      • 对于标记为“后台任务”的函数,API 将接收请求,将任务分派到队列,并立即返回一个任务 ID。
      • 一个可独立扩展的 Worker 进程池将从队列中消费任务并执行代码。
      • 提供 API 端点,允许客户端使用任务 ID 查询任务的状态、进度和结果。
    • 优点:
      • 支持长时任务: 可靠地执行超过 Web 请求超时限制的任务。
      • 增强系统韧性: 支持自动重试和错误处理,提高任务成功率。
      • 更优的资源隔离: 将计算密集型任务从 API 服务器彻底分离,可独立扩展 Worker,不影响 API 响应能力。
      • 异步通信: 为未来实现 Webhooks 或其他事件驱动架构奠定基础。

5. 平台与应用功能

5.1. 平台级功能

  • 多用户与权限管理: 引入角色(管理员、开发者),实现精细化的权限控制与协同开发。
  • 平台监控仪表盘: 提供全局的系统状态、资源使用率和审计日志。
  • 系统级集成配置: 提供统一的界面来配置全局的 SMTP、对象存储和第三方通知服务。

5.2. 应用级功能

  • 自定义域名与高级访问控制: 支持用户绑定自己的域名,并提供 IP 白名单/黑名单功能。
  • 依赖分析与安全扫描: 集成工具以检测依赖冲突和已知的安全漏洞。
  • 函数模板市场: 创建一个社区驱动的模板市场,用户可以分享和使用预构建的函数模板。