当谈到 2019 年的后端 web 开发,这一领域的风景可谓十分壮阔,从 VM 到容器,再到无服务器功能,每个公司都有自己的优势。许多大型银行、政府机构和老牌公司仍然依赖于较老的技术来运行它们的应用程序。而优步(Uber)、网飞(Netflix)和 Monzo 银行等较年轻的公司受益于容器化和微服务等新技术,它们的发展速度更快、效率更高。有趣的是,如今 Netflix 约占所有互联网流量的 15%,超越了任何其他视频流媒体服务的流量,因此这家公司在应用程序规模化设计和运营方面处于技术最前沿也就不足为奇了。
把时间花在真正重要的事情上
可悲的事实是,很多时候技术并不重要。至少对用户来说不是这样。用户根本不关心应用程序的后端到底是用 Java、Go 还是 NodeJS 编程语言编写的。他们也不关心它是使用容器技术还是无服务器架构,在虚拟机上还是实体机上运行。用户只关心他们的用户体验,这个应用对用户来说有价值吗?它好用吗?它好看吗?
在科技创业公司的早期阶段,人们一直在测试新的假设。一个新的理论或想法提出来,需要为之进行快速测试,以验证你正在构建的东西是有用的。构建和测试特性的速度越快,反馈循环就会发生得越迅速,从而就越容易准确地找到用户想从你的产品中获得什么。
当构建新产品的团队非常小时,对于创业公司的时间利用而言,管理复杂的基础设施不太可能是高效的方式。任何对于应用程序进行管理而不是构建的工作,统统都算作是产品开发的开销。然而,一个重要的提醒是,请牢牢记住,持续集成/持续部署(CI/CD)非常有用。这些必要的基础设施能帮助你走得更快。
使用无服务器架构,你可以专注于应用程序的逻辑。网站或移动 APP 上的每个功能都转换为一个或多个 API 调用,这样就提供了一个或多个无服务器式的功能。假设每个无服务器的功能只负责一个特定的 API 调用,那么代码可以比相应的微服务或单片机实现要简单得多。我使用无服务器架构所做的大部分工作几乎没有使用任何库。
你的应用程序突然产生了大量流量?不用担心,无服务器技术有现成可用的解决方案。无需管理,服务器或容器就能完成对流量的自适应扩展。你还可以选择与随需应变的数据库进行集成,如 AWS DynamoDB 或 MongoDB Stitch,它们也可以随需自动伸缩。
刚开始不用付费
无服务器架构的一个重要卖点是,可以按用户请求数量付费。与 VM 技术不同的是,你永远不会在服务空闲或没有用户使用时为基础设施付费。然而,重要的是,要正确地使用该技术,不要将之用于长时间运行、CPU 密集型的服务,因为如果这样做,将比只运行 VM 实例,比如 AWS EC2,花费更多。如果你以恒定的速率拥有较高的网络流量,当然你还是可以选择使用无服务器技术并支付更多的费用,但显然 EC2 的性价比会更高。
那么潜在的问题是什么呢?
无服务器架构也有其缺点,但完全是用例方面的相关问题。只要以正确的方式使用它,你就可以从多个方面获益——节约巨额的成本、缩短上市时间,以及减少开销中。
就像那句俗语一样,请不要用螺丝刀把钉子钉进墙上。
《Register》杂志引用了加州大学伯克利分校的一些研究人员对 AWS Lambda 进行的一些测试,其中之一是培训一个机器学习模型,并将其与 AWS EC2 进行比较。“在 EC2 上,执行该任务的成本比 Lambda 低 57 倍,而且 EC2 的延迟性能要好得多。” 对,所以让我们用无服务器技术来做它擅长的事情,即基于事件驱动的服务。
在设计无服务器架构的应用程序时,尽可能避免使用大型库是非常重要的。一旦使用大型服务,冷启动的时间可能会急剧增加,这就会对用户的体验产生负面影响。
如果你在科技领域,你可能听说过这个词——厂商锁定。随着无服务器架构得到越来越广泛的应用,许多云提供商已经发布了自己版本的无服务器功能。像无服务器这样的技术框架,尝试从云提供商抽离出来,并云提供商之间的数据迁移更加容易。有许多像 knative 和 kubeless 这样的无服务器解决方案,它们允许你在任何云甚至你自己的基础设施上使用 kubernetes 运行无服务器工作负载。
结语
简而言之,计算的新时代已经来临。无服务器架构让你专注于构建产品,而不是管理服务器。对于小型创业企业来说,无论是在产品上市速度还是成本节约方面,都有巨大的益处。
作者介绍:
Aidan Hallett,技术顾问
英文原文:
Why serverless is the future for small startups
评论