赞
踩
Serverless 圈内俗称为“无服务器架构”,Serverless 不是具体的一个编程框架、类库或者工具。简单来说,Serverless 是一种软件系统架构思想和方法,它的核心思想是用户无须关注支撑应用服务运行的底层主机。这种架构的思想和方法将对未来软件应用的设计、开发和运营产生深远的影响。
有据可查的最早提出Serverless概念的是Ken Fromm[1]在2012年他的一篇博客[2],他当时是iron.io的VP。本文将原文翻译过来,了解一下他当时前瞻的理念,以飨读者。
虽说当下云计算已经逐渐发展壮大,但云计算的理念基本上还是围绕着服务器运转。相信这种局面不会长久,云应用最终会进入无服务世界,它将给软件应用的创建和分发带来巨大的影响。
在云计算之前的日子里,开发者想构建一个互联网应用,首先想到的是服务器。他们需要考虑服务器的预算,计划着如何连接到互联网,风火水电等等。即便是托管服务器厂商帮助解决了机架、网络、制冷、安全等核心资源。开发者还需要考虑系统安装、集群构建、服务器的维护等各种各样的问题,总体成本很高。
自从进入了云计算时代,我们看到了重大的计算范式迁移。可靠的云计算IaaS架构,省去了开发者大量对服务器的管理和维护成本,从而给软件行业提供了巨大的成本优化,并且计算资源灵活可扩展。云基础设施公司,如AWS、Rackspace及其他公司基本上能够提供无限虚机的供给。而开发者只需要申请几台虚机,部署上所需的操作系统及自己的应用,就可以服务客户了。这比起云计算之前的服务器管理维护可是省心多了。
因此,整体的服务器拥有成本大幅下降。在去年夏天的一场黑客松比赛里,一位连续创业者回忆起,他第一家公司需要花费几十万美元来购买服务器,更不要说大量的管理维护成本了。而他的第二家公司虽说是按年来租赁服务器,但还是需要投入大量的管理运维成本。他的第三家公司是按月来租赁服务器,而现在他的公司使用云计算按小时租用服务器,而且完全是按需来随租随用。
如上图所示,在Internet 1.0时代,甚至在Web 2.0初期,计算单元的供给周期是以年或者月为单位。虽说按照摩尔定律,CPU速度的提高,以及服务器和内存成本逐步下降,但计算单元的供给并没有按摩尔定律同步发生,近20年后,企业才能在线获取每小时几美分的,按小时租用的,可达数百核的虚机系统。以小时为单位衡量服务器的使用是基于业务来考虑的,例如Web应用程序的开发者通常会以每小时为单位查看系统的负载,并根据这些负载计划是否进行计算资源横向扩展,他们可以在一天中的特定高负载时间自动扩展或配置更多服务器。
单体应用(monolithic application)是构建在Ruby on Rails、Python和Django或其他Web应用程序框架上的单体应用程序,而这一传统的开发模式正让位于在云中构建松散耦合组件的分布式系统。
越来越多的应用程序,例如移动应用或物联网应用,并不是基于传统的客户端和服务器的架构,而是前端应用程序和后端数据存储,运行时应用程序通常用于处理所有输入,而越来越多的计算处理放在应用程序之外的云端来异步进行。例如,如果开发者需要通过在数百个零售网站上实时监控价格、购买、查看、点击、签到等各类指标,来构建一个个性化推荐的网站,那它核心的数据处理就必须放到云端上来进行,前端应用程序只是接受和传送交互数据的工具而已。
这种不断变化的趋势并没有很好地反映到当前的应用程序和服务器的世界中。在分布式系统里,开发者需要聚焦的是任务和进程,而不是应用和服务器,他们以分钟和秒来衡量可使用的计算单元,而不是小时。简而言之,他们的想法正变得无服务器(Serverless)。
“无服务器”一词并不意味着不再需要服务器,而是意味着开发人员不再需要考虑服务器了。让服务提供商越来越多地承担管理服务器、数据存储和其他基础设施资源的责任,各类计算资源被当作服务来使用。同时考虑到其他应用程序可能使用到的服务,如任务处理、消息队列、SMTP 服务器、支付服务等等,这样的托管服务才会看起来像未来计算的模样。
回顾一下电力发展的历史,从牛驱动的水泵到水流驱动的水磨,再到个别的燃煤发电小作坊,最后发展到工业规模的发电厂和输电线路,最终的电力工业化才是改变了近代工业和世界。它极大地降低了建筑和制造成本,改变了城市和家庭,并迎来了新的发明、服务和企业。将电灯、收音机、电视、缝纫机、车床、电钻插入到墙壁插座的想法从闻所未闻转变为理所当然,都是时代的进步。
同样,通过使用弹性计算服务,开发人员无需根据当前或预期负载来配置计算资源,也无需花费大量精力来规划新项目的基础设施。正如虚拟机使得启动服务器变得更容易一样,创建新应用程序也同样变得更容易,弹性按需计算服务也使业务增长变得简单。
将计算资源作为服务使用意味着开发人员无需为他们未使用的资源付费。无论生产中的项目数量如何,使用托管服务的开发人员都不必为管理资源而操心。
走向无服务器可以让开发人员将他们的注意力从服务器级别转移到任务(task)级别。无服务器解决方案通过消除后端基础架构的复杂性,让开发人员专注于他们的应用程序或系统需要做的事情。
就像当年的云计算一样,初创公司和独立开发人员是无服务器方法的最大拥护者。第一是因为他们的负担能力,其次无服务器快速扩展的能力,第三个是不必担心和他们的业务无关的事情。随着无服务技术的成熟和更多开发人员熟悉这种新方法,它将进入更大的组织。每个人都越来越清楚,计算的未来将是无服务器的。
编者按,以上超前的文字发生在10年前,值得我们思考。
【1】https://www.linkedin.com/in/kenfromm/
【2】
Why The Future Of Software And Apps Is Serverless - ReadWrite
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。