无服务器作为一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。

无服务器方案是将服务器从应用开发中剥离出来,由云提供商负责置备、维护和扩展服务器基础架构等例行工作,开发人员只需要简单地将代码打包到容器中进行部署。

部署之后,无服务器应用即可响应需求,并根据需要自动扩容。因为无服务器产品是通过事件驱动执行模型来按需计量,所以当无服务器功能闲置时,不会产生费用。

如今,虽然有很多无服务器产品可供我们选择,但要选出最合适的却并不容易。这是因为不同的无服务器在实际操作上会有差异,例如,无服务器功能的调用方式和计费方式。

这篇文章会对比三大云服务提供商的无服务器产品:亚马逊网络服务、谷歌云和微软Azure。我们会根据成本、集成的难易程度、可集成服务的数量和行业采用指标这四项数据确定最牛的产品。

AWS Lambda发布于2014年,是第一个可用的无服务器产品,它负责集成AWS产品的触发器,能执行简单的HTTP驱动任务。许多公司认为,选择AWS意味着基础设施的位置保持不变,因为这些公司的选择,AWS运行着高达40%的云市场。

Google Cloud Functions在 Google Cloud 平台上经过漫长的测试期,终于在2018年7月24日全面上市。它与AWS一样,有许多触发器可以使用。 Google Cloud Functions,可以完成从简单的 HTTP 触发器到由 Cloud Scheduler 和 Cloud Tasks 驱动的工作流分配的任务。

2017年,Microsoft Azure Functions发布。在测试期间,它逐渐加强与 Azure Functions 与 Microsoft Azure 平台的联系。微软的产品借助广泛的注释和文档,会为我们正在运行的版本提供触发器、输入源或输出源等服务。

微软battle谷歌

从功能来看,Microsoft Azure Functions 与 Google Cloud Functions都能提供可扩展的函数基础架构和满足无服务器应用程序的大容量。

细节上孰优孰劣,我们可以从函数执行时间、设置/集成的难易程度和定价来看。

首先,大多数公共云服务基础架构的执行时间是相近的。Microsoft Azure Functions 和 Google Cloud Functions 本就有相近的冷启动时间和成本,而自2017年以后,两者的差距越来越小。

其次,Google Cloud Functions 与 Microsoft Azure Functions 的优势在于方便设置。虽然微软Azure功能在配置新项目时具有很大的灵活性,但谷歌的用户界面展示了更直观的用户界面,并提供了更容易理解的选项。

最后看定价,微软和谷歌根据所使用的资源收取的费用相近,微软和谷歌每GB/秒和GHz-sec的费用都在0.000016美元左右。当然他们也慷慨保留着免费层,这足以满足业余开发人员的需求。

平台的选择取决于消费获得的服务。除非我们采用多云方式,否则面对大同小异的服务集成,我们做出恰当的选择十分简单。

比较微软和AWS

Microsoft Azure Functions 与 AWS Lambda的主要功能是为用户提供不同的机器配置,以此管理用户应用程序的全部资源。

这两种服务的成本相近都是每 GB 秒 0.000016 美元到 0.000017 美元),在操作基础上也没有太大的区别。

在用户界面方面,微软的优势是灵活的配置文件格式,让用户可以更好地控制运行函数的容器,使用效果超过 AWS 中的 Lambda 函数。

值得一提的是,AWS Lambda 作为游戏中年龄最大的玩家,具有许多 Microsoft Azure 无法比拟的优势。

虽然函数执行的时间和冷启动延迟相差不大,但平台工具中年龄大的比年龄小的成熟很多。预置并发和AWS SAM等工具提供了一层配置和复杂性管理,可大大减轻使用无服务器应用程序的挑战,无需额外成本。

总体来说,两者没有太大差距。

比较谷歌和AWS

通过上面的比较我们得出一个结论:三个平台在执行环境、三级服务集成和成本三项标准势均力敌。于是我们决定从生态系统的次要特征上找出差距。

这次是 Google Cloud Functions 与 AWS Lambda 的较量。虽然 Google 的配置流程比 AWS 的好,但是这也让用户只停留在了用户界面上。

而 AWS Lambda 利用 CloudFormation 等工具为开发人员提供了采用基础设施的选项,大大提高了应用程序架构的所有权和可维护性。

我们再从第三方支持来看,AWS 拥有庞大的用户群,其生态系统中的第三方工具的类型和种类比 Google Cloud 多得多。

如果没有足够的第三方工具,用户的仪表板和监控工作将仅限于提供商堆栈中可用的工具,其中一些将难以破译。

像Thundra这样的第三方(目前仅在 AWS 上工作)在这些提供商的接口之上添加了附加层,填补了信息流中的漏洞,解决了用户需要自己修复接口的麻烦。

推荐: AWS

根据以上数据,我们发现大多数无服务器云提供商都没有太大差距。如果用户的应用程序已经在 Microsoft Azure 上运行,那么在构建无服务器功能时,将 Azure 功能视为替换的首选将是有意义的。

用户如果可以灵活选择无服务器功能的的应用程序,我们建议优先选择 AWS Lambda 。因为在可用性方面,与微软和谷歌相比,AWS Lambda 的成熟度和周边生态系统具有明显优势,第三方生态系统将其置于其他生态系统之上。

公共云上的无服务器对决

用户使用 AWS 可以利用 Thundra 等工具全面了解无服务器应用程序,使应用程序提供超出本机仪表板的洞察力。

AWS凭借领先的市场份额,以及与 Route 53、API Gateway 和 S3 等服务的轻松集成,成为了第三方生态系统部门的大赢家。未来它还会继续帮助用户的应用程序可用性更上一层楼。

雷锋网编译自:https://thenewstack.io/serverless-on-public-cloud-the-ultimate-showdown/