前言

企业级应用场景
但是时常会面对下面的问题:

  1. 简单独立的且不常使用的需求,怎样用一些简单的业务实现,配合不复杂的部署方式,比如 后台处理等
  2. 与云计算强绑定的业务,如何不用耦合到业务代码里面,比如,OSS,短信,消息队列等
  3. 潮汐的业务,如何可以快速的扩容缩容,且节约成本

个人应用的部署
作为程序员有时候会自行开发一些 site project,这个时候就需要部署应用了,那么就会面对下面的问题:

  1. 购买域名
  2. 申请ICP
  3. 绑定IP, 域名解析
  4. VCP设置,安全组打开
  5. SSL 证书申请和上传

还没有开始开发,已经是各种繁琐的步骤,影响了开发的效率。还要考虑后续运维,比如流量增大的各种扩容的问题。
这时 serverless 是另外一种选择去解决上述的问题。

serverless 是一种快速的和专注业务的开发和部署方式。

本文将介绍 serverless 入门,感受一些 serverless 的好处。

下面都是使用 阿里云的 serverless 的进行验证和演示。

Hello world

例子是从 阿里云的 serverless 的说明文档来。

直接上手一个 hello world 先,部署一个 python flask 应用,他是一个后台的应用。
预期:快速部署一个后台应用,restful 返回,有访问的域名地址。
image.png
采用 本地开发 和 local本机部署 的方式。

本机是 windows10 机器,使用 git bash shell

  1. 先安装包

$ npm install @serverless-devs/s -g
npm WARN deprecated koa-router@10.1.1: **IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173

changed 124 packages in 25s


$ npm --version
9.5.1


$ node --version
v18.16.0



  1. 配置云计算服务认证信息

why?因为 serverless 是运行在云计算服务商上的,当然需要认证的信息去调用云计算服务咯

$ s config add
? Please select a provider: Alibaba Cloud (alibaba)
🧭 Refer to the document for alibaba key:  http://config.devsapp.net/account/alibaba
? AccessKeyID:  LTAI5t6JRPT***VZYMkBNPKf
? AccessKeySecret:  18tLB2iyIG***ZO9ssIc8ICBa1ouz
? Please create alias for key pair. If not, please enter to skip default

  Alias:           default
  AccessKeyID:     LTA******************PKf
  AccessKeySecret: 18t************************ouz
  AccountID:       171**********690

✔ Configuration successful
  1. 使用脚手架,生成代码,并且启动
$ s init start-flask -d start-flask

◆ More applications: https://registry.serverless-devs.com

✔ file decompression completed

  Serverless Devs Application Case

    Cloud services required:
    - FC : https://fc.console.aliyun.com/

    Tips:
    - FC Component: https://www.serverless-devs.com/fc/readme
创建应用所在的地区
? 地域 cn-shenzhen
服务名称,只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间
? 服务名 fc-test-01-flask
函数名称,只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-64 之间
? 函数名 f01
? please select credential alias default
  1. 启动信息打印
framework: 
  region:   cn-shenzhen
  service: 
    name: fc-test-01-flask
  function: 
    name:       f01
    runtime:    python3.9
    handler:    index.app
    memorySize: 128
    timeout:    60
  url: 
    system_url:          https://f-fc-test-flask-eugyjtpwxl.cn-shenzhen.fcapp.run
    system_intranet_url: https://f-fc-test-flask-eugyjtpwxl.cn-shenzhen-vpc.fcapp.run
    custom_domain: 
      - 
        domain: http://f01.fc-test-01-flask.1719759326012690.cn-shenzhen.fc.devsapp.net
  triggers: 
    - 
      type: http
      name: httpTrigger
  1. _直接访问 _custom_domain_ 验证 _

image.png

当然也是可以在 web页面进行验证

经验证,已经部署好了。

  1. 从 web页面中检查是否已经部署好

image.png
服务与函数 -》 服务列表 -》 函数列表
image.png
服务名 和 函数名 也是和我们之前的设置一样。

  1. _本地代码修改 _index.py_,并且重新部署 __s deploy_

image.png

  1. 待成功后,直接访问验证

image.png

  1. 符合预期

总结
本次的流程:本地命令开发,拉取脚手架,修改代码,部署。其中 部署 已经把 代码打包、上线运行、域名解析等操作都完成了,时间耗费了 5s 左右。
一个命令(s deploy)就把 部署过程中的所有复杂度给隐藏了。把部署的流程简化了,所以我们的精力都集中在编写业务代码的上面。

概念说明

逐步把一些我们碰到的概念进行说明一下。

应用/服务/函数

应用,有多个 服务;服务,有多个 函数
应用:基于代码,拥有 CICD 的流程,和各种复杂的服务,比如 灰度发布,不同环境的发布等。
服务:与下面的 _函数 共享一样的配置。
比如:支付宝,是一个 应用,他可以提供多个不同的_服务
,比如,支付服务小程序服务;同时,支付服务,又由不同的 函数 来支撑,比如 付款函数退款函数 等。

s init s deploy 等命令,都是快速启动 服务和函数,跳过了 应用这个概念。

走马观花

阿里云已经集合了很多不同的应用,我们可以手动直接部署一下,感受一下 serverless
从下图的入口进入
image.png
image.png

里面有各种不同的独立应用,比如 大的应用:nas、商城等;小的应用:就是一个函数,人工智能,图片转换等。直接鼠标点击,就可以部署一个应用。下面我们来尝试一下。

Excalidraw

尝试一下在线画板,点击生成。
image.png
等待一会儿,应用已经 ready。访问后,一个完整的前端项目的应用就已经可以使用了。
image.png

AI 目标检测

image.png
看到这个赶紧点击部署一下。
image.png
直接上传图片,得到检测结果,就是解析图片上的物品,效果还是不错的。
这个是单一功能的 函数部署,只需手动点击,就可以得到一个不错的功能。减少造轮子的时间。

总结

本文大致聊了 serverless 的入门。
对企业而言,解决各种运维层面的问题(扩容缩容,灰度发布,减少陈本,非耦合业务拆解),serverless 是一个不错的选项。
对个人而言,可以专注业务,不用考虑前期的购买服务器和后期的运维,提高整个的开发效率。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐