自动将逻辑和数据分发到边缘将为用户带来更低的网络延迟,而无需开发人员进行配置和扩展。无服务器服务无处不在。在无服务器产品中采用新的编程方式的驱动力有多种形式,包括应用程序托管平台、无服务器数据库、内容交付网络(CDN)、安全产品等。无服务器产品已经解决了配置、扩展和配置的低级问题,最后一个问题是分发。在这里,用于边缘计算的无服务器通过跨多个数据中心分布数据和计算提供了一种解决方案。无服务器边缘计算通过使计算更接近用户来减少网络延迟。无边缘服务器是近15年前从“基础设施即服务”开始的云计算架构演进的顶峰。这一演变的下一阶段将是进一步推动无服务器“构建块”的分布,并使它们更容易为开发人员所用。分层架构(1)基础设施即服务(IaaS)云计算革命始于基础设施即服务(IaaS)的出现。使用基础架构即服务(IaaS),企业可以将运行在内部基础架构上的业务转移到云平台上,并且只需为使用的存储容量和计算时间付费,无需安装或管理任何硬件或网络。基础设施即服务(IaaS)的运营成本乍一看似乎很高,但许多企业很快采用它,因为它可以提供更高水平的正常运行时间,而且购买和维护自己的基础设施的价格往往超过IaaS(IaaS))产品。最重要的优势是云计算省去了硬件维护和配置,让开发者可以专注于商业价值。(2)平台即服务(PaaS)随后,厂商将云计算技术更进一步,提供平台即服务。平台即服务(PaaS)解决方案不只是租用服务器,它还租用构建应用程序所需的一切。这不仅包括服务器,还包括操作系统、编程语言、数据库和数据库管理工具。基础设施即服务(IaaS)提供商让用户成为租用服务器的管理员,而平台即服务(PaaS)提供商接管服务器管理任务,例如软件安装或安全更新,并经常尝试预测代码的环境要求。平台即服务(PaaS)的目标是为企业提供一种部署其应用程序的简便方法。平台即服务(PaaS)比基础设施即服务(IaaS)更进一步,将开发人员从系统管理任务中解放出来,让他们专注于最重要的应用程序。AWSElasticBeanstalk、GoogleAppEngine和Heroku是一些提供平台即服务(PaaS)的提供商。(3)软件即服务(SaaS)软件即服务(SaaS)一般指可通过各种订阅获得的在线托管应用程序。这些应用程序完全在云端运行,可通过全球互联网和浏览器访问。从本质上讲,每个在云中运行并具有基于订阅的定价模型的应用程序都被视为SaaS应用程序。有两种类型的SaaS应用程序:面向最终用户的应用程序和面向开发人员的应用程序。后一种类型旨在为其他应用程序提供基础。Gmail、Dropbox、Jira、BitBucket和Slack都是以最终用户为中心的SaaS应用程序的例子,而Stripe和Slaask公开的API允许企业将他们的软件即服务(SaaS)解决方案集成到他们自己的应用程序中.(4)容器即服务(CaaS)容器平台是基础设施即服务(IaaS)的最新形式。容器即服务(CaaS)提供商可以在容器中交付服务或应用程序并为用户管理容器。容器比虚拟机更有效地利用底层主机资源。可以将容器想象成可以快速启动并且可以在单个服务器上运行多个实例的“微型服务器”。容器即服务(CaaS)提供商提供用于在服务器上部署容器和扩展容器实例数量的工具。更高级的产品完全为企业管理底层服务器,使他们能够专注于代码(或容器)而不是基础。容器即服务(CaaS)已迅速成为平台即服务(PaaS)和软件即服务(SaaS)的组件之一,从而形成分层架构。已经转向开发尽可能多的应用程序。许多复杂的应用程序仍然是软件即服务(SaaS)、平台即服务(PaaS)和容器即服务(CaaS)的组合,因为可用的平台不够灵活,无法提供应用程序所需的一切。许多复杂的应用程序是软件即服务(SaaS)、平台即服务(PaaS)和容器即服务(CaaS)的组合。通过尽可能多地依赖软件即服务(SaaS),企业可以摆脱配置和可扩展性问题。对于其余部分,企业通常使用运行中的容器,这意味着他们仍然存在配置和管理问题。(5)FunctionasaService(FaaS):FunctionasaService(FaaS)使企业能够上传和执行代码,而无需考虑扩展、服务器或容器问题。从这个意义上说,它超越了以前产品的易用性原则,但它也有在平台即服务(PaaS)中不那么突出的局限性。功能即服务(FaaS)的最大优势是可扩展性。扩展功能即服务(FaaS)的粒度不如平台即服务(PaaS)或容器即服务(CaaS),并且无需配置。同样,企业不会为他们不使用的服务付费。粒度:平台即服务(PaaS)应用程序通常仅按应用程序扩展,而构建在容器即服务(CaaS)上的应用程序仅按容器扩展。功能即服务(FaaS)应用程序被分解为单独的功能,因此它们可以按功能扩展。缺点是它通常需要企业重新考虑应用程序的架构。除了管理一个应用程序或几个容器之外,还必须管理许多执行较小任务的功能,这可能会导致大量编排。配置:通常在配置(放大和缩小触发器)或手动设置需要运行的应用程序或容器的实例数量时,功能即服务(FaaS)不需要企业扩展或配置具体资源。Pay-as-you-go:与容器即服务(CaaS)为代码是否高效执行付费不同,费用仅在函数被调用时产生。这种按需付费的定价模式正日益成为定义无服务器的最重要方面。约束:在典型的应用程序中,企业可能会受到代码定义内存或执行时间的限制。尽管功能即服务(FaaS)提供商允许企业配置这些设置,但有一些上限可确保提供商能够有效地优化这些资源。可以想象,如果可以创建一个具有10GB内存的函数,或者可以运行几个小时的函数,提供商很难估计要启动多少台服务器才能充分利用其资源.新的边缘架构无服务器架构消除了配置和扩展问题,但分发仍然是一个具有挑战性的问题。理想情况下,企业希望他们的代码尽可能靠近最终用户运行以减少延迟。直到最近,应用程序的构建方式还存在多个问题:分布逻辑:除非一个功能或容器部署在不同的区域并且客户端被路由到最近的功能,否则它的功能通常会留在数据中心。分发动态数据:只分发逻辑而不分发数据不会获得丰厚的回报,企业的用户可能离后端更近,但后端离数据层还是很远的。成本、配置、监控:很少看到应用程序分布在超过两个或三个区域,因为这样做通常需要额外的成本或配置,并且需要监控多个区域的功能或容器。无服务器的下一个发展是进一步推动无配置的分发和交付。这意味着企业的逻辑和数据分布在全球多个地区,有效降低了最终用户的延迟。CDN和Jamstack已经被很多企业用来提供最基本的自动分发服务形式。它称为内容分发网络(CDN)。Netlify和Zeit等公司已经通过预先生成尽可能多的应用程序并使用无服务器功能和SaaSAPI来处理动态部分来实现分发自动化。由Netlify创造的“Jamstack”方法已经流行起来,因为CDN提供了边缘架构可以提供的第一个体验。当然,纯粹基于服务端渲染的Jamstack也有局限性。例如,必须为新传入的内容触发构建。这使得将这种方法应用于具有大量构建时间的高度动态网站变得非常具有挑战性。基于服务器端渲染的Jamstacks受到高度动态网站的挑战,因为必须为新内容触发构建。增量构建和客户端集成等概念为这个问题提供了部分解决方案,但最终复杂的网站预计将两全其美:最终用户的网络延迟非常低,以及对新内容的即时访问。分布式服务的兴起分布式服务来自前端与后端通信的体系结构,后端又与数据库和其他服务通信。后端和数据库通常一起扩展以保持后端和数据库之间的低延迟。分发是可能的,但往往很麻烦,因此受到限制。后端和数据库的分布是可能的,但通常很麻烦,因此受到限制。在未来的架构中,通过使用其他分布式服务,Jamstack的思想将被提升到一个新的高度。这些服务中的每一个都是分布式网络,其节点不必与其他服务位于同一数据中心。为了最大限度地减少延迟,必须重新考虑前端与数据库和其他服务网络通信的安全模型。未来的应用程序架构将利用分布式服务网络、分布式数据库网络和分布式无服务器后端。看看下面帮助实现这一目标的服务。分布式服务网络许多软件即服务(SaaS)平台,例如Algolia和SendGrid,旨在成为其他应用程序的构建块。他们开发特定服务以消除典型后端应用程序中的特定问题。其中一些正在发展为分布式服务,例如Algolia,它自称为分布式搜索网络(DSN)。许多其他SaaS平台将紧随其后,并且很可能很快就会有人谈论分布式服务网络作为SaaS应用程序的下一个发展。AzureCosmosDB、GoogleCloudSpanner和FaunaDB等分布式无服务器数据库正在采用按需付费的无服务器模型,并提供具有某种形式的ACID保证的开箱即用的分布。一些数据库提供安全层和原生GraphQLAPI,客户端应用程序可以安全地使用这些API,并且可以与无服务器后端很好地配合使用。安全层使用户界面能够直接与数据库交互,而不仅仅是后端。理想情况下,前端应用程序可以与具有低延迟和ACID保证的全球分布式数据库进行通信,就像数据库在本地运行一样。分布式无服务器边缘计算新的无服务器功能,例如CloudflareWorkers和StackPathServerlessScripting,正在将无服务器功能推向边缘。它们旨在使功能尽可能接近最终用户,以将延迟降至最低。CloudflareWorkers有194个站点,而StackPath有45个。为什么这种新的边缘架构现在越来越受欢迎?在考虑这种从基础设施即服务(IaaS)到边缘无服务器的转变的演变过程时,出现了一个问题:如何处理动态数据?有像AmazonS3这样的服务可以托管相对静态的数据,但真正的数据库仍然难以提供无服务器体验。这是因为构建一个高度一致的分布式系统是非常困难的。云中的无服务器构建块就像拼乐高积木一样。如今,拥有内置安全性的无服务器数据库为默认情况下以全球分布式方式扩展的新型应用程序打开了大门。自开门以来,许多开发人员开始寻找用微服务和API替换部分后端的方法,为许多SaaS提供商开辟了新市场。最终结果将是开发一个像乐高积木一样运作的生态系统。相反,开发人员将组装他们需要的构建块,而不必担心扩展或分发。
