从虚拟主机到无服务器:我的技术进化之旅与Serverless初探

从虚拟主机到无服务器:我的技术进化之旅与Serverless初探

最近,我将几个常用的Web应用通过Docker方式进行了重新部署,并系统学习了Docker的使用与命令。这种方式真的非常便捷,尤其对于网络爱好者来说——无需手动安装和配置复杂环境,真正实现了开箱即用,大大提升了效率。

在学习Docker的过程中,我偶然看到一张图(如下,原图经过我的修改)。

这张图以通俗易懂的方式,展示了服务器架构的演变历程,让我这个网络产品爱好者(非专业人士)深有感触。尤其联想到不久前,我将自己的Hexo博客部署到了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的兴起

接触云服务器源于科学上网的需求,更重要的是价格优势。当时,美国的VPS(虽然还不是严格意义上的云服务器)月费低至5美元,甚至更便宜,年付只需10-20美元,相比国内IDC厂商的VPS,价格极具吸引力。除了科学上网,VPS用途广泛:搭建基础环境(如LNMP、宝塔面板),部署博客站点、私有云存储、视频监控存储、智能家居系统,以及FRP穿透等。

后来,国内云服务商竞争激烈,推出大量新用户优惠,让人欲罢不能。然而,老用户续费往往需要原价,对运行个人博客和小型网站的用户来说难以承受,因此一些IDC厂商获得了“套路云”、“良心云”的江湖外号。这时,我才真正接触到云服务器,但对个人用户而言,VPS和云服务器的区别并不大。

瓶颈:环境配置的繁琐

在全新的云服务器上部署网站程序是一个繁琐的过程:先安装操作系统,再配置运行环境(可借助LNMP、宝塔等工具),然后上传网站程序并运行。期间可能需不断调整、升级和维护环境,尤其是不同程序需要不同的环境配置,运行多个网站时更为复杂。这时,Docker的优势凸显出来。

Docker将程序与其所需环境打包在一起,只需从仓库拉取镜像并运行,就能快速启动应用程序,省去了环境搭建的琐碎步骤,降低了门槛(非专业人士常遇到各种问题,处理起来耗时耗力),提高了成功率。

Serverless:更进一步的革新

但Docker并非云服务器的替代品,它仍需运行在服务器上。那么,能否更激进一些,在保留Docker优势的同时,连服务器也省去呢?这就是Serverless(无服务器计算)的理念。

Serverless让用户只需提供程序代码,平台便会自动准备计算资源(按需),完成运算并输出结果(对Web应用而言,即呈现可访问的网站),从而大幅简化开发和运维流程。其核心特点是“函数级”颗粒度:接收输入,计算输出。因此,阿里云的Serverless服务称为函数计算(Function Compute,FC),腾讯云的则叫云函数(Serverless Cloud Function,SCF)。

Serverless的特点

  • 背后技术:Serverless依然基于虚拟机和容器,但服务器部署、runtime安装和编译等工作由平台自动完成,开发者只需维护源代码和配置。
  • 弹性与付费:作为云计算的延伸,Serverless继承了按需弹性伸缩和按需付费的特点,基础设施自动部署和扩展,用户仅为使用的资源付费。

主流Serverless产品

  • 阿里云函数计算:事件驱动的全托管服务,无需管理基础设施。
  • 腾讯云云函数:无服务器执行环境,支持多语言代码弹性运行。
  • Vercel:前端开发平台,强调速度和可靠性。
  • fly.io:全球部署全栈应用和数据库,无需运维。
  • Netlify:快速构建站点和应用的云平台。
  • railway:简化软件部署的云服务。
  • Heroku:从创意到URL的快速云平台。
  • Koyeb:开发者友好的无服务器平台,支持全球部署。
  • Render:统一云服务,提供免费TLS证书和全球CDN。

Serverless应用案例

Serverless适用于Web开发框架、应用部署、音视频处理、人工智能和实时数据处理等场景。例如,WordPress、Typecho、Hexo等博客系统可轻松部署到Serverless上,且成本通常低于云服务器。

代码可托管在GitHub等平台,修改后自动触发Serverless更新,这对爱折腾的个人博主非常实用。我的Hexo博客就托管在GitHub上,通过Vercel部署,每次更新都会自动触发部署。

除了个人体验,公开案例还包括新浪微博、语雀、高德地图和网易云音乐等。

展望与思考

我认为Serverless对个人用户、开发者和成长期应用极具价值,能节省环境配置时间和基础设施成本。但对于成熟的超大型应用,是否采用Serverless仍存疑虑:

  • 部署过于简化:整个过程可能让人缺乏控制感,出现问题时的排查和溯源困难,易引发不安全感。
  • 成熟度挑战:目前成熟的案例多集中于常见Web应用,大型商业化应用集成难度大,Serverless的稳定性和可靠性需进一步验证。

尽管如此,Serverless似乎是大势所趋。未来是否会有新的技术革新?让我们拭目以待。


参考资料

  1. Serverless中文网站
  2. 越来越火的Serverless(无服务器计算),到底是个啥?