一、概念
FaaS | 一种不需要关心部署细节的垂直 |
---|---|
自动化 | 无需人为干预,以一定周期定时发起的任务 |
静态页面 | 不需要动态数据刷新的单一html页面 |
二、典型用户
开发入门初学者/爱好者
姓名 | 守好嘉 |
---|---|
年龄 | 18 |
用户市场比例 | 30% |
用户重要性 | 较为重要 |
典型场景 | 刚刚学了一门新语言,想用它来干点什么? |
动机 | 初学编程,希望能做出一些应用的东西 |
困难 | 只会一些基本的语法,距离能有效果的应用很远 |
偏好 | 希望能得到一些正反馈 |
特点 | 没有钱,不大能接受付费,但是是很好的宣传者 |
非理工类学生/从业人员
姓名 | 支支 |
---|---|
年龄 | 22 |
用户市场比例 | 20% |
用户重要性 | 很重要 |
典型场景 | 使用FaaS平台简单部署一些静态页面或自动化任务 |
动机 | 会一点例如python之类的语言,有例如页面展示,自动化任务等需求 |
困难 | 没有动力和机会学习开发框架以及运维方法。 |
偏好 | 希望能尽可能简单地完成任务 |
特点 | 希望将类似平台作为生产力工具,占比较大而且有付费能力 |
理工类学生
姓名 | TD |
---|---|
年龄 | 20 |
用户市场比例 | 30% |
用户重要性 | 很重要 |
典型场景 | 使用FaaS平台完成一些开发任务 |
动机 | 熟练使用编程语言,经常遇到大作业、科研实习等开发任务 |
困难 | 突发性需求多,且需求持续时间短,需求之间需要各自配置一套环境 |
偏好 | 希望能将各需求的开发环境隔离,按使用对服务器付费 |
特点 | 开发的东西需要供别人使用,但使用范围很小一般不超过项目组成员 |
个人网站站长
姓名 | 瓯接 |
---|---|
年龄 | 30 |
用户市场比例 | 20% |
用户重要性 | 较为重要 |
典型场景 | 以FaaS平台作为个人网站的计算服务资源 |
动机 | 个人网站希望接入一些工具,而这些工具需要一定计算能力 |
困难 | 个人网站已经鲜有算力富余,如果扩容利用率并不大 |
偏好 | 希望找到一个便宜方便的计算平台 |
三、界面原型设计
3.1 注册界面
3.2 登录界面
3.3 函数概览界面
3.4 函数详情页面
3.5 日志查询界面
四、典型应用场景
典型应用场景1-个人开发尝试
守好嘉今年18岁了,高考结束后如愿进入北航信息类,以计算机学院为目标的TA最近在自学Python后端,希望能够先人一步,获得实战经验。
但是在了解到传统后端都需要服务器支撑后,守同学陷入了麻烦,TA并不清楚自己的数据库是否真的会投入使用,以及为此是否值得去购买24h不停运转的服务器,并且在了解到部署时的复杂工作和可能面临的配置问题后,守同学更希望能跳过这些复杂的准备工作,而是直接编写代码并验证。
幸运的是,守同学了解到了本平台。经过简单的注册登录,守同学直接进入了代码编写阶段,在终端输入学到的指令后,项目所需要的依赖也完成了自动注入,完美跳过了服务器的准备与配置工作,并且按使用计费,完全不用担心服务器闲置造成的资源浪费。
在快速写完一个简单的函数后,守同学又想到了一个问题,该怎么由前端发送请求触发呢?TA在函数触发器配置界面找到了答案,将触发形式设置成网络API请求触发,TA获得了一个由服务器自动分配的用于测试的API,可由前端轻松调用,快速的验证了自己的学习成果。
在体验到如此简单的操作流程后,守同学直接将本平台作为在线开发工具,陪伴自己走过整个后端入门学习计划。
典型应用场景2-邮件整理
支支是刚刚考研到北航马院的研一新生,目前大四下尚在努力准备毕设,同样在组里的几位新生是来自其他省份的跨考学生,鉴于大家时间难以错开安排,导师要求在目前这个工作并不是很急的情况下用邮件联系,这下支支不得不每天关注邮箱,但是邮箱每天总会收到各种其他邮件,平时不整理邮箱的TA犯了难。
支支是典型的文科生,并不擅长编程,只会简单的python,但是TA了解到了本平台后,有了一个有趣的想法。支支从网上找到了如何使用python读取解析邮件内容并将题目收件人保存到指定文件的方法,在把其copy到本平台新创建的函数后,选择触发形式为每日定时触发,完成了一个定期自动任务的创建,这样每天的邮件都可以被自动整理了,每天晚上只需要看当日的总结即可了解到是否有有用的邮件。
典型应用场景3-论文摘要
最近ChatGPT的大火提起了TD同学对NLP的浓厚兴趣,于是TD同学选择找一位研究NLP方向的导师做项目,导师很高兴能有人坚持学习NLP,于是分配他到一个简单的任务组——提取论文的摘要。TD在研究了几个深度学习模型后,修改并训练了自己的第一个NLP模型。
TD找到了本平台并将自己的模型布置在了一个独立的函数服务中,将函数设置为http请求触发,每次直接将本地的论文POST上传至平台,自动触发模型解析流程。最重要的是,需要使用该处理结果的另一个组可以随时调用接口,TD真正感受到部署服务并被人使用的快乐。
然而TD的导师并不满意,认为应当比较多个模型,而这些现有的模型居然连基本依赖包的版本都互不相同!TD考虑到本平台各函数服务的环境之间独立封装,互不干扰,因此干脆直接将需要比较的多个模型分别部署在不同的http函数服务中,供随时调用。
尽管完成了导师布置的任务,但TD认为自己的http服务尚有提升空间。TA在研究过程中发现有的模型提取英文论文摘要准确率更高,而有的模型提取中文论文准确率更高。不想调参重新训练的TD,决定再写一个http函数,作为任何论文的统一输入接口,先判断论文语言,传给指定模型,即已部署接口的互相调用,优化了自己的服务。
典型应用场景4-PDF OCR服务
瓯接是个IT个体户,运营着自己的网站,尽管对个人建站流程非常熟悉,但是人总要吃饭,服务器资源总是有限,TA总是需要盯着服务器的使用情况,来调整自己提供的服务,疲于管理工作的瓯接了解到了本平台。
瓯接先是将自己提取pdf转文本的服务迁移到了本平台,该服务为瓯接带来了不小的收益,目标群体也非常明确,就是当代大学生,但是学生们喜欢期末赶ddl导致瓯接的服务器在平常几乎没有该任务需求,而期末往往直接需求飙升。有了平台弹性的资源调度,瓯接不再需要担心费用问题,并且可以使用函数日志与监控数据功能来实现监控与分析。
感受到实际收益后,瓯接决定将个人网站中涉及计算等对算力需要动态调整的功能,全部打包成单独的服务函数,迁移到了本平台中,使本平台成为其计算服务提供与管理平台,极大节省了原本的开销。
五、副作用分析
- 一个在线的函数部署平台,可能遭到黑灰产的非法使用,所以对于对外的函数我们需要用户显式给出出入参定义,不允许出入参声明外的数据通过,便于对于函数的探查
- 用户可能会担忧隐私滥用、后门等问题,为此我们会开源项目代码。
六、项目相关数据收集
在运行过程中,我们需要采集以下数据
- 用户数量
- 用户登录情况(日活)
- 用户创建函数数目
- 用户函数每日调用量(日活)
七、目标达成
7.1 软件所需要实现的功能
- 实现用户信息管理、包括注册、邮件验证、登录等功能的实现
- 实现用户通过编写函数,部署http服务或定时任务的的功能
- 实现用户对其部署的服务的调用次数、失败次数、延时等统计量的查看
- 实现用户对其部署服务的日志查询
- 实现对用户函数的资源占用量的查看与费用计算功能
7.2 软件需要达到的用户量与数据积累
本软件希望达到50+的用户数量,以及平均每个用户3个函数的部署量
同时达成用户函数执行+登录达到日均20次以上