从零入门 Serverless | 课时5 函数的调试与部署
作者 | 江昱 阿里巴巴高级产品经理
本文整理自《Serverless 技术公开课》,关注“Serverless”公众号,回复“入门”,即可获取 Serverless 系列文章 PPT。
函数调试
函数的调试与部署,其实这是两部分内容:调试部分与部署部分。相对来说,调试部分是比较困难的,因为调试本身就是 Serverless 架构的一大弱点。
在开始讲解调试之前,先问大家一个问题:我们写完的代码为什么要有调试的过程呢?不调试行不行?
记得我在上学的时候,无论是考试还是做什么,都少不了一个检查的过程,例如写完作业时,爸妈会说:“做完了检查一下”;考试时,老师会说:“考完了检查一下”;在做完某件事时,我们还要有一个检查的过程,来保证尽可能地少犯错误。
程序也是这样,我们写了一堆代码,难免这个代码会做一些奇奇怪怪的事情,例如说我们少写了一个字母,用错了一个符号,或者说我们的程序输出和预期不一致,我们的程序存在逻辑问题,我们的程序在处理某些业务时少考虑了一些因素,我们的程序……很多问题。这个时候,我们就要自己来检查一下,看看他是不是 OK 的,如果不 OK 要马上修改,如果 OK 了,我们再提交代码、上传代码、部署代码等,这个过程,你就可以认为是调试的过程。
1. 函数调试方式
当然,调试也不是这么容易的,它也有很多的方法和理论,本文就针对函数计算以及相关工具,给大家讲解怎么调试函数计算中的函数们。
1)云调试
首先,第一种方法,是非常简单的,我们只需要打开浏览器,进入到我们的项目页面,就可以点击 Invoke 按钮进行调试。
(在线调用)
上图中可以看到,我们已经完成了调试,输出了 hello world,这种方法非常简单,对于临时使用是非常有效果的。
但是稍微麻烦一些的项目,可能就不太适合在线上调试了,这时,我们就需要本地开发和调试方法,毕竟大部分代码开发应该都在本地,虽然大家都说云端写代码、开发、debug 是未来的趋势,但是至少目前来看,还是本地开发更习惯、更靠谱。
所以这时就需要用我们的插件或者命令行工具了。
2)命令行工具
(命令行工具本地调试)
我们在安装之后,如果想进行本地调试,还要安装 Docker,安装之后,我们可以通过 invoke local 的指令来进行本地的调试。例如上图中,我们可以看到,当我执行完了 fun local invoke demo_03/demo_03,顺利输出了结果。当然如果你是第一次使用,可能还会涉及到通过 Docker 拉取镜像的过程。
3)VSCode 插件
如果要在编辑器中写代码,该怎么调试?非常简单,使用 VSCode 插件,你只需要点击 VSCode 插件的运行功能,插件就可以自动拉起 Docker,帮助我们本地调试代码。
从上图中可以看到,我们已经顺利输出了结果。
这时就会有人问:还要安装 Docker 吗?没有 Docker 行不行?没有 Docker 当然是不行的,因为这个调试的机制本身就依赖 Docker。但是我们人类往往是具有创造力的:没有条件,就创造条件,所以,下面再给大家分享一个无工具的调试方案。
4)无工具调试
如上图,以 Python 为例,我们只需要增加一段代码,来调用我们的方法,至于 event 可以采用我们即将使用的触发器情况,这样就可以实现简单的调试方法了。
2. 适用场景
上文介绍了这么多的调试方法,什么时候该用哪个呢? 
如上图,我们来看一下对比,在一般小的情况下,如果我们不想开编辑器,也不想用 Docker ,想要获取比较靠谱的调试,可以使用云端调试;如果我们想本地调试,和开发更亲密一些,可以用命令行工具或者 VSCode 插件;如果我们不想安装各种工具,那么完全可以采用无工具调试方案。
云端调试虽然不太符合我们的开发习惯,但是这种调试方法可以 100% 模拟“现场场地”;命令行工具或者 VSCode 插件,虽然通过 Docker 镜像方法,已经尽可能地模仿了线上环境,但是对于一些和线上资源交互的场景,尤其是通过 VPC 等和其他资源交互的场景,这种方法未必可以很好地解决类似的问题;无工具调试,只适合临时用一下,它的环境和线上环境天差地别,很可能会对真正上线的结果造成一定影响。
函数部署
函数部署的方法很简单,也不需要特殊的依赖,就算没有 Docker 也可以。
1. 在线部署
在线创建函数上传代码包,或者更新函数上传代码包等。
2. 客户端部署
1)通过命令行工具
如下图所示,通过命令行工具,执行 fun deploy 来进行部署。 
2)通过 VSCode 插件
通过 VSCode 插件,点击上传部署的按钮,即可自动部署。 
结语
最后额外说一下,本文并非王婆卖瓜自卖自夸,而是命令行工具的 - h 指令真的很棒,无论使用什么指令,我们都可以通过 - h 查看到使用方法,非常简单方便,不信你也可以偷偷试一下。
从零入门 Serverless | 课时5 函数的调试与部署的更多相关文章
- 从零入门 Serverless | 教你使用 IDE/Maven 快速部署 Serverless 应用
作者 | 许成铭(竞霄) 阿里云开发工程师 SAE 应用部署方式 1. SAE 概述 首先,简单介绍一下 SAE.SAE 是一款面向应用的 Serverless PaaS 平台,支持 Spring C ...
- 从零入门 Serverless | 一文详解 Serverless 技术选型
作者 | 李国强 阿里云资深产品专家 今天来讲,在 Serverless 这个大领域中,不只有函数计算这一种产品形态和应用类型,而是面向不同的用户群体和使用习惯,都有其各自适用的 Serverless ...
- 从零入门 Serverless | 函数计算的可观测性
作者 | 夏莞 阿里巴巴函数计算团队 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 S ...
- 从零入门 Serverless | 一文搞懂函数计算及其工作原理
作者 | 孔德慧(夏莞) 阿里云函数计算开发工程师 什么是函数计算 大家都了解,Serverless 并不是没有服务器,而是开发者不再需要关心服务器.下图是一个应用从开发到上线的对比图: 在传统 Se ...
- 从零入门 Serverless | 函数计算如何粘合云服务,提供端到端解决方案
作者 | 西流 阿里云技术专家 导读:阿里云 Serverless 产品函数计算可以作为粘合剂,串联其他云服务提供端到端解决方案,从而简化编程模型,快速实现最上层的业务目标. 传统单体应用的拆解 首先 ...
- 从零入门 Serverless | 函数计算的开发与配置
导读:在本篇文章中,"基本概念"部分主要对函数计算最核心的概念进行详细介绍,包括服务.函数.触发器.版本.别名以及相关的配置:"开发流程"部分介绍了基于函数计算 ...
- 从零入门 Serverless | 在线应用的 Serverless 实践
作者 | 唐慧芬(黛忻) 阿里云产品专家 导读:毫无疑问,Serverless 能够在效率和成本上给用户带来巨大收益.那具体到落地又应该怎么做呢?本文就给大家详细解读 Serverless 的落地实践 ...
- 从零入门 Serverless | Serverless Kubernetes 应用部署及扩缩容
作者 | 邓青琳(轻零) 阿里云技术专家 导读:本文分为三个部分,首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署,其次介绍 Serverless Kuberne ...
- 从零入门 Serverless | Knative 带来的极致 Serverless 体验
作者 | 冬岛 阿里巴巴高级技术专家 Serverless 公众号后台回复"knative",即可免费下载<Knative 云原生应用开发指南>电子书! 导读:Serv ...
随机推荐
- Java String.split()的特殊用法
1 //用多种字符分隔字符串 2 public class Main { 3 /* 4 * "(1,2),(2,4),(3,6),(4,7)"按[(),]分隔 5 * 空白(1,2 ...
- MySQL大数据迁移备份
MySQL迁移通常使用的有三种方法: 1.数据库直接导出,拷贝文件到新服务器,在新服务器上导入. 2.使用第三方迁移工具. 3.数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL ...
- Tolist案例(父子传参实现增删改)
1.Tolist案例(父子传参实现增删改) 目录结构 实现效果: App.jsx class App extends Component { // 状态在哪里, 操作状态的方法就在哪里 state = ...
- C# ThreadPool 分批处理数据,所有数据执行完再返回
这是一个调用翻译数据的功能,所有数据一次性提交会造成后台服务压力大,接口反应时间也长. 所以做了一个分批处理,等待所有批次的数据调用接口都返回后再执行下一步. 1 /// <summary> ...
- 20210807 Smooth,Six,Walker
考场 开题,感觉 T1 很像 dky 讲过的一道中北大学 ACM 题,T3 一看就是随机化,具体不知道怎么做. T1 sb 题,直接取当前最小的光滑数,把它乘一个质因子放入候选集.类似<蚯蚓&g ...
- k8s核心资源之Pod概念&入门使用讲解(三)
目录 1. k8s核心资源之Pod 1.1 什么是Pod? 1.2 Pod如何管理多个容器? 1.3 Pod网络 1.4 Pod存储 1.5 Pod工作方式 1.5.1 自主式Pod 1.5.2 控制 ...
- (8)java Spring Cloud+Spring boot+mybatis企业快速开发架构之SpringCloud-Spring Cloud Eureka是什么?
Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 做了二次封装,主要负责实现微服务架构中的服务治理功能. ...
- 通过mstsc复制粘贴失败需要重新启动RDP剪切板监视程序rdpclip.exe
先结束程序 再重新启动程序
- Mac上Markdown的使用
Markdown是什么,且听我快快道来. 20年前,我第一次接触互联网,当时还是用 28.8k的猫拨号. 我从一本<电脑报>附赠的光盘里,找到了 台湾版的"烘培机"(烘 ...
- PHP中非常好玩的Calendar扩展学习
为什么说这个 Calendar 扩展很好玩呢?因为你基本用不到它!这个扩展是一套关于日期历法的扩展,但是对于我们来说,它没有农历的相关操作,所以对于我们中国人来说这个扩展并没有什么实际的作用.不过这并 ...