Serverless--无服务器计算

最近把几个常用的web应用通过docker方式重新部署了下,然后系统了解学习了 docker相关的使用和命令,感慨docker方式真得很方便,尤其是对于网络爱好者来说(不需要去自己安装和设置各种复杂的环境),真正做到了开箱即用。

了解docker过程中,无意中接触到一张图(如下,原图并非如此,我做了修改)。

服务器架构进化过程

看完,对于我这样网络相关知识产品的爱好者(非专业人士),觉得通俗易懂,感觉是那么回事。尤其联想到不久前我将这个hexo博客部署到了vercel上(vercel提供的就是serverless服务),使用中体验非常不错,觉得有必要了解下与Serverless服务相关的知识。

对这张图表达的意思感触,印象深刻,是因为作为一直折腾博客,网站的爱好者,这些服务器架构类型我都折腾过,时间跨度很长,而且进化过程很符合这个被演绎过的人类进化图。

早期搭建博客,网站是在虚拟主机上。一台物理服务器可以划分成多个虚拟主机,彼此共享硬件资源,共享网络带宽及IP地址,同一IP地址下的网站内容如果被封禁,彼此之间会影响。

虚拟主机会提供相应的管理后台,可以进行新建网站,添加域名,管理数据库等操作。当时比较经典的有DA面板(Direct Admin),Cpanel面板,现在可能仍有一定的市场。

记忆里,虚拟主机流行的年代,网站备案似乎还不是强制性的。那时万网还没被阿里云收购。

后来有一定的网络知识以后,开始折腾独立服务器。工作需要,对于Windows及Linux系统都简单了解过,尝试过安装B/S,C/S架构的软件,然后还操作过IP-SAN及独立存储服务器,这些都是基于局域网。后来偶然的机会,得到一条运营商赠送的带独立IP地址的光纤网络。于是开始尝试自己搭建独立服务器,搭建运行环境,然后外网访问。主要是在Windows操作系统下,先用自带的IIS服务器程序,搭建asp.net的运行环境(运行过iwms建站程序),后来使用xampp,搭建php+mysql的环境运行wordpress

接触云服务器,是因为有科学上网的需求。当然更重要的是价格便宜,一台美国的vps(当然这个还不是真正意义上的云服务器)一个月只需要5美金,甚至更便宜或者碰到商家做活动打折,年付只需要10–20美金。相比于国内IDC厂商提供的VPS,这个价格便宜得吓人。

除了科学上网,vps的用途很多,搭建好基础的环境(先折腾过lnmp,然后是宝塔),然后搭建博客站点,私有云存储,视频监控存储,智能家居系统,FRP穿透等等。

再后来,国内云服务商风起云涌,推出很多针对新用户的优惠,力度之大让人欲罢不能,只能上船(上船容易下船难,老用户需原价续费,运行个人博客,小型网站的个人用户很难承受。于是有些IDC厂商有了套路云,良心云的江湖外号),此时才是接触真正的云服务器,当然对于个人用户,小型网站来说,VPS还是云服务器其实没多大区别。

相对来说,在一台全新的云服务器上部署网站程序是件繁琐的事情。首先安装操作系统,然后安装配置运行网站所需的各种环境(可以借助上面提到的lnmp,宝塔等这样的工具),然后上传自己的网站程序,运行。这个过程中,可能需要不断对运行环境进行调整,升级,维护。

这其中程序所需运行环境的配置调整是最麻烦的。而且不同程序需要的环境可能还不一样,运行多个网站程序可能需要搭建多个不同的环境。此时docker的优势就体现出来了。

docker是将程序与其所需的环境打包在一起,只要从仓库拉取所需的镜像,然后运行,即可将所需的应用程序跑起来。省略了运行环境搭建配置这一琐碎的过程,降低了门槛(有时自己搭建环境,会碰到各种千奇百怪的问题,尤其对于非专业人士,处理这些问题的能力可能欠缺,时间成本太高),提高了程序运行的成功率。

当然docker不是云服务器的替代品,docker首先还是需要运行在服务器上。能不能更激进一点,保留docker的优势,把云服务器也省了。

这就是serverless了,翻译成中文叫无服务器服务(计算)。serverless的理念是用户只需要提供程序代码,平台就会自动准备好相应的计算资源(按需),完成运算并输出结果(对于web应用,最后的结果就是呈现一个能在浏览器里访问的网站),从而大幅简化开发运维过程。

Serverless的特点是,这个服务足够“细小”,变成了“函数级”的颗粒度。所谓函数,就是提供输入,计算输出。

所谓函数,就是提供输入,计算输出。

所以阿里云的serverless应用名称叫函数计算(Function Compute,FC),腾讯云的叫云函数(Serverless Cloud Function,SCF)。

serverless特点

Serverless的背后,依然是虚拟机和容器。只不过,服务器部署、runtime安装、编译等工作,都由Serverless计算平台负责完成了。对开发人员来说,只需要维护源代码和Serverless执行环境的相关配置即可。所以也叫“无服务器计算”。

Serverless是云计算的进一步延伸,它继承了云计算的最大特点——按需弹性伸缩、按需付费

程序运行所需要的基础设施(比如服务器计算所需的CPU,内存,网络宽带,访问服务)会自动部署,并根据需要自动弹性扩展,只需要为使用的服务和资源付费。

serverless产品

阿里云函数计算

函数计算(Function Compute)是一个事件驱动的全托管 Serverless 计算服务,您无需管理服务器等基础设施,只需编写代码并上传,函数计算会为您准备好计算资源,并以弹性、可靠的方式运行您的代码。

腾讯云云函数

云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。

Vercel
Vercel is the platform for frontend developers, providing the speed and reliability innovators need to create at the moment of inspiration.

fly.io
Run your full stack apps (and databases!) all over the world. No ops required.
fly.io还额外提供数据库服务。

Netlify
The fastest way to combine your favorite tools and APIs to build the fastest sites, stores, and apps for the web.

railway
Made for any language, for projects big and small. Railway is the cloud that takes the complexity out of shipping software.

Heroku
Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps — we're the fastest way to go from idea to URL, bypassing all those infrastructure headaches.

Koyeb
Koyeb is a developer-friendly serverless platform to deploy apps globally. No-ops, servers, or infrastructure management. Simple. Global. Fast.

Render
Render is a unified cloud to build and run all your apps and websites with free TLS certificates, global CDN, private networks and auto deploys from Git.

… …

serverless案例

serverless可以部署web开发框架,web应用,音视频处理,人工智能,实时文件/数据处理等。

阿里云函数计算提供的常用serverless应用

比如wordpress,typecho,hexo等博客系统可以很方便的部署到serverless上,我简单了解了下阿里云,腾讯云的serverless收费标准,比使用云服务器要便宜。

另外,程序代码可以托管到诸如github这样的平台,代码修改以后会自动触发serverless上的程序更新,这点对于喜欢折腾的个人博主会非常受用。

我的这个hexo博客代码即托管在github,然后通过vercel部署。每次写文章或者做修改,只需要在github上更新即可,会触发vercel自动部署更新。

除了以上个人使用体验外,公开的使用serverless的案例还有新浪微博,语雀,高德地图,网易云音乐等。

未来

个人觉得serverless服务对于个人用户,个人开发者,以及成长期的应用来说非常有用。节省了配置环境的繁琐步骤(尤其在团队早期,经验和开发人员都欠缺的情况下),也节省了云服务基础设施的投入费用(可以按需自动扩容)。但是已经成熟的超大型应用是否应该使用serverless似乎仍有疑虑。

原因之一也是serverless的优点,整个部署过程太简单,乃至无感,令人恐惧。如果出现问题,从哪些方面排查问题,如何溯源,让人无所适从。整个过程没掌握在自己手中,缺乏安全感。无知让人恐惧。

另外一点,目前serverless比较通用的,成熟的案例都是一些常见的web应用,适合个人玩家。大型商业化的应用集成部署到serverless服务上的难度较大,还需要磨合,serverless服务的稳定性,可靠性还需要进一步观察。

无论怎样,serverless似乎应该是大势所趋,但之后呢?还会有新的技术革新吗?


参考资料

  1. Serverless中文网站
  2. 越来越火的Serverless(无服务器计算),到底是个啥?
黄花风铃--满城尽带黄金甲 HTML5中的video标签

  评论