serverless是什么
Serverless首先是用于描述我们的应用程序是明显或充分地依赖第三方应用或服务来管理服务器端逻辑和状态,这些应用是典型的富客户端应用,比如单页Web应用或移动应用,它们使用基于云可访问的数据库比如Parse或Firebase,还有授权服务比如Auth0AWS Cognito等,这些服务类型之前曾经被描述为后端服务,下面使用Baas这一简称代表后端服务(Backend as a Service)。
其次,Serverless也意味着应用会有一些服务器端逻辑,但是不像传统架构是运行在无态容器中,通过事件触发,它是瞬间的,可能只使用一次,完全由第三方管理,一种思想认为这是“Functions as service函数服务”简称Faas,AWS Lambda就是一种流行的Faas实现,当然还有其他。
当开发Baas shaped应用,特别当开发一个富Web应用,而不是移动应用时,你会需要一些服务器端定制功能,Faas功能也许对于这种情况是一种好的解决方案,特别是如果他们和你使用的BaaS服务集成到一定程度时,这样功能案例包括数据校验和计算敏感的处理,比如图片和视频的制作。
Serverless的特点:
Serverless意味无维护,Serverless不代表完全去除服务器,而是代表去除有关对服务器运行状态的关心和担心,它们是否在工作,应用是否跑起来正常运行等等。Serverless代表的是你不要关心运营维护问题。有了Serverless,可以几乎无需Devops了。
Serverless不代表某个具体技术,有些人会给他们的语言框架取名为Serverless,Serverless其实去除维护的担心,如果你了解某个具体服务器技术当然有帮助,但不是必须的。
Serverless中的服务或功能代表的只是微功能或微服务,Serverless是思维方式的转变,从过去:“构建一个框架运行在一台服务器上,对多个事件进行响应。”变为:“构建或使用一个微服务或微功能来响应一个事件。”,你可以使用 django or node.js 和express等实现,但是serverless本身超越这些框架概念。框架变得也不那么重要了。
Serverless架构原则
按需使用计算服务执行代码
Serverless架构是SOA概念的自然延伸。在Serverless架构中,所有自定义代码作为孤立的、独立的、细粒度的函数来编写和执行,这些函数在AWS Lambda之类的无状态计算服务中运行。开发人员可以编写函数,执行常见的任务。在比较复杂的情况下,开发人员可以构建更复杂的管道,编排多个函数调用。
编写单一用途的无状态函数
单单负责处理某一项任务的函数很容易测试,并稳定运行。通过以一种松散编排的方式将函数和服务组合起来,能够构建易于理解、易于管理的复杂后端系统。
为lambda等计算服务编写的代码应该以无状态方式进行构建,这样会让无状态功能很强大,让平台得以迅速扩展,处理数量不断变化的请求或者事件。
设计基于推送的、事件驱动的管道
可以构建满足任何用途的服务器架构。系统可以一开始就构建成无服务器,也可以逐步设计现有的单体型应用程序,以便充分发挥这种架构的优势。最灵活、最强大的无服务器设计是事件驱动型的。
构建事件驱动的、基于推送的系统常常有利于降低成本和系统复杂性,但是要注意,并不是任何情况下都是适当的或者容易实现的。
创建更强大的前端
由于Lambda的定价基于请求数量、执行时间段以及分配的内存量,所以代码执行需要越快越好。数据签名的令牌让前端可以与不同的服务直接通信。相比之下,传统系统中所有通信经由后端服务器来实现。让前端与服务进行通信有助于减少创建环节、尽快获得所需的资源。
与第三方服务集成
如果第三方服务能提供价值,并减少自定义代码,那么自然它们就很有价值。开发人员可以通过引入第三方服务来减少自己实现各种业务逻辑的需要,可以减少小型公司的开发成本,避免价格、性能、可用性等要素上的劣势。
代码签名证书是保护开发者的劳动成果,给自己开发的软件签名的证书,保证代码在签名之后不被恶意篡改。用户可通过对代码的数字签名来标识软件来源,辨别软件开发者的真实身份。GDCA的代码签名证书支持多种代码签名,已通过WEBTRUST国际认证。