One Comment

  1. hryang

    Serverless 是一个技术趋势,它本身是中立的。不同的厂商有不同的产品策略和实现方式。所以当我们谈 Serverless 的问题时,一定要区分这是 Serverless 本质的问题,还是厂商的产品策略和实现方式带来的问题。从另一个角度补充一些看法,供参考。

    1. 用冷启动来证明 Serverless 不适合 Web server 有待商榷。事实上,Web 应用是 Serverless 使用最广泛的场景。各种云厂商在这个领域里争先恐后的推出新的 Serverless 产品,Google Cloud Run,AWS App Runner,Azure Contaienr Apps,阿里云的函数计算&SAE等等。今天所有的 Serverless 产品都提供了 provision instance 之类的功能来帮助用户解决冷启动的问题。从现状来看,如果应用本身就是启动慢(例如 Java 类应用),那没有必要一步到位的要求实例缩容到0,预留少量实例,再借助 Serverless 的自动伸缩 + 流量管理能力也不错啊?相比于冷启动,很多开发者更看重可观测性,调试工具,平滑迁移,数据库连接管理等方面的能力。从长远来看,无论是 Serverless 平台(bear metal 服务器,micro vm,代码包/镜像缓存等等),还是语言或者框架(例如 Spring Native 项目),整个业界都在往更快速启动,让资源使用更贴合应用实际负载的方向演进。所以遇到冷启动问题,先看看对应云产品是否提供了解决方案。Azure Function 冷启动要 6 秒,在其他云厂商的产品可能只要 300 ms(取决于使用什么语言,应用如何实现)。如果还达不到要求,那可以使用预留实例等更传统的方式。

    2. Vendor Lockin 的第一层锁,是指不同厂商提供的事件源云服务的 API 和模型,以及事件集成方式各不相同。这不是 Serverless 带来的锁定,在 AWS 上使用 EventBridge 触发运行在虚拟机或者容器上的应用,和在 Azure 上使用 EventGrid 触发运行在虚拟机或者容器上的应用肯定是不同的。此外,Azure EventGrid 和阿里云 EventBridge 也支持 cncf CloudEvents v1.0 标准。厂商拥抱开放标准,无论是对容器化还是 Serverless 应用都有很大价值。

    3. Vendor Lockin 的第二层锁,是指不同厂商提供的 Serverless 计算的函数接口以及和其他服务交互的方式不一样。同理,这也不是 Serverless 带来的锁定。在虚拟机或者容器上运行的应用调用 AWS 和 Azure 的消息队列服务要使用不同的 SDK,调用方式肯定也是不一致的。

    4. Vendor Lockin 的第三层锁,是指不同厂商提供的 Serverless 计算编程模型不一样,这体现了供应商希望开发者以什么样的方式去设计和编写 Serverless 应用。不同的云服务商产品策略和导向是不同的。和 AWS 不同,有些云服务商非常注重和开源生态的融合。例如应用日志除了被云服务商自有服务收集,也可以方便的投递到 Kafka 等成熟的开源产品中,可观测采用 open telemetry 标准等等。同样的,Serverless 应用或者容器化应用,可以搭配使用开源的软件,也可以使用云服务商自有的全托管服务。微软或者 Google 的 Serverless 计算平台也是基于开源软件构建的。所以理论上,只要开发者愿意承担对应的复杂度,那么可以根据相应的开源软件自己搭建 Serverless 平台,减小供应商锁定的风险。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据