无服务器是当前软件架构模式中的热门话题之一,像许多软件工程中的其他术语或趋势一样,无服务器也没有一个明确的定义,所以在这篇文章中我们会简单介绍一下无服务器的基本概念,并围绕无服务器的几个争论点展开讨论。
什么是无服务器?
根据MartinFowler.com的定义,无服务器体系结构是指主要依赖于第三方服务(称为后端即服务或"BaaS")的应用程序或在临时容器中运行的自定义代码(功能即服务或"FaaS")。
如上说述,如果你没有维护或管理自己的基础架构来运行应用程序,并根据使用情况付费(或者不付费),同时从供应商那里自动获得所需级别的高可用性、可扩展性和容错性,那么你就正在运行一个无服务器的应用程序。作为在无服务器环境中运行应用程序的所有者,你可以将所有的精力放在应用程序业务逻辑上,而不必担心其运行的基础架构以及应用程序周围的其他非功能性需求。
无服务器只是炒作?
如果你是无服务器的新手,并且在考虑将其作为架构,那么这就会成为你需要面对的问题之一。没错儿,无服务器是现在的热门话题,但是综合了之前和之后的发展,我个人认为无服务器并不是一个短期内的炒作,至少在3-5年不是,围绕无服务器的技术或许会被改变、替换,但是无服务器的概念不会。
技术层面如何向无服务器发展?
俗话说得好,观往知来、知古鉴今,所以在解释无服务器功能如何强大之前,我们先来看看它是如何在过去几年演变的:
1989 - 1991年 - Sir Tim Berners-Lee发明了万维网
1991 - 1995年 - 裸机时代
1995年 web hosting
1999年 - 软件即服务(SaaS)概念由Salesforce引入
2001年 - VMWare发布ESXi,"服务器虚拟化"成为了一件大事
2002-2006-AWS提出IaaS,人们开始谈论"云计算"
2009年 Heroku提出"平台即服务"(PaaS)
2011年 - Envolve / Firebase,实时数据库即服务
2012年 - Parse.com和第一个后端即服务(BaaS)
2013年 - Docker,"容器比虚拟机好"
2013-2015 - Kubernetes / Swarm / Nomad / CoreOs(containers at scale)
2014年 - AWS Lambda推出(FaaS)
AWS lambda诞生了,无服务器这个词与FaaS一起出现在舞台上,虽然大多数人认为Lambda是无服务器的起点,但是containerization 将无服务器迁移推向第一个高潮,随着containerization的出现,全球领先的云服务提供商开始向客户提供"付费即用"的概念以及最需要的非功能性需求,支持使用其基础架构运营业务。