作者 | SolarWinds首席极客 Chrystal Taylor
供稿 | SolarWinds
随着IT行业的快速发展和网络带宽的不断消耗,人们对计算和数字存储的需求也越来越大。在此背景下,云计算技术迅速发展,满足了从大型企业到个人用户对高性能计算能力的应用需求。艾媒咨询数据显示,2021年中国云计算市场规模达到2330.6亿元,预计2022年将达到2983. 4亿元。
无服务器架构的兴起与云计算技术的进一步发展密切相关。作为当今的行业热点之一,无服务器架构正在市场上迅速发展。
但无服务器架构这个说法容易造成一些误解。这个术语的字面意思是应用不在任何服务器上运行,而实际上并非如此。无服务器架构指的是谷歌、亚马逊网络服务(AWS)或微软Azure等云服务提供商提供和管理后端基础设施,这种方法有其自身的优点和缺点。无服务器架构有时也被称为功能即服务(FaaS)或无服务器计算。Kubernetes等服务现在已经十分流行,许多公司都花钱把自己的应用托管在其他服务器上。
无服务器架构的优点
无服务器架构的优点之一是企业机构不用管理运行应用的后端基础设施。例如开发人员不必担心容量规划问题,因为有人会为他们解决。云服务提供商提供自动化的无服务器架构,这种架构可以在必要时提供更多的资源或缩小规模,这就又为开发人员减少了一项待办任务。开发人员不必负责维护后端基础设施,包括配置和扩展等,可以将更多的时间用于其他更有意义的项目。
这种弹性为企业机构解决了容量规划等掌管服务器时所需要担心的问题。而且企业不负责后端基础设施,因此也不需要在服务器崩溃或出错时进行修复。云服务提供商所提供的自动扩展和调试功能,帮助无服务器架构成为一个值得投资的项目。
无服务器架构的另一个优点是成本,可能是一个物有所值的选择。节省团队的时间就是节省资金,团队花在后端基础设施维护上的时间越少,企业减少的成本就越多。此外,使用无服务器架构的企业不需要一个完整的团队来管理服务器,因此开发人员不必是服务器专家,这使企业机构的招聘条件变得更加宽松。
无服务器架构的缺点
虽然无服务器架构有许多优点,但在将一切迁移到云之前,企业也应该考虑这种架构的一些缺点。并非所有经过开发流程的应用都适合成为无服务器应用。
由于无服务器架构的性质,在上面运行的应用无法被监控。服务器不属于自己,企业机构无法完整地看到上面所运行的一切,也就更加难以衡量一个应用的性能。同时,他们也无法轻易看到性能问题的发展趋势,或主动预防问题。比方说,因为不负责后端,企业机构无法深入研究调查日志。对于企业机构来说,转移这项责任在某些方面可能是件好事,但不好的方面是他们无法看到关键性能分析,也无法了解服务器上的情况究竟如何。
无服务器架构的另一个潜在缺点是安全问题。由于受攻击面大于企业通常使用的内部服务器,无服务器应用可能会面临更大的安全风险。同样,这也取决于云服务提供商和第三方服务所采取的措施与企业安全能力的比较结果。如果企业机构认为自己的服务器安全性不如AWS Lambda,那么与云供应商合作更加明智。
资源限制也可能是无服务器架构的缺点之一。虽然无服务器架构具有弹性,可以通过加速和减速来为应用分配资源,但它是有限制的。如果一家企业机构的应用大到超过这些限制,那么可能就不适合使用无服务器架构。
某些应用在设计上不适合成为无服务器应用,所以无服务器架构并非适合每一个用例。如果根据应用所使用的资源来定价,有些应用会不断消耗所获得的计算资源,使无服务器架构的成本激增。此类应用会占用越来越多的资源,而企业机构必须为此买单。
无服务器架构的应用场景
无服务器架构的主要应用场景之一,是组织有一个被设计为运行代码和执行触发型任务的应用程序。如果应用中的任务需要由用户的活动触发,那么企业机构往往会将该应用放在无服务器架构上。由于该应用比较被动,必须在触发事件发生后才会运行,所以不会占用超过企业机构承受范围的资源。这些“设定后就可以忘记”的应用最适合托管在无服务器架构上。
此外,无服务器架构也适用于持续集成/持续交付(CI/CD)项目。开发人员能够在生产中不断更新代码,不必担心更新服务器,因此无服务器架构非常适合这类项目。这种实时更新代码的能力至关重要。
无服务器架构的未来发展趋势
技术专家一直在寻找新的流程改进方法,无服务器架构也不例外。无服务器架构目前还是一种小众的方法,但它有继续发展的潜力。我们现在所拥有的会在未来变得更好,无服务器架构的可预测性和安全性希望会在未来得到改善。
无服务器架构还需要解决可靠性问题。目前,追求可靠性的企业机构对无服务器架构望而却步,他们更倾向于传统的本地服务器、云托管(但不自有)解决方案或微服务,这样可以对所发生的事情拥有更多的控制权。
由于开发者社群越来越多地转向CI/CD管道和开发运维,无服务器架构将继续成为一个重要的工具。开发人员一直在寻找避免因升级而停机的方法,而无服务器架构能够帮助他们实现这一目标。随着这一趋势的持续,无服务器架构将继续满足需求,而且可能会随着开发者社群的改变而继续发展。目前仍处于无服务器架构发展的初级阶段,虽然也许无法在短期内看到这项技术有任何进展,但我们仍保持信心。