作者|刘尚奇
最近一则IT行业的新闻引起了广泛传播,标题非常引人注目:“从微服务转为单体架构,成本降低 90%”。
新闻报道了亚马逊Prime Video团队的案例,他们通过将一个监控系统从基于AWS Lambda的无服务器架构迁移到传统的单体架构,大幅度降低了基础设施成本。
图片来源网络
这则新闻引起轰动的原因可能有几个方面。首先,"90%成本降低"在当前注重成本效益的时代引起了许多行业的共鸣。在宏观经济不确定性的背景下,许多IT组织已将工作重心从技术创新转向了降低运营成本。
其次,该案例讲述了从AWS Lambda架构迁移出去的过程。要知道,AWS最初推出Lambda和无服务器架构时,强调的卖点就是降低计算成本,然而在这个案例中,Lambda的成本竟然不如更简单的单体架构。最具讽刺意味的是,这个案例是由亚马逊自己的Prime Video团队发布的,宛如大水冲了龙王庙。
云计算领域的先驱,37signals的CTO DHH也发表文章嘲笑,连亚马逊自己都不知道如何正确地使用无服务器架构和微服务。
图片来源网络
关于AWS Lambda和无服务器架构,Thoughtworks技术雷达早在2015年就开始追踪和评估其发展,到2016年将其评级从评估提升为试验,然而直到2017年后,该评级一直未能提升到采纳环。也就是说,我们认为AWS Lambda和无服务器架构已具备生产级别的经验,但尚未成熟到默认使用的程度。
AWS Lambda的潜力和困境
AWS Lambda最初的诞生具备了巨大的潜力和颠覆性。在此之前,云服务提供的计算抽象仍然是粗粒度的IaaS和PaaS服务。AWS Lambda允许开发者将函数级别的计算单元部署和托管在云平台上。这极大地降低了计算资源的粒度,增加了计算的弹性。
AWS Lambda提供的降本增效价值主张也非常合理:传统的云计算服务需要按照整个应用级别进行部署和托管,占用更多的资源,而最低计费单位通常是按天计费。而AWS Lambda的计费则根据函数调用的次数和执行时间进行计费,没有最低计费时间的限制。也就是说,如果你的代码只执行了100毫秒,那么只按照100毫秒进行计费,实现真正的按需收费。
这项技术看起来确实是一项具有跨时代意义的云计算技术。首先,相较于传统的IaaS和PaaS,它更为简单,程序员无需进行云服务器的配置和管理,只需编写和部署代码即可。
其次,由于计算的颗粒度在函数级别,使得Lambda的云服务更具弹性,当流量增加时,无需扩容整个应用,只需对高频调用的函数进行自动扩容。最后,按需使用理论上更为成本有效。尽管技术人员清楚,与普通应用进程内的函数调用相比,AWS Lambda的函数调用开销更大,但这是局部优化与全局优化的对比,如果能实现全局层面的函数调用按需计费,理论上可以实现整体成本的降低。