首页 > 其他分享 >关于Serverless服务的几点建议

关于Serverless服务的几点建议

时间:2023-08-22 10:58:57浏览次数:49  
标签:Serverless Node 需要 服务 REST 架构 应用 服务器 几点

通过迅速灵活以及容量巨大的弹性伸缩,无服务器架构能很好地解决关键功能的性能瓶颈,但它并不是完美的:不仅需要修改设计去适应它,对熟悉的编程模型进行调整,还要解决诸如规划预算、安全等等问题。但总的来说,它为云上的应用提供了另一种选择——并且具有难以抵挡的诱惑:极大地简化应用从开发到部署和维护的整个过程。信息技术在不同领域的发展不尽相同。诚然,事实一直如此,因为人们为当下的问题所找到的可行的解决方案,通常先于这些问题本身就已经存在了。

通过迅速灵活以及容量巨大的弹性伸缩,无服务器架构能很好地解决关键功能的性能瓶颈,但它并不是完美的:不仅需要修改设计去适应它,对熟悉的编程模型进行调整,还要解决诸如规划预算、安全等等问题。但总的来说,它为云上的应用提供了另一种选择——并且具有难以抵挡的诱惑:极大地简化应用从开发到部署和维护的整个过程。

将编写代码和部署应用的整个过程简化是每个开发人员的梦想,而无服务器架构(Serverless)正是这样的解决方案,在采用这种架构的时候需要考虑它的局限,费用问题以及安全问题。

信息技术在不同领域的发展不尽相同。诚然,事实一直如此,因为人们为当下的问题所找到的可行的解决方案,通常先于这些问题本身就已经存在了。与虚拟化、云计算等技术的缓慢进步相比,编程语言几乎是原地踏步了十年。直到新一轮的编程语言和方法诸如Python,Ruby,Node,Swift的出现才打破这一局面。这两个领域看似毫无关联,然而我们即将看到二者共同演变并结合在一起开花结果。

这个新的结合领域就是无服务器计算(Serverless)。易于部署的容器实例集合、无处不在的基于REST API的外部服务、易于实现REST API的新编程语言使得以 REST API提供接口成为一种简单而可行的选择。这些技术相互结合,创造了一种全新的计算形式。 我们已经很熟悉这种新的编程形式的诸多方面(例如如何设计和实现REST API,如何设计实现微服务),但是仍有一些方面并不为人熟知。

关于Serverless服务的几点建议关于Serverless服务的几点建议

从Node.js中学到的       我第一个Node.js程序与大多数人的并没有太大不同——设置好监听端口和路径,写好代码处理相应的执行和退出逻辑,然后使用浏览器访问对应的URI。在实现基本功能之后,我很自然地进一步利用Node的并发执行和其他新优点来改善这个应用。

     但这个应用提供的并不是REST API,它只是简单地根据不同的请求内容响应包含不同内容的HTML页面。结合REST之后,Node应用便成为一个计算结点。不变的是,当收到请求时,它便执行逻辑,然后退出。同时,作为基础设施的部分,它会保持对特定端口的监听。

基础设施

然而,为了实现一个简单但完整、可运行的Node应用(或者 Python / Djang / Java / Spring / RoR 等),还需要进行网络配置,防火墙配置,操作系统配置和调整,存储配置,并且如果你使用了网络应用防火墙(WAF: Web Application Firewall),还需要配置WAF。尽管,DevOps能使所有这一切更容易一些,但请试想一下,如果你根本不需要做这些额外的配置,那将会怎样?

无服务器架构      针对这个问题,越来越多的公司不断地提出解决之道。他们思考的是能否可以做到由开发人员编写代码,部署应用,并在需要时就能轻易获取这些应用,而在不需要它们时也不需要做任何额外的工作,而且还能按需扩展? 甚至能否做到像WAF这样的配置也被自动化,并且应用的访问权限被限定在指定的人/机器的正确子集? 如果部署应用真的如同上传zip文件一样简单,或者就像在编辑器中编写代码并点击“部署”一样简单,那将会怎样? 最后,如果预先配置了数据库和存储的访问权限,那么又该如何将这些配置包含进来呢?

     这对开发者无疑有着巨大的吸引力。编写代码后,无需进行那些看似必须的配置(无论是物理环境,虚拟环境的还是云端环境)就能部署,是众多开发者的梦想。这也不禁让人想起一些现实世界中的例子。首当其冲的就是应对高峰期的性能瓶颈。假设你有一个完美运行的在线订单系统,在销售高峰期(比如黑色星期五),由于验证收货地址的时间过长,系统经常陷入崩溃。

如果你有一个无服务器函数(serverless function),它仅返回输入的地址是否有效,你就可以将地址验证交给它来处理,那该多好? 甚至,该功能还允许快速扩展到几乎无限容量(当然,网络带宽还是要考虑的)! 现在,这个瓶颈不再是问题,你只需要为这个函数实际使用的计算资源(CPU时间)付费。 这意味着调用得越多,支付的费用就越高,但是在大部分的时间里,费用都很少。 你只需要为真实使用的计算资源付费。

如果所有这一切以可接受的价格让你在你的站点上或者云端完成,那该有多好!已经诞生了这样的产品(Microsoft Functions,AWS Lambda和nanoscale.io等)都提供了上述所有功能。

并非雨后彩虹       无服务器计算也并不是完美的。在选择供应商时,需要注意的事项包括:
  1. 工具支持。它必须支持你的开发工具,特别是对CI / CD / ARA的支持至关重要。如果无法将无服务器计算集成到你现有的开发环境和以及整个流程中,那么说明它还不够好。
  2. 计费和收费方式。永远不要忘记这些服务提供商与你的商业一样,目标也是赚钱。请确保你明白他们赚到的钱是从你的预算中支出的。所有按需使用的资源都有一些附加因素,因为它依赖于不可预测的客户群和他们变幻莫测的使用情况。但要了解你将被收取哪些费用,以及供应商保留了哪些更换计费方式的权利。
  3. 安全功能。将大量代码从你的核心应用中分离出来,并将其放在云端,这可能需要在安全上大量投资并需要撰写一些额外的代码。确保你的供应商能够提供上述协助,抑或是允许你将你的代码保留在防火墙和WAF之后。
  4. 你的整体架构。虽然我们上面的例子很好地演示了“低垂的果实”(唾手可得的部分),但稍微复杂一些的案例就可能会遇到诸如数据访问,数据安全,成本问题乃至高可用性等问题。确保你的团队已经深入研究了怎样实现无服务器计算架构,并能很好地掌握这种编程模型。
构建正确的应用

将来,一些应用程序将完全采用无服务器架构,特别是对于相比使用云端实例更具成本优势的应用。即便没有这样的应用,尽可能少地在基础设施上配置资源也会变得更加划算。同时,将无服务器计算作为解决各种相对独立的功能引起的性能瓶颈的解决方案,或者用于测试在不需要增加基础设施预算的情况下,是否可以增加应用的容量。总的来说,在信息技术领域,对于如何正确地选择架构来实现业务目标,无服务器架构无疑是其中一种解决之道。

相关文章:

作者介绍:胡应明,趋势科技资深工程师,DockOne社区译者

文章来自微信公众号:Docker

原文来自:http://www.yunweipai.com/archives/19201.html

本文地址:https://www.linuxprobe.com/appropriate-serverless-service.html编辑员:华世发,审核员:冯振华

本文原创地址:https://www.linuxprobe.com/appropriate-serverless-service.html

标签:Serverless,Node,需要,服务,REST,架构,应用,服务器,几点
From: https://www.cnblogs.com/linuxpro/p/17647941.html

相关文章

  • 基于docker-compose搭建ES服务
    一、单节点线下测试拉取镜像1、进入实验机器go10.10.10.102、拉取es7.16.2镜像dockerpulldocker.elastic.co/elasticsearch/elasticsearch:7.16.2安装ik分词器1、启动容器dockerrun-d-p0.0.0.0:9200:9200-p0.0.0.0:9300:9300-e"discovery.type=single-node......
  • 【10.0】Linux之系统服务
    【一】Linux启动流程CentOS6启动级别CentOS6VSCentos7开机启动流程图解【二】Linux运行级别【1】什么是运行级别运行级别就是操作系统当前正在运行的功能级别SystemVinit运行级别systemd目标名称作用0runlevel0.target,poweroff.target关机1runlevel......
  • uniapp保存服务器端sessionID方案
    我们知道,uniapp,小程序都不支持cookie,那么每次调用服务端api接口时,服务端提供的Set-Cookie无法自动保存,导致每次都请求都是一个新sessionID,无法完成一些正常的校验,想要解决这个问题,可以让uniapp首次加载请求时保存服务器传过来的sessionID,在之后的请求中都在header中携带着这个coo......
  • Service(服务)
    目录k8s的三层网络修改service命令方式修改servicecore-api-service.ymalk8s的三层网络宿主机网络物理主机网络。svc集群网络clusterIp集群网络,集群内部服务可以相互访问,集群外部不能访问集群内的服务。可以升级为NodePort方式,映射podIp:podPort到宿主机的IP和端口,这样......
  • 静态web服务器-根据请求返回指定页面数据
    实现步骤1.获取用户请求资源的路径2.根据请求资源的路径,读取指定文件的数据 3.组装指定文件数据的响应报文,发送给浏览器 4.判断请求的文件在服务端不存在,组装404状态的响应报文,发送给浏览器 示例importsocket#获取用户请求资源的路径#根据请求资源的路径,读取指......
  • 自研静态Web服务器并返回固定⻚⾯数据
    开发自己的静态Web服务器的步骤1.编写一个TCP服务端程序 2.获取浏览器发送的http请求报文数据 3.读取固定页面的数据,把页面数据组装成HTTP响应报文数据发送给浏览器。 4.HTTP响应报文数据发送完成以后,关闭服务与客户端的套接字静态Web服务器-返回固定页面数据的示例代码1......
  • 家政服务搭建教程
    1、环境说明服务器2核2G,centos7.9,mysql5.7,nginx1.22,php7.2,宝塔8.0.12、安装宝塔如何安装宝塔请查看该网址宝塔3、创建站点创建站点的时候,选择创建好数据库。记录好数据库连接信息4、上传后台将上传后的文件解压,我个人习惯将后台重命名为api5、配置站点别忘记点击......
  • 搭建Python⾃带静态Web服务器
    说明Python自带的静态Web服务器可以通过使用http.server模块来实现。步骤打开命令行终端,进入要作为静态文件根目录的文件夹。运行以下命令启动静态Web服务器:Python2.x版本:python-mSimpleHTTPServer<port>Python3.x版本:python-mhttp.server<port> <port>是可选参......
  • gRPC 客户端调用服务端需要连接池吗?
    发现的问题在微服务开发中,gRPC的应用绝对少不了,一般情况下,内部微服务交互,通常是使用RPC进行通信,如果是外部通信的话,会提供https接口文档对于gRPC的基本使用可以查看文章gRPC介绍对于gRPC,我们需要基本知道如下的一些知识点:gRPC的基本四种模式的应用场景请求响应......
  • 第八章 SMS--短信服务
    8.1短信服务介绍短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力。产品优势:覆盖全面、高并发处理、消息堆积处理、开发管理简单、智能监控调度产品功能:短信通知、短信验证码、推广短信、异步通知、数据统计应用场景:短信验证码、系统信息推送、推......